{
  "name": "OAuth",
  "description": "",
  "version": "4.0.0-M5",
  "vendor": "Mulesoft",
  "category": "COMMUNITY",
  "minMuleVersion": "4.0.0",
  "xmlDsl": {
    "namespace": "oauth",
    "namespaceUri": "http://www.mulesoft.org/schema/mule/oauth",
    "schemaLocation": "http://www.mulesoft.org/schema/mule/oauth/current/mule-oauth.xsd",
    "schemaVersion": "4.0.0-M5",
    "xsdFileName": "mule-oauth.xsd"
  },
  "resources": [],
  "subTypes": [
    {
      "baseType": {
        "format": "java",
        "type": "Object",
        "annotations": {
          "typeId": "org.mule.extension.http.api.request.authentication.HttpAuthentication",
          "classInformation": {
            "hasDefaultConstructor": false,
            "isInterface": true,
            "isInstantiable": false,
            "isAbstract": true,
            "isFinal": false,
            "implementedInterfaces": [],
            "parent": "",
            "genericTypes": []
          },
          "typeAlias": {
            "value": "HttpAuthentication"
          }
        },
        "fields": []
      },
      "subTypes": [
        {
          "format": "java",
          "type": "@ref:org.mule.extension.oauth2.internal.authorizationcode.DefaultAuthorizationCodeGrantType"
        },
        {
          "format": "java",
          "type": "@ref:org.mule.extension.oauth2.internal.clientcredentials.ClientCredentialsGrantType"
        }
      ]
    }
  ],
  "externalLibraries": [],
  "importedTypes": [
    {
      "type": {
        "format": "java",
        "type": "Object",
        "annotations": {
          "typeId": "org.mule.extension.http.api.request.authentication.HttpAuthentication",
          "classInformation": {
            "hasDefaultConstructor": false,
            "isInterface": true,
            "isInstantiable": false,
            "isAbstract": true,
            "isFinal": false,
            "implementedInterfaces": [],
            "parent": "",
            "genericTypes": []
          },
          "typeAlias": {
            "value": "HttpAuthentication"
          }
        },
        "fields": []
      },
      "extension": "HTTP"
    }
  ],
  "configurations": [
    {
      "parameterGroupModels": [],
      "externalLibraryModels": [],
      "operations": [],
      "connectionProviders": [],
      "messageSources": [],
      "name": "config",
      "description": "An extension to hook oauth2 to http extension connectors.",
      "modelProperties": {}
    }
  ],
  "operations": [
    {
      "blocking": true,
      "executionType": "CPU_LITE",
      "errors": [],
      "output": {
        "type": {
          "format": "java",
          "type": "Void"
        },
        "hasDynamicType": false,
        "description": "",
        "modelProperties": {}
      },
      "outputAttributes": {
        "type": {
          "format": "java",
          "type": "Void"
        },
        "hasDynamicType": false,
        "description": "",
        "modelProperties": {}
      },
      "transactional": false,
      "requiresConnection": false,
      "parameterGroupModels": [
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "@ref:org.mule.extension.oauth2.internal.tokenmanager.TokenManagerConfig"
              },
              "hasDynamicType": false,
              "required": true,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1
              },
              "name": "tokenManager",
              "description": "The token manager which holds the credentials to invalidate.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "java.lang.String"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "default",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 2
              },
              "name": "resourceOwnerId",
              "description": "The resource owner id to invalidate. This attribute is only allowed for authorization code grant type.",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "showInDsl": false,
          "name": "General",
          "description": "",
          "modelProperties": {}
        }
      ],
      "name": "invalidateOauthContext",
      "description": "Clears the oauth context for a token manager and a resource owner id.",
      "modelProperties": {}
    }
  ],
  "connectionProviders": [],
  "messageSources": [],
  "errors": [
    {
      "type": "CONNECTIVITY",
      "namespace": "MULE",
      "parent": {
        "type": "ANY",
        "namespace": "MULE"
      }
    },
    {
      "type": "SECURITY",
      "namespace": "MULE",
      "parent": {
        "type": "ANY",
        "namespace": "MULE"
      }
    },
    {
      "type": "CONNECTIVITY",
      "namespace": "OAUTH",
      "parent": {
        "type": "CONNECTIVITY",
        "namespace": "MULE",
        "parent": {
          "type": "ANY",
          "namespace": "MULE"
        }
      }
    },
    {
      "type": "ANY",
      "namespace": "MULE"
    },
    {
      "type": "RETRY_EXHAUSTED",
      "namespace": "MULE",
      "parent": {
        "type": "ANY",
        "namespace": "MULE"
      }
    },
    {
      "type": "OAUTH_ERROR",
      "namespace": "OAUTH",
      "parent": {
        "type": "SECURITY",
        "namespace": "MULE",
        "parent": {
          "type": "ANY",
          "namespace": "MULE"
        }
      }
    },
    {
      "type": "RETRY_EXHAUSTED",
      "namespace": "OAUTH",
      "parent": {
        "type": "RETRY_EXHAUSTED",
        "namespace": "MULE",
        "parent": {
          "type": "ANY",
          "namespace": "MULE"
        }
      }
    },
    {
      "type": "TOKEN_NOT_FOUND",
      "namespace": "OAUTH",
      "parent": {
        "type": "OAUTH_ERROR",
        "namespace": "OAUTH",
        "parent": {
          "type": "SECURITY",
          "namespace": "MULE",
          "parent": {
            "type": "ANY",
            "namespace": "MULE"
          }
        }
      }
    },
    {
      "type": "TOKEN_URL_FAIL",
      "namespace": "OAUTH",
      "parent": {
        "type": "OAUTH_ERROR",
        "namespace": "OAUTH",
        "parent": {
          "type": "SECURITY",
          "namespace": "MULE",
          "parent": {
            "type": "ANY",
            "namespace": "MULE"
          }
        }
      }
    }
  ],
  "modelProperties": {},
  "types": [
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "org.mule.extension.oauth2.internal.tokenmanager.TokenManagerConfig",
        "classInformation": {
          "hasDefaultConstructor": true,
          "isInterface": false,
          "isInstantiable": true,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [
            "org.mule.runtime.api.lifecycle.Initialisable",
            "org.mule.runtime.core.api.context.MuleContextAware"
          ],
          "parent": "",
          "genericTypes": []
        },
        "xmlHints": {
          "allowInlineDefinition": true,
          "allowTopLevelDefinition": true,
          "allowReferences": true
        },
        "typeAlias": {
          "value": "token-manager-config"
        }
      },
      "fields": [
        {
          "key": {
            "name": "objectStore"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "typeId": "org.mule.runtime.core.api.store.ListableObjectStore",
              "classInformation": {
                "hasDefaultConstructor": false,
                "isInterface": true,
                "isInstantiable": false,
                "isAbstract": true,
                "isFinal": false,
                "implementedInterfaces": [
                  "org.mule.runtime.core.api.store.ObjectStore"
                ],
                "parent": "",
                "genericTypes": [
                  "org.mule.extension.oauth2.internal.authorizationcode.state.ResourceOwnerOAuthContext"
                ]
              },
              "typeAlias": {
                "value": "ListableObjectStore"
              }
            },
            "fields": []
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        }
      ]
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "org.mule.extension.oauth2.internal.authorizationcode.state.ResourceOwnerOAuthContext",
        "classInformation": {
          "hasDefaultConstructor": false,
          "isInterface": false,
          "isInstantiable": false,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [
            "java.io.Serializable"
          ],
          "parent": "",
          "genericTypes": []
        },
        "typeAlias": {
          "value": "ResourceOwnerOAuthContext"
        }
      },
      "fields": [
        {
          "key": {
            "name": "accessToken"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "java.lang.String"
            }
          }
        },
        {
          "key": {
            "name": "expiresIn"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "java.lang.String"
            }
          }
        },
        {
          "key": {
            "name": "refreshToken"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "java.lang.String"
            }
          }
        },
        {
          "key": {
            "name": "refreshUserOAuthContextLock"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "typeId": "java.util.concurrent.locks.Lock",
              "classInformation": {
                "hasDefaultConstructor": false,
                "isInterface": true,
                "isInstantiable": false,
                "isAbstract": true,
                "isFinal": false,
                "implementedInterfaces": [],
                "parent": "",
                "genericTypes": []
              },
              "typeAlias": {
                "value": "Lock"
              }
            },
            "fields": []
          }
        },
        {
          "key": {
            "name": "resourceOwnerId"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "java.lang.String"
            }
          },
          "annotations": {
            "visibility": "READ_ONLY"
          }
        },
        {
          "key": {
            "name": "state"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "java.lang.String"
            }
          }
        },
        {
          "key": {
            "name": "tokenResponseParameters"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "typeId": "java.util.Map",
              "classInformation": {
                "hasDefaultConstructor": false,
                "isInterface": true,
                "isInstantiable": false,
                "isAbstract": true,
                "isFinal": false,
                "implementedInterfaces": [],
                "parent": "",
                "genericTypes": [
                  "java.lang.String",
                  "java.lang.Object"
                ]
              }
            },
            "open": {
              "type": "Object",
              "annotations": {
                "typeId": "java.lang.Object",
                "classInformation": {
                  "hasDefaultConstructor": true,
                  "isInterface": false,
                  "isInstantiable": true,
                  "isAbstract": false,
                  "isFinal": false,
                  "implementedInterfaces": [],
                  "parent": "",
                  "genericTypes": []
                },
                "typeAlias": {
                  "value": "Object"
                }
              },
              "fields": []
            },
            "fields": []
          }
        }
      ]
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "org.mule.extension.oauth2.api.exception.TokenNotFoundException",
        "classInformation": {
          "hasDefaultConstructor": false,
          "isInterface": false,
          "isInstantiable": false,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [],
          "parent": "org.mule.runtime.extension.api.exception.ModuleException",
          "genericTypes": []
        },
        "typeAlias": {
          "value": "TokenNotFoundException"
        }
      },
      "fields": [
        {
          "key": {
            "name": "cause"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "typeId": "java.lang.Throwable",
              "classInformation": {
                "hasDefaultConstructor": true,
                "isInterface": false,
                "isInstantiable": true,
                "isAbstract": false,
                "isFinal": false,
                "implementedInterfaces": [
                  "java.io.Serializable"
                ],
                "parent": "",
                "genericTypes": []
              },
              "typeAlias": {
                "value": "Throwable"
              }
            },
            "fields": [
              {
                "key": {
                  "name": "cause"
                },
                "model": "#..",
                "annotations": {
                  "visibility": "READ_ONLY"
                }
              },
              {
                "key": {
                  "name": "localizedMessage"
                },
                "model": {
                  "type": "String",
                  "annotations": {
                    "typeId": "java.lang.String"
                  }
                },
                "annotations": {
                  "visibility": "READ_ONLY"
                }
              },
              {
                "key": {
                  "name": "message"
                },
                "model": {
                  "type": "String",
                  "annotations": {
                    "typeId": "java.lang.String"
                  }
                },
                "annotations": {
                  "visibility": "READ_ONLY"
                }
              },
              {
                "key": {
                  "name": "stackTrace"
                },
                "model": {
                  "type": "Array",
                  "annotations": {
                    "typeId": "java.lang.StackTraceElement[]"
                  },
                  "item": {
                    "type": "Object",
                    "annotations": {
                      "typeId": "java.lang.StackTraceElement",
                      "classInformation": {
                        "hasDefaultConstructor": false,
                        "isInterface": false,
                        "isInstantiable": false,
                        "isAbstract": false,
                        "isFinal": true,
                        "implementedInterfaces": [
                          "java.io.Serializable"
                        ],
                        "parent": "",
                        "genericTypes": []
                      },
                      "typeAlias": {
                        "value": "StackTraceElement"
                      }
                    },
                    "fields": [
                      {
                        "key": {
                          "name": "className"
                        },
                        "model": {
                          "type": "String",
                          "annotations": {
                            "typeId": "java.lang.String"
                          }
                        },
                        "annotations": {
                          "visibility": "READ_ONLY"
                        }
                      },
                      {
                        "key": {
                          "name": "fileName"
                        },
                        "model": {
                          "type": "String",
                          "annotations": {
                            "typeId": "java.lang.String"
                          }
                        },
                        "annotations": {
                          "visibility": "READ_ONLY"
                        }
                      },
                      {
                        "key": {
                          "name": "lineNumber"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "int": {},
                            "typeId": "int"
                          }
                        },
                        "annotations": {
                          "visibility": "READ_ONLY"
                        }
                      },
                      {
                        "key": {
                          "name": "methodName"
                        },
                        "model": {
                          "type": "String",
                          "annotations": {
                            "typeId": "java.lang.String"
                          }
                        },
                        "annotations": {
                          "visibility": "READ_ONLY"
                        }
                      },
                      {
                        "key": {
                          "name": "nativeMethod"
                        },
                        "model": {
                          "type": "Boolean",
                          "annotations": {
                            "typeId": "boolean"
                          }
                        },
                        "annotations": {
                          "visibility": "READ_ONLY"
                        }
                      }
                    ]
                  }
                }
              },
              {
                "key": {
                  "name": "suppressed"
                },
                "model": {
                  "type": "Array",
                  "annotations": {
                    "typeId": "java.lang.Throwable[]"
                  },
                  "item": "#../.."
                },
                "annotations": {
                  "visibility": "READ_ONLY"
                }
              }
            ]
          },
          "annotations": {
            "visibility": "READ_ONLY"
          }
        },
        {
          "key": {
            "name": "localizedMessage"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "java.lang.String"
            }
          },
          "annotations": {
            "visibility": "READ_ONLY"
          }
        },
        {
          "key": {
            "name": "message"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "java.lang.String"
            }
          },
          "annotations": {
            "visibility": "READ_ONLY"
          }
        },
        {
          "key": {
            "name": "stackTrace"
          },
          "model": {
            "type": "Array",
            "annotations": {
              "typeId": "java.lang.StackTraceElement[]"
            },
            "item": {
              "type": "Object",
              "annotations": {
                "typeId": "java.lang.StackTraceElement",
                "classInformation": {
                  "hasDefaultConstructor": false,
                  "isInterface": false,
                  "isInstantiable": false,
                  "isAbstract": false,
                  "isFinal": true,
                  "implementedInterfaces": [
                    "java.io.Serializable"
                  ],
                  "parent": "",
                  "genericTypes": []
                },
                "typeAlias": {
                  "value": "StackTraceElement"
                }
              },
              "fields": [
                {
                  "key": {
                    "name": "className"
                  },
                  "model": {
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "annotations": {
                    "visibility": "READ_ONLY"
                  }
                },
                {
                  "key": {
                    "name": "fileName"
                  },
                  "model": {
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "annotations": {
                    "visibility": "READ_ONLY"
                  }
                },
                {
                  "key": {
                    "name": "lineNumber"
                  },
                  "model": {
                    "type": "Number",
                    "annotations": {
                      "int": {},
                      "typeId": "int"
                    }
                  },
                  "annotations": {
                    "visibility": "READ_ONLY"
                  }
                },
                {
                  "key": {
                    "name": "methodName"
                  },
                  "model": {
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "annotations": {
                    "visibility": "READ_ONLY"
                  }
                },
                {
                  "key": {
                    "name": "nativeMethod"
                  },
                  "model": {
                    "type": "Boolean",
                    "annotations": {
                      "typeId": "boolean"
                    }
                  },
                  "annotations": {
                    "visibility": "READ_ONLY"
                  }
                }
              ]
            }
          }
        },
        {
          "key": {
            "name": "suppressed"
          },
          "model": {
            "type": "Array",
            "annotations": {
              "typeId": "java.lang.Throwable[]"
            },
            "item": {
              "type": "Object",
              "annotations": {
                "typeId": "java.lang.Throwable",
                "classInformation": {
                  "hasDefaultConstructor": true,
                  "isInterface": false,
                  "isInstantiable": true,
                  "isAbstract": false,
                  "isFinal": false,
                  "implementedInterfaces": [
                    "java.io.Serializable"
                  ],
                  "parent": "",
                  "genericTypes": []
                },
                "typeAlias": {
                  "value": "Throwable"
                }
              },
              "fields": [
                {
                  "key": {
                    "name": "cause"
                  },
                  "model": "#..",
                  "annotations": {
                    "visibility": "READ_ONLY"
                  }
                },
                {
                  "key": {
                    "name": "localizedMessage"
                  },
                  "model": {
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "annotations": {
                    "visibility": "READ_ONLY"
                  }
                },
                {
                  "key": {
                    "name": "message"
                  },
                  "model": {
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "annotations": {
                    "visibility": "READ_ONLY"
                  }
                },
                {
                  "key": {
                    "name": "stackTrace"
                  },
                  "model": {
                    "type": "Array",
                    "annotations": {
                      "typeId": "java.lang.StackTraceElement[]"
                    },
                    "item": {
                      "type": "Object",
                      "annotations": {
                        "typeId": "java.lang.StackTraceElement",
                        "classInformation": {
                          "hasDefaultConstructor": false,
                          "isInterface": false,
                          "isInstantiable": false,
                          "isAbstract": false,
                          "isFinal": true,
                          "implementedInterfaces": [
                            "java.io.Serializable"
                          ],
                          "parent": "",
                          "genericTypes": []
                        },
                        "typeAlias": {
                          "value": "StackTraceElement"
                        }
                      },
                      "fields": [
                        {
                          "key": {
                            "name": "className"
                          },
                          "model": {
                            "type": "String",
                            "annotations": {
                              "typeId": "java.lang.String"
                            }
                          },
                          "annotations": {
                            "visibility": "READ_ONLY"
                          }
                        },
                        {
                          "key": {
                            "name": "fileName"
                          },
                          "model": {
                            "type": "String",
                            "annotations": {
                              "typeId": "java.lang.String"
                            }
                          },
                          "annotations": {
                            "visibility": "READ_ONLY"
                          }
                        },
                        {
                          "key": {
                            "name": "lineNumber"
                          },
                          "model": {
                            "type": "Number",
                            "annotations": {
                              "int": {},
                              "typeId": "int"
                            }
                          },
                          "annotations": {
                            "visibility": "READ_ONLY"
                          }
                        },
                        {
                          "key": {
                            "name": "methodName"
                          },
                          "model": {
                            "type": "String",
                            "annotations": {
                              "typeId": "java.lang.String"
                            }
                          },
                          "annotations": {
                            "visibility": "READ_ONLY"
                          }
                        },
                        {
                          "key": {
                            "name": "nativeMethod"
                          },
                          "model": {
                            "type": "Boolean",
                            "annotations": {
                              "typeId": "boolean"
                            }
                          },
                          "annotations": {
                            "visibility": "READ_ONLY"
                          }
                        }
                      ]
                    }
                  }
                },
                {
                  "key": {
                    "name": "suppressed"
                  },
                  "model": "#../..",
                  "annotations": {
                    "visibility": "READ_ONLY"
                  }
                }
              ]
            }
          },
          "annotations": {
            "visibility": "READ_ONLY"
          }
        },
        {
          "key": {
            "name": "type"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "typeId": "org.mule.runtime.extension.api.error.ErrorTypeDefinition",
              "classInformation": {
                "hasDefaultConstructor": false,
                "isInterface": true,
                "isInstantiable": false,
                "isAbstract": true,
                "isFinal": false,
                "implementedInterfaces": [],
                "parent": "",
                "genericTypes": []
              },
              "typeAlias": {
                "value": "ErrorTypeDefinition"
              }
            },
            "fields": []
          },
          "annotations": {
            "visibility": "READ_ONLY"
          }
        }
      ]
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "org.mule.extension.oauth2.internal.authorizationcode.DefaultAuthorizationCodeGrantType",
        "classInformation": {
          "hasDefaultConstructor": true,
          "isInterface": false,
          "isInstantiable": true,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [
            "org.mule.runtime.api.lifecycle.Lifecycle",
            "org.mule.extension.oauth2.internal.authorizationcode.AuthorizationCodeGrantType"
          ],
          "parent": "org.mule.extension.oauth2.internal.AbstractGrantType",
          "genericTypes": []
        },
        "typeAlias": {
          "value": "authorization-code-grant-type"
        }
      },
      "fields": [
        {
          "key": {
            "name": "clientId"
          },
          "model": {
            "required": "true",
            "type": "String",
            "annotations": {
              "typeId": "java.lang.String"
            }
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "clientSecret"
          },
          "model": {
            "required": "true",
            "type": "String",
            "annotations": {
              "typeId": "java.lang.String"
            }
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "localCallbackConfigPath"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "java.lang.String"
            }
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "localCallbackUrl"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "java.lang.String"
            }
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "externalCallbackUrl"
          },
          "model": {
            "required": "true",
            "type": "String",
            "annotations": {
              "typeId": "java.lang.String"
            }
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "authorizationRequestHandler"
          },
          "model": {
            "required": "true",
            "type": "Object",
            "annotations": {
              "typeId": "org.mule.extension.oauth2.internal.authorizationcode.AuthorizationRequestHandler",
              "classInformation": {
                "hasDefaultConstructor": true,
                "isInterface": false,
                "isInstantiable": true,
                "isAbstract": false,
                "isFinal": false,
                "implementedInterfaces": [
                  "org.mule.runtime.core.api.context.MuleContextAware",
                  "org.mule.runtime.api.lifecycle.Startable",
                  "org.mule.runtime.api.lifecycle.Stoppable"
                ],
                "parent": "",
                "genericTypes": []
              },
              "typeAlias": {
                "value": "AuthorizationRequestHandler"
              }
            },
            "fields": [
              {
                "key": {
                  "name": "scopes"
                },
                "model": {
                  "type": "String",
                  "annotations": {
                    "typeId": "java.lang.String"
                  }
                },
                "annotations": {
                  "parameterPurpose": {
                    "role": "BEHAVIOUR"
                  },
                  "expressionSupport": {
                    "value": "SUPPORTED"
                  }
                }
              },
              {
                "key": {
                  "name": "state"
                },
                "model": {
                  "type": "String",
                  "annotations": {
                    "typeId": "java.lang.String",
                    "org.mule.runtime.extension.api.declaration.type.annotation.ParameterResolverTypeAnnotation": {}
                  }
                },
                "annotations": {
                  "parameterPurpose": {
                    "role": "BEHAVIOUR"
                  },
                  "expressionSupport": {
                    "value": "SUPPORTED"
                  }
                }
              },
              {
                "key": {
                  "name": "localAuthorizationUrlResourceOwnerId"
                },
                "model": {
                  "type": "String",
                  "annotations": {
                    "typeId": "java.lang.String",
                    "org.mule.runtime.extension.api.declaration.type.annotation.ParameterResolverTypeAnnotation": {}
                  }
                },
                "annotations": {
                  "parameterPurpose": {
                    "role": "BEHAVIOUR"
                  },
                  "expressionSupport": {
                    "value": "SUPPORTED"
                  }
                }
              },
              {
                "key": {
                  "name": "localAuthorizationUrl"
                },
                "model": {
                  "required": "true",
                  "type": "String",
                  "annotations": {
                    "typeId": "java.lang.String"
                  }
                },
                "annotations": {
                  "parameterPurpose": {
                    "role": "BEHAVIOUR"
                  },
                  "expressionSupport": {
                    "value": "SUPPORTED"
                  }
                }
              },
              {
                "key": {
                  "name": "authorizationUrl"
                },
                "model": {
                  "required": "true",
                  "type": "String",
                  "annotations": {
                    "typeId": "java.lang.String"
                  }
                },
                "annotations": {
                  "parameterPurpose": {
                    "role": "BEHAVIOUR"
                  },
                  "expressionSupport": {
                    "value": "SUPPORTED"
                  }
                }
              },
              {
                "key": {
                  "name": "custom-parameters"
                },
                "model": {
                  "type": "Object",
                  "annotations": {
                    "typeId": "java.util.Map",
                    "classInformation": {
                      "hasDefaultConstructor": false,
                      "isInterface": true,
                      "isInstantiable": false,
                      "isAbstract": true,
                      "isFinal": false,
                      "implementedInterfaces": [],
                      "parent": "",
                      "genericTypes": [
                        "java.lang.String",
                        "java.lang.String"
                      ]
                    }
                  },
                  "open": {
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "fields": []
                },
                "annotations": {
                  "parameterPurpose": {
                    "role": "BEHAVIOUR"
                  },
                  "expressionSupport": {
                    "value": "SUPPORTED"
                  }
                }
              }
            ]
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "flattened": {},
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "tokenRequestHandler"
          },
          "model": {
            "required": "true",
            "type": "Object",
            "annotations": {
              "typeId": "org.mule.extension.oauth2.internal.authorizationcode.AutoAuthorizationCodeTokenRequestHandler",
              "classInformation": {
                "hasDefaultConstructor": true,
                "isInterface": false,
                "isInstantiable": true,
                "isAbstract": false,
                "isFinal": false,
                "implementedInterfaces": [],
                "parent": "org.mule.extension.oauth2.internal.authorizationcode.AbstractAuthorizationCodeTokenRequestHandler",
                "genericTypes": []
              },
              "typeAlias": {
                "value": "AutoAuthorizationCodeTokenRequestHandler"
              }
            },
            "fields": [
              {
                "key": {
                  "name": "responseAccessToken"
                },
                "model": {
                  "type": "String",
                  "annotations": {
                    "typeId": "java.lang.String",
                    "org.mule.runtime.extension.api.declaration.type.annotation.ParameterResolverTypeAnnotation": {}
                  }
                },
                "annotations": {
                  "parameterPurpose": {
                    "role": "BEHAVIOUR"
                  },
                  "default": "#[(payload match /.*\"access_token\"[ ]*:[ ]*\"([^\\\"]*)\".*/)[1]]",
                  "expressionSupport": {
                    "value": "SUPPORTED"
                  }
                }
              },
              {
                "key": {
                  "name": "responseRefreshToken"
                },
                "model": {
                  "type": "String",
                  "annotations": {
                    "typeId": "java.lang.String",
                    "org.mule.runtime.extension.api.declaration.type.annotation.ParameterResolverTypeAnnotation": {}
                  }
                },
                "annotations": {
                  "parameterPurpose": {
                    "role": "BEHAVIOUR"
                  },
                  "default": "#[(payload match /.*\"refresh_token\"[ ]*:[ ]*\"([^\\\"]*)\".*/)[1]]",
                  "expressionSupport": {
                    "value": "SUPPORTED"
                  }
                }
              },
              {
                "key": {
                  "name": "responseExpiresIn"
                },
                "model": {
                  "type": "String",
                  "annotations": {
                    "typeId": "java.lang.String",
                    "org.mule.runtime.extension.api.declaration.type.annotation.ParameterResolverTypeAnnotation": {}
                  }
                },
                "annotations": {
                  "parameterPurpose": {
                    "role": "BEHAVIOUR"
                  },
                  "default": "#[(payload match /.*\"expires_in\"[ ]*:[ ]*\"([^\\\"]*)\".*/)[1]]",
                  "expressionSupport": {
                    "value": "SUPPORTED"
                  }
                }
              },
              {
                "key": {
                  "name": "custom-parameter-extractors"
                },
                "model": {
                  "type": "Array",
                  "annotations": {
                    "typeId": "java.util.List"
                  },
                  "item": {
                    "type": "Object",
                    "annotations": {
                      "typeId": "org.mule.extension.oauth2.internal.ParameterExtractor",
                      "classInformation": {
                        "hasDefaultConstructor": true,
                        "isInterface": false,
                        "isInstantiable": true,
                        "isAbstract": false,
                        "isFinal": false,
                        "implementedInterfaces": [],
                        "parent": "",
                        "genericTypes": []
                      },
                      "typeAlias": {
                        "value": "ParameterExtractor"
                      }
                    },
                    "fields": [
                      {
                        "key": {
                          "name": "paramName"
                        },
                        "model": {
                          "required": "true",
                          "type": "String",
                          "annotations": {
                            "typeId": "java.lang.String"
                          }
                        },
                        "annotations": {
                          "parameterPurpose": {
                            "role": "BEHAVIOUR"
                          },
                          "expressionSupport": {
                            "value": "SUPPORTED"
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "value"
                        },
                        "model": {
                          "required": "true",
                          "type": "String",
                          "annotations": {
                            "typeId": "java.lang.String",
                            "org.mule.runtime.extension.api.declaration.type.annotation.ParameterResolverTypeAnnotation": {}
                          }
                        },
                        "annotations": {
                          "parameterPurpose": {
                            "role": "BEHAVIOUR"
                          },
                          "expressionSupport": {
                            "value": "SUPPORTED"
                          }
                        }
                      }
                    ]
                  }
                },
                "annotations": {
                  "parameterPurpose": {
                    "role": "BEHAVIOUR"
                  },
                  "expressionSupport": {
                    "value": "SUPPORTED"
                  }
                }
              },
              {
                "key": {
                  "name": "refreshTokenWhen"
                },
                "model": {
                  "type": "Boolean",
                  "annotations": {
                    "typeId": "java.lang.Boolean",
                    "org.mule.runtime.extension.api.declaration.type.annotation.ParameterResolverTypeAnnotation": {}
                  }
                },
                "annotations": {
                  "parameterPurpose": {
                    "role": "BEHAVIOUR"
                  },
                  "default": "#[attributes.statusCode \u003d\u003d 401 or attributes.statusCode \u003d\u003d 403]",
                  "expressionSupport": {
                    "value": "SUPPORTED"
                  }
                }
              },
              {
                "key": {
                  "name": "tokenUrl"
                },
                "model": {
                  "required": "true",
                  "type": "String",
                  "annotations": {
                    "typeId": "java.lang.String"
                  }
                },
                "annotations": {
                  "parameterPurpose": {
                    "role": "BEHAVIOUR"
                  },
                  "expressionSupport": {
                    "value": "SUPPORTED"
                  }
                }
              }
            ]
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "flattened": {},
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "tlsContextFactory"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "typeId": "org.mule.runtime.api.tls.TlsContextFactory",
              "typeAlias": {
                "value": "Tls"
              }
            },
            "fields": [
              {
                "key": {
                  "name": "enabledProtocols"
                },
                "model": {
                  "type": "String",
                  "annotations": {
                    "typeId": "java.lang.String"
                  }
                },
                "annotations": {
                  "description": {
                    "value": "A comma separated list of protocols enabled for this context."
                  }
                }
              },
              {
                "key": {
                  "name": "enabledCipherSuites"
                },
                "model": {
                  "type": "String",
                  "annotations": {
                    "typeId": "java.lang.String"
                  }
                },
                "annotations": {
                  "description": {
                    "value": "A comma separated list of cipher suites enabled for this context."
                  }
                }
              },
              {
                "key": {
                  "name": "trust-store"
                },
                "model": {
                  "type": "Object",
                  "annotations": {
                    "typeId": "java.lang.Object",
                    "typeAlias": {
                      "value": "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": {
                          "typeId": "java.lang.String"
                        }
                      },
                      "annotations": {
                        "description": {
                          "value": "The location (which will be resolved relative to the current classpath and file system, if possible) of the trust store."
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "password"
                      },
                      "model": {
                        "type": "String",
                        "annotations": {
                          "typeId": "java.lang.String"
                        }
                      },
                      "annotations": {
                        "description": {
                          "value": "The password used to protect the trust store."
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "type"
                      },
                      "model": {
                        "type": "Union",
                        "of": [
                          {
                            "type": "String",
                            "annotations": {
                              "typeId": "java.lang.String",
                              "enum": {
                                "type": "[Ljava.lang.String;",
                                "values": [
                                  "jks",
                                  "jceks",
                                  "pkcs12"
                                ]
                              }
                            }
                          },
                          {
                            "type": "String"
                          }
                        ]
                      },
                      "annotations": {
                        "description": {
                          "value": "The type of store used."
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "algorithm"
                      },
                      "model": {
                        "type": "String",
                        "annotations": {
                          "typeId": "java.lang.String"
                        }
                      },
                      "annotations": {
                        "description": {
                          "value": "The algorithm used by the trust store."
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "insecure"
                      },
                      "model": {
                        "type": "Boolean",
                        "annotations": {
                          "typeId": "java.lang.Boolean",
                          "default": "false"
                        }
                      },
                      "annotations": {
                        "description": {
                          "value": "If true, no certificate validations will be performed."
                        }
                      }
                    }
                  ]
                }
              },
              {
                "key": {
                  "name": "key-store"
                },
                "model": {
                  "type": "Object",
                  "annotations": {
                    "typeId": "java.lang.Object",
                    "typeAlias": {
                      "value": "KeyStore"
                    },
                    "description": {
                      "value": "Key store configuration. The key store contains the keys of this server/client."
                    }
                  },
                  "fields": [
                    {
                      "key": {
                        "name": "path"
                      },
                      "model": {
                        "type": "String",
                        "annotations": {
                          "typeId": "java.lang.String"
                        }
                      },
                      "annotations": {
                        "description": {
                          "value": "The location (which will be resolved relative to the current classpath and file system, if possible) of the key store."
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "type"
                      },
                      "model": {
                        "type": "Union",
                        "of": [
                          {
                            "type": "String",
                            "annotations": {
                              "typeId": "java.lang.String",
                              "enum": {
                                "type": "[Ljava.lang.String;",
                                "values": [
                                  "jks",
                                  "jceks",
                                  "pkcs12"
                                ]
                              }
                            }
                          },
                          {
                            "type": "String"
                          }
                        ]
                      },
                      "annotations": {
                        "description": {
                          "value": "The type of store used."
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "alias"
                      },
                      "model": {
                        "type": "String",
                        "annotations": {
                          "typeId": "java.lang.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": {
                          "typeId": "java.lang.String"
                        }
                      },
                      "annotations": {
                        "description": {
                          "value": "The password used to protect the private key."
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "password"
                      },
                      "model": {
                        "type": "String",
                        "annotations": {
                          "typeId": "java.lang.String"
                        }
                      },
                      "annotations": {
                        "description": {
                          "value": "The password used to protect the key store."
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "algorithm"
                      },
                      "model": {
                        "type": "String",
                        "annotations": {
                          "typeId": "java.lang.String"
                        }
                      },
                      "annotations": {
                        "description": {
                          "value": "The algorithm used by the key store."
                        }
                      }
                    }
                  ]
                }
              }
            ]
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "NOT_SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "tabName": "Security"
              }
            },
            "org.mule.runtime.extension.api.declaration.type.annotation.DisplayTypeAnnotation": {
              "displayModel": {
                "displayName": "TLS Configuration"
              }
            }
          }
        },
        {
          "key": {
            "name": "resourceOwnerId"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "java.lang.String",
              "org.mule.runtime.extension.api.declaration.type.annotation.ParameterResolverTypeAnnotation": {}
            }
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "default": "default",
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "tokenManager"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "typeId": "org.mule.extension.oauth2.internal.tokenmanager.TokenManagerConfig",
              "classInformation": {
                "hasDefaultConstructor": true,
                "isInterface": false,
                "isInstantiable": true,
                "isAbstract": false,
                "isFinal": false,
                "implementedInterfaces": [
                  "org.mule.runtime.api.lifecycle.Initialisable",
                  "org.mule.runtime.core.api.context.MuleContextAware"
                ],
                "parent": "",
                "genericTypes": []
              },
              "xmlHints": {
                "allowInlineDefinition": true,
                "allowTopLevelDefinition": true,
                "allowReferences": true
              },
              "typeAlias": {
                "value": "token-manager-config"
              }
            },
            "fields": [
              {
                "key": {
                  "name": "objectStore"
                },
                "model": {
                  "type": "Object",
                  "annotations": {
                    "typeId": "org.mule.runtime.core.api.store.ListableObjectStore",
                    "classInformation": {
                      "hasDefaultConstructor": false,
                      "isInterface": true,
                      "isInstantiable": false,
                      "isAbstract": true,
                      "isFinal": false,
                      "implementedInterfaces": [
                        "org.mule.runtime.core.api.store.ObjectStore"
                      ],
                      "parent": "",
                      "genericTypes": [
                        "org.mule.extension.oauth2.internal.authorizationcode.state.ResourceOwnerOAuthContext"
                      ]
                    },
                    "typeAlias": {
                      "value": "ListableObjectStore"
                    }
                  },
                  "fields": []
                },
                "annotations": {
                  "parameterPurpose": {
                    "role": "BEHAVIOUR"
                  },
                  "expressionSupport": {
                    "value": "SUPPORTED"
                  }
                }
              }
            ]
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        }
      ]
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "org.mule.extension.oauth2.internal.clientcredentials.ClientCredentialsGrantType",
        "classInformation": {
          "hasDefaultConstructor": true,
          "isInterface": false,
          "isInstantiable": true,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [
            "org.mule.runtime.api.lifecycle.Initialisable",
            "org.mule.runtime.api.lifecycle.Startable",
            "org.mule.runtime.api.lifecycle.Stoppable"
          ],
          "parent": "org.mule.extension.oauth2.internal.AbstractGrantType",
          "genericTypes": []
        },
        "typeAlias": {
          "value": "ClientCredentialsGrantType"
        }
      },
      "fields": [
        {
          "key": {
            "name": "clientId"
          },
          "model": {
            "required": "true",
            "type": "String",
            "annotations": {
              "typeId": "java.lang.String"
            }
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "clientSecret"
          },
          "model": {
            "required": "true",
            "type": "String",
            "annotations": {
              "typeId": "java.lang.String"
            }
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "tokenRequestHandler"
          },
          "model": {
            "required": "true",
            "type": "Object",
            "annotations": {
              "typeId": "org.mule.extension.oauth2.internal.clientcredentials.ClientCredentialsTokenRequestHandler",
              "classInformation": {
                "hasDefaultConstructor": true,
                "isInterface": false,
                "isInstantiable": true,
                "isAbstract": false,
                "isFinal": false,
                "implementedInterfaces": [
                  "org.mule.runtime.api.lifecycle.Initialisable"
                ],
                "parent": "org.mule.extension.oauth2.internal.AbstractTokenRequestHandler",
                "genericTypes": []
              },
              "typeAlias": {
                "value": "ClientCredentialsTokenRequestHandler"
              }
            },
            "fields": [
              {
                "key": {
                  "name": "scopes"
                },
                "model": {
                  "type": "String",
                  "annotations": {
                    "typeId": "java.lang.String"
                  }
                },
                "annotations": {
                  "parameterPurpose": {
                    "role": "BEHAVIOUR"
                  },
                  "expressionSupport": {
                    "value": "SUPPORTED"
                  }
                }
              },
              {
                "key": {
                  "name": "encodeClientCredentialsInBody"
                },
                "model": {
                  "type": "Boolean",
                  "annotations": {
                    "typeId": "boolean"
                  }
                },
                "annotations": {
                  "parameterPurpose": {
                    "role": "BEHAVIOUR"
                  },
                  "default": "false",
                  "expressionSupport": {
                    "value": "SUPPORTED"
                  }
                }
              },
              {
                "key": {
                  "name": "responseAccessToken"
                },
                "model": {
                  "type": "String",
                  "annotations": {
                    "typeId": "java.lang.String",
                    "org.mule.runtime.extension.api.declaration.type.annotation.ParameterResolverTypeAnnotation": {}
                  }
                },
                "annotations": {
                  "parameterPurpose": {
                    "role": "BEHAVIOUR"
                  },
                  "default": "#[(payload match /.*\"access_token\"[ ]*:[ ]*\"([^\\\"]*)\".*/)[1]]",
                  "expressionSupport": {
                    "value": "SUPPORTED"
                  }
                }
              },
              {
                "key": {
                  "name": "responseRefreshToken"
                },
                "model": {
                  "type": "String",
                  "annotations": {
                    "typeId": "java.lang.String",
                    "org.mule.runtime.extension.api.declaration.type.annotation.ParameterResolverTypeAnnotation": {}
                  }
                },
                "annotations": {
                  "parameterPurpose": {
                    "role": "BEHAVIOUR"
                  },
                  "default": "#[(payload match /.*\"refresh_token\"[ ]*:[ ]*\"([^\\\"]*)\".*/)[1]]",
                  "expressionSupport": {
                    "value": "SUPPORTED"
                  }
                }
              },
              {
                "key": {
                  "name": "responseExpiresIn"
                },
                "model": {
                  "type": "String",
                  "annotations": {
                    "typeId": "java.lang.String",
                    "org.mule.runtime.extension.api.declaration.type.annotation.ParameterResolverTypeAnnotation": {}
                  }
                },
                "annotations": {
                  "parameterPurpose": {
                    "role": "BEHAVIOUR"
                  },
                  "default": "#[(payload match /.*\"expires_in\"[ ]*:[ ]*\"([^\\\"]*)\".*/)[1]]",
                  "expressionSupport": {
                    "value": "SUPPORTED"
                  }
                }
              },
              {
                "key": {
                  "name": "custom-parameter-extractors"
                },
                "model": {
                  "type": "Array",
                  "annotations": {
                    "typeId": "java.util.List"
                  },
                  "item": {
                    "type": "Object",
                    "annotations": {
                      "typeId": "org.mule.extension.oauth2.internal.ParameterExtractor",
                      "classInformation": {
                        "hasDefaultConstructor": true,
                        "isInterface": false,
                        "isInstantiable": true,
                        "isAbstract": false,
                        "isFinal": false,
                        "implementedInterfaces": [],
                        "parent": "",
                        "genericTypes": []
                      },
                      "typeAlias": {
                        "value": "ParameterExtractor"
                      }
                    },
                    "fields": [
                      {
                        "key": {
                          "name": "paramName"
                        },
                        "model": {
                          "required": "true",
                          "type": "String",
                          "annotations": {
                            "typeId": "java.lang.String"
                          }
                        },
                        "annotations": {
                          "parameterPurpose": {
                            "role": "BEHAVIOUR"
                          },
                          "expressionSupport": {
                            "value": "SUPPORTED"
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "value"
                        },
                        "model": {
                          "required": "true",
                          "type": "String",
                          "annotations": {
                            "typeId": "java.lang.String",
                            "org.mule.runtime.extension.api.declaration.type.annotation.ParameterResolverTypeAnnotation": {}
                          }
                        },
                        "annotations": {
                          "parameterPurpose": {
                            "role": "BEHAVIOUR"
                          },
                          "expressionSupport": {
                            "value": "SUPPORTED"
                          }
                        }
                      }
                    ]
                  }
                },
                "annotations": {
                  "parameterPurpose": {
                    "role": "BEHAVIOUR"
                  },
                  "expressionSupport": {
                    "value": "SUPPORTED"
                  }
                }
              },
              {
                "key": {
                  "name": "refreshTokenWhen"
                },
                "model": {
                  "type": "Boolean",
                  "annotations": {
                    "typeId": "java.lang.Boolean",
                    "org.mule.runtime.extension.api.declaration.type.annotation.ParameterResolverTypeAnnotation": {}
                  }
                },
                "annotations": {
                  "parameterPurpose": {
                    "role": "BEHAVIOUR"
                  },
                  "default": "#[attributes.statusCode \u003d\u003d 401 or attributes.statusCode \u003d\u003d 403]",
                  "expressionSupport": {
                    "value": "SUPPORTED"
                  }
                }
              },
              {
                "key": {
                  "name": "tokenUrl"
                },
                "model": {
                  "required": "true",
                  "type": "String",
                  "annotations": {
                    "typeId": "java.lang.String"
                  }
                },
                "annotations": {
                  "parameterPurpose": {
                    "role": "BEHAVIOUR"
                  },
                  "expressionSupport": {
                    "value": "SUPPORTED"
                  }
                }
              }
            ]
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "flattened": {},
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "tlsContextFactory"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "typeId": "org.mule.runtime.api.tls.TlsContextFactory",
              "typeAlias": {
                "value": "Tls"
              }
            },
            "fields": [
              {
                "key": {
                  "name": "enabledProtocols"
                },
                "model": {
                  "type": "String",
                  "annotations": {
                    "typeId": "java.lang.String"
                  }
                },
                "annotations": {
                  "description": {
                    "value": "A comma separated list of protocols enabled for this context."
                  }
                }
              },
              {
                "key": {
                  "name": "enabledCipherSuites"
                },
                "model": {
                  "type": "String",
                  "annotations": {
                    "typeId": "java.lang.String"
                  }
                },
                "annotations": {
                  "description": {
                    "value": "A comma separated list of cipher suites enabled for this context."
                  }
                }
              },
              {
                "key": {
                  "name": "trust-store"
                },
                "model": {
                  "type": "Object",
                  "annotations": {
                    "typeId": "java.lang.Object",
                    "typeAlias": {
                      "value": "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": {
                          "typeId": "java.lang.String"
                        }
                      },
                      "annotations": {
                        "description": {
                          "value": "The location (which will be resolved relative to the current classpath and file system, if possible) of the trust store."
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "password"
                      },
                      "model": {
                        "type": "String",
                        "annotations": {
                          "typeId": "java.lang.String"
                        }
                      },
                      "annotations": {
                        "description": {
                          "value": "The password used to protect the trust store."
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "type"
                      },
                      "model": {
                        "type": "Union",
                        "of": [
                          {
                            "type": "String",
                            "annotations": {
                              "typeId": "java.lang.String",
                              "enum": {
                                "type": "[Ljava.lang.String;",
                                "values": [
                                  "jks",
                                  "jceks",
                                  "pkcs12"
                                ]
                              }
                            }
                          },
                          {
                            "type": "String"
                          }
                        ]
                      },
                      "annotations": {
                        "description": {
                          "value": "The type of store used."
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "algorithm"
                      },
                      "model": {
                        "type": "String",
                        "annotations": {
                          "typeId": "java.lang.String"
                        }
                      },
                      "annotations": {
                        "description": {
                          "value": "The algorithm used by the trust store."
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "insecure"
                      },
                      "model": {
                        "type": "Boolean",
                        "annotations": {
                          "typeId": "java.lang.Boolean",
                          "default": "false"
                        }
                      },
                      "annotations": {
                        "description": {
                          "value": "If true, no certificate validations will be performed."
                        }
                      }
                    }
                  ]
                }
              },
              {
                "key": {
                  "name": "key-store"
                },
                "model": {
                  "type": "Object",
                  "annotations": {
                    "typeId": "java.lang.Object",
                    "typeAlias": {
                      "value": "KeyStore"
                    },
                    "description": {
                      "value": "Key store configuration. The key store contains the keys of this server/client."
                    }
                  },
                  "fields": [
                    {
                      "key": {
                        "name": "path"
                      },
                      "model": {
                        "type": "String",
                        "annotations": {
                          "typeId": "java.lang.String"
                        }
                      },
                      "annotations": {
                        "description": {
                          "value": "The location (which will be resolved relative to the current classpath and file system, if possible) of the key store."
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "type"
                      },
                      "model": {
                        "type": "Union",
                        "of": [
                          {
                            "type": "String",
                            "annotations": {
                              "typeId": "java.lang.String",
                              "enum": {
                                "type": "[Ljava.lang.String;",
                                "values": [
                                  "jks",
                                  "jceks",
                                  "pkcs12"
                                ]
                              }
                            }
                          },
                          {
                            "type": "String"
                          }
                        ]
                      },
                      "annotations": {
                        "description": {
                          "value": "The type of store used."
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "alias"
                      },
                      "model": {
                        "type": "String",
                        "annotations": {
                          "typeId": "java.lang.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": {
                          "typeId": "java.lang.String"
                        }
                      },
                      "annotations": {
                        "description": {
                          "value": "The password used to protect the private key."
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "password"
                      },
                      "model": {
                        "type": "String",
                        "annotations": {
                          "typeId": "java.lang.String"
                        }
                      },
                      "annotations": {
                        "description": {
                          "value": "The password used to protect the key store."
                        }
                      }
                    },
                    {
                      "key": {
                        "name": "algorithm"
                      },
                      "model": {
                        "type": "String",
                        "annotations": {
                          "typeId": "java.lang.String"
                        }
                      },
                      "annotations": {
                        "description": {
                          "value": "The algorithm used by the key store."
                        }
                      }
                    }
                  ]
                }
              }
            ]
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "NOT_SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "tabName": "Security"
              }
            },
            "org.mule.runtime.extension.api.declaration.type.annotation.DisplayTypeAnnotation": {
              "displayModel": {
                "displayName": "TLS Configuration"
              }
            }
          }
        },
        {
          "key": {
            "name": "tokenManager"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "typeId": "org.mule.extension.oauth2.internal.tokenmanager.TokenManagerConfig",
              "classInformation": {
                "hasDefaultConstructor": true,
                "isInterface": false,
                "isInstantiable": true,
                "isAbstract": false,
                "isFinal": false,
                "implementedInterfaces": [
                  "org.mule.runtime.api.lifecycle.Initialisable",
                  "org.mule.runtime.core.api.context.MuleContextAware"
                ],
                "parent": "",
                "genericTypes": []
              },
              "xmlHints": {
                "allowInlineDefinition": true,
                "allowTopLevelDefinition": true,
                "allowReferences": true
              },
              "typeAlias": {
                "value": "token-manager-config"
              }
            },
            "fields": [
              {
                "key": {
                  "name": "objectStore"
                },
                "model": {
                  "type": "Object",
                  "annotations": {
                    "typeId": "org.mule.runtime.core.api.store.ListableObjectStore",
                    "classInformation": {
                      "hasDefaultConstructor": false,
                      "isInterface": true,
                      "isInstantiable": false,
                      "isAbstract": true,
                      "isFinal": false,
                      "implementedInterfaces": [
                        "org.mule.runtime.core.api.store.ObjectStore"
                      ],
                      "parent": "",
                      "genericTypes": [
                        "org.mule.extension.oauth2.internal.authorizationcode.state.ResourceOwnerOAuthContext"
                      ]
                    },
                    "typeAlias": {
                      "value": "ListableObjectStore"
                    }
                  },
                  "fields": []
                },
                "annotations": {
                  "parameterPurpose": {
                    "role": "BEHAVIOUR"
                  },
                  "expressionSupport": {
                    "value": "SUPPORTED"
                  }
                }
              }
            ]
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        }
      ]
    }
  ]
}
