diff --git a/2-Legged-OAuth/2-Legged-OAuth_rev2_2019_12_12.zip b/2-Legged-OAuth/2-Legged-OAuth_rev2_2019_12_12.zip
new file mode 100644
index 0000000..e8aac43
Binary files /dev/null and b/2-Legged-OAuth/2-Legged-OAuth_rev2_2019_12_12.zip differ
diff --git a/2-Legged-OAuth/apiproxy/2-Legged-OAuth.xml b/2-Legged-OAuth/apiproxy/2-Legged-OAuth.xml
new file mode 100644
index 0000000..8700cac
--- /dev/null
+++ b/2-Legged-OAuth/apiproxy/2-Legged-OAuth.xml
@@ -0,0 +1,23 @@
+
+
+ /clientoauth
+
+ 1576144374918
+ pamesh12@gmail.com
+ 2-Legged OAuth Client_crendential
+ 2-Legged-OAuth
+ 1576144506514
+ pamesh12@gmail.com
+ SHA-512:b56e29dcd3512a971cb564ff4109a79a49e2cc6656c9d229b9ce0e00fbcd6a795da7cff71043e2cae351690c3630d8e7e9273a1b76e96cf9918a2a0267742b40
+
+ GenerateToken
+ verify-api-key
+
+
+ default
+
+
+
+
+
+
diff --git a/2-Legged-OAuth/apiproxy/manifests/manifest.xml b/2-Legged-OAuth/apiproxy/manifests/manifest.xml
new file mode 100644
index 0000000..ec3cf1c
--- /dev/null
+++ b/2-Legged-OAuth/apiproxy/manifests/manifest.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/2-Legged-OAuth/apiproxy/policies/GenerateToken.xml b/2-Legged-OAuth/apiproxy/policies/GenerateToken.xml
new file mode 100644
index 0000000..2a206d0
--- /dev/null
+++ b/2-Legged-OAuth/apiproxy/policies/GenerateToken.xml
@@ -0,0 +1,14 @@
+
+
+ GenerateToken
+
+
+ false
+ GenerateAccessToken
+ 3600000
+
+ client_credentials
+
+
+
+
\ No newline at end of file
diff --git a/2-Legged-OAuth/apiproxy/policies/verify-api-key.xml b/2-Legged-OAuth/apiproxy/policies/verify-api-key.xml
new file mode 100644
index 0000000..13ca5cd
--- /dev/null
+++ b/2-Legged-OAuth/apiproxy/policies/verify-api-key.xml
@@ -0,0 +1,5 @@
+
+
+ Verify API Key
+
+
\ No newline at end of file
diff --git a/2-Legged-OAuth/apiproxy/proxies/default.xml b/2-Legged-OAuth/apiproxy/proxies/default.xml
new file mode 100644
index 0000000..03c3801
--- /dev/null
+++ b/2-Legged-OAuth/apiproxy/proxies/default.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+ verify-api-key
+
+
+
+
+
+
+
+
+
+
+ GenerateOauthToken
+
+
+ GenerateToken
+
+
+
+ (proxy.pathsuffix MatchesPath "/token") and (request.verb = "POST")
+
+
+
+ /clientoauth
+
+ default
+
+
+
\ No newline at end of file
diff --git a/CacheDemoApi/CacheDemoApi_rev2_2019_12_12.zip b/CacheDemoApi/CacheDemoApi_rev2_2019_12_12.zip
new file mode 100644
index 0000000..ece94e2
Binary files /dev/null and b/CacheDemoApi/CacheDemoApi_rev2_2019_12_12.zip differ
diff --git a/CacheDemoApi/apiproxy/CacheDemoApi.xml b/CacheDemoApi/apiproxy/CacheDemoApi.xml
new file mode 100644
index 0000000..0c79d6d
--- /dev/null
+++ b/CacheDemoApi/apiproxy/CacheDemoApi.xml
@@ -0,0 +1,33 @@
+
+
+ /cachedemoapi
+
+ 1576144286350
+ pamesh12@gmail.com
+
+ CacheDemoApi
+ 1576157529446
+ pamesh12@gmail.com
+ SHA-512:0c4039eddea3161896409a244a481260cb44149ba614297bd7aeefb379b500adbb85e1a0587cdcd9d60b81407a37675f4fa500cf159b60652ef089a16cb02560
+
+ BuildAccessTokenRequest
+ CheckAccessTokenCache
+ ExtractAccessToken
+ GetCredentials
+ GetOAuthToken
+ SetAccessToken
+ SetAccessTokenCache
+ SetAccessTokenFromCache
+ remove-header-authorization
+ verify-oauth-v2-access-token
+
+
+ default
+
+
+
+
+
+ default
+
+
diff --git a/CacheDemoApi/apiproxy/manifests/manifest.xml b/CacheDemoApi/apiproxy/manifests/manifest.xml
new file mode 100644
index 0000000..cdf292e
--- /dev/null
+++ b/CacheDemoApi/apiproxy/manifests/manifest.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CacheDemoApi/apiproxy/policies/BuildAccessTokenRequest.xml b/CacheDemoApi/apiproxy/policies/BuildAccessTokenRequest.xml
new file mode 100644
index 0000000..1578f3c
--- /dev/null
+++ b/CacheDemoApi/apiproxy/policies/BuildAccessTokenRequest.xml
@@ -0,0 +1,18 @@
+
+
+ BuildAccessTokenRequest
+
+
+
+
+
+
+ client_credentials
+ ZCEk72XewNHAFALMq26cakp3pvGF2vVG
+ HMpwSifJjwq42ifV
+
+ POST
+
+ true
+ OAuthAccessTokenRequest
+
\ No newline at end of file
diff --git a/CacheDemoApi/apiproxy/policies/CheckAccessTokenCache.xml b/CacheDemoApi/apiproxy/policies/CheckAccessTokenCache.xml
new file mode 100644
index 0000000..7cdea76
--- /dev/null
+++ b/CacheDemoApi/apiproxy/policies/CheckAccessTokenCache.xml
@@ -0,0 +1,12 @@
+
+
+ CheckAccessTokenCache
+
+
+ ExternalOAuth_
+ {ext.clientId}
+
+ ExtApiCache
+ Exclusive
+ external.oauth.cached.accessToken
+
\ No newline at end of file
diff --git a/CacheDemoApi/apiproxy/policies/ExtractAccessToken.xml b/CacheDemoApi/apiproxy/policies/ExtractAccessToken.xml
new file mode 100644
index 0000000..a4e9b8e
--- /dev/null
+++ b/CacheDemoApi/apiproxy/policies/ExtractAccessToken.xml
@@ -0,0 +1,12 @@
+
+
+ ExtractAccessToken
+
+ true
+
+
+ $.access_token
+
+
+ OAuthAccessTokenResponse
+
\ No newline at end of file
diff --git a/CacheDemoApi/apiproxy/policies/GetCredentials.xml b/CacheDemoApi/apiproxy/policies/GetCredentials.xml
new file mode 100644
index 0000000..214f925
--- /dev/null
+++ b/CacheDemoApi/apiproxy/policies/GetCredentials.xml
@@ -0,0 +1,18 @@
+
+
+ GetCredentials
+
+ false
+ 300
+
+
+ clientId
+
+
+
+
+ clientSecret
+
+
+ environment
+
\ No newline at end of file
diff --git a/CacheDemoApi/apiproxy/policies/GetOAuthToken.xml b/CacheDemoApi/apiproxy/policies/GetOAuthToken.xml
new file mode 100644
index 0000000..bd3570d
--- /dev/null
+++ b/CacheDemoApi/apiproxy/policies/GetOAuthToken.xml
@@ -0,0 +1,12 @@
+
+
+ GetOAuthToken
+
+
+ false
+
+ OAuthAccessTokenResponse
+
+ http://pamesh12-eval-test.apigee.net/externaloauthapi/token
+
+
\ No newline at end of file
diff --git a/CacheDemoApi/apiproxy/policies/SetAccessToken.xml b/CacheDemoApi/apiproxy/policies/SetAccessToken.xml
new file mode 100644
index 0000000..907f78e
--- /dev/null
+++ b/CacheDemoApi/apiproxy/policies/SetAccessToken.xml
@@ -0,0 +1,11 @@
+
+
+ SetAccessToken
+
+
+
+
+
+ true
+
+
\ No newline at end of file
diff --git a/CacheDemoApi/apiproxy/policies/SetAccessTokenCache.xml b/CacheDemoApi/apiproxy/policies/SetAccessTokenCache.xml
new file mode 100644
index 0000000..7e609d1
--- /dev/null
+++ b/CacheDemoApi/apiproxy/policies/SetAccessTokenCache.xml
@@ -0,0 +1,15 @@
+
+
+ SetAccessTokenCache
+
+
+ ExternalOAuth_
+ {ext.clientId}
+
+ Exclusive
+ ExtApiCache
+
+ 3600
+
+ access_token
+
\ No newline at end of file
diff --git a/CacheDemoApi/apiproxy/policies/SetAccessTokenFromCache.xml b/CacheDemoApi/apiproxy/policies/SetAccessTokenFromCache.xml
new file mode 100644
index 0000000..683f276
--- /dev/null
+++ b/CacheDemoApi/apiproxy/policies/SetAccessTokenFromCache.xml
@@ -0,0 +1,12 @@
+
+
+ SetAccessTokenFromCache
+
+
+
+ Bearer {external.oauth.cached.accessToken}
+
+
+ true
+
+
\ No newline at end of file
diff --git a/CacheDemoApi/apiproxy/policies/remove-header-authorization.xml b/CacheDemoApi/apiproxy/policies/remove-header-authorization.xml
new file mode 100644
index 0000000..7b8ef40
--- /dev/null
+++ b/CacheDemoApi/apiproxy/policies/remove-header-authorization.xml
@@ -0,0 +1,11 @@
+
+
+ Remove Header Authorization
+
+
+
+
+
+ true
+
+
\ No newline at end of file
diff --git a/CacheDemoApi/apiproxy/policies/verify-oauth-v2-access-token.xml b/CacheDemoApi/apiproxy/policies/verify-oauth-v2-access-token.xml
new file mode 100644
index 0000000..3b64e6b
--- /dev/null
+++ b/CacheDemoApi/apiproxy/policies/verify-oauth-v2-access-token.xml
@@ -0,0 +1,5 @@
+
+
+ Verify OAuth v2.0 Access Token
+ VerifyAccessToken
+
\ No newline at end of file
diff --git a/CacheDemoApi/apiproxy/proxies/default.xml b/CacheDemoApi/apiproxy/proxies/default.xml
new file mode 100644
index 0000000..caf50c7
--- /dev/null
+++ b/CacheDemoApi/apiproxy/proxies/default.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+ verify-oauth-v2-access-token
+
+
+ remove-header-authorization
+
+
+
+
+
+
+
+
+
+
+ /cachedemoapi
+
+ default
+
+
+ default
+
+
\ No newline at end of file
diff --git a/CacheDemoApi/apiproxy/targets/default.xml b/CacheDemoApi/apiproxy/targets/default.xml
new file mode 100644
index 0000000..41e04ea
--- /dev/null
+++ b/CacheDemoApi/apiproxy/targets/default.xml
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+ GetCredentials
+
+
+ CheckAccessTokenCache
+
+
+ external.oauth.cached.accessToken = null
+ BuildAccessTokenRequest
+
+
+ external.oauth.cached.accessToken = null
+ GetOAuthToken
+
+
+ external.oauth.cached.accessToken = null and OAuthAccessTokenResponse.status.code==200
+ ExtractAccessToken
+
+
+ external.oauth.cached.accessToken = null and OAuthAccessTokenResponse.status.code==200
+ SetAccessToken
+
+
+ external.oauth.cached.accessToken = null and OAuthAccessTokenResponse.status.code==200
+ SetAccessTokenCache
+
+
+ external.oauth.cached.accessToken != null
+ SetAccessTokenFromCache
+
+
+
+
+
+
+
+
+
+
+
+ http://pamesh12-eval-test.apigee.net/externalapi
+
+
\ No newline at end of file
diff --git a/ExternalApi/ExternalApi_rev1_2019_12_12.zip b/ExternalApi/ExternalApi_rev1_2019_12_12.zip
new file mode 100644
index 0000000..2378c5b
Binary files /dev/null and b/ExternalApi/ExternalApi_rev1_2019_12_12.zip differ
diff --git a/ExternalApi/apiproxy/ExternalApi.xml b/ExternalApi/apiproxy/ExternalApi.xml
new file mode 100644
index 0000000..4c6ec6b
--- /dev/null
+++ b/ExternalApi/apiproxy/ExternalApi.xml
@@ -0,0 +1,24 @@
+
+
+ /externalapi
+
+ 1576142148759
+ pamesh12@gmail.com
+ Dummy Api to demonstrate response caching of OAuth Token
+ ExternalApi
+ 1576157356815
+ pamesh12@gmail.com
+ SHA-512:45dddae3ec745b06e5ef3d5a832d17060471a9e3e3d8138fccced7af1206c537d969fefb7bab4d9d32b3b7943a77bc812f88cb88811278c21d57d2982bf5a24c
+
+ AM-Response
+ remove-header-authorization
+ verify-oauth-v2-access-token
+
+
+ default
+
+
+
+
+
+
diff --git a/ExternalApi/apiproxy/manifests/manifest.xml b/ExternalApi/apiproxy/manifests/manifest.xml
new file mode 100644
index 0000000..3f1af1b
--- /dev/null
+++ b/ExternalApi/apiproxy/manifests/manifest.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ExternalApi/apiproxy/policies/AM-Response.xml b/ExternalApi/apiproxy/policies/AM-Response.xml
new file mode 100644
index 0000000..a5e3535
--- /dev/null
+++ b/ExternalApi/apiproxy/policies/AM-Response.xml
@@ -0,0 +1,15 @@
+
+
+ AM-Response
+
+
+
+ {
+ "Response" : "External API Dummy Response",
+ "Time" : %system.time#
+ }
+
+
+ true
+
+
\ No newline at end of file
diff --git a/ExternalApi/apiproxy/policies/remove-header-authorization.xml b/ExternalApi/apiproxy/policies/remove-header-authorization.xml
new file mode 100644
index 0000000..7b8ef40
--- /dev/null
+++ b/ExternalApi/apiproxy/policies/remove-header-authorization.xml
@@ -0,0 +1,11 @@
+
+
+ Remove Header Authorization
+
+
+
+
+
+ true
+
+
\ No newline at end of file
diff --git a/ExternalApi/apiproxy/policies/verify-oauth-v2-access-token.xml b/ExternalApi/apiproxy/policies/verify-oauth-v2-access-token.xml
new file mode 100644
index 0000000..3b64e6b
--- /dev/null
+++ b/ExternalApi/apiproxy/policies/verify-oauth-v2-access-token.xml
@@ -0,0 +1,5 @@
+
+
+ Verify OAuth v2.0 Access Token
+ VerifyAccessToken
+
\ No newline at end of file
diff --git a/ExternalApi/apiproxy/proxies/default.xml b/ExternalApi/apiproxy/proxies/default.xml
new file mode 100644
index 0000000..d38cc5f
--- /dev/null
+++ b/ExternalApi/apiproxy/proxies/default.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+ verify-oauth-v2-access-token
+
+
+ remove-header-authorization
+
+
+
+
+
+
+
+
+ AM-Response
+
+
+
+
+
+ /externalapi
+
+ default
+
+
+
\ No newline at end of file
diff --git a/ExternalOAuthApi/ExternalOAuthApi_rev2_2019_12_12.zip b/ExternalOAuthApi/ExternalOAuthApi_rev2_2019_12_12.zip
new file mode 100644
index 0000000..7bed302
Binary files /dev/null and b/ExternalOAuthApi/ExternalOAuthApi_rev2_2019_12_12.zip differ
diff --git a/ExternalOAuthApi/apiproxy/ExternalOAuthApi.xml b/ExternalOAuthApi/apiproxy/ExternalOAuthApi.xml
new file mode 100644
index 0000000..3654fc9
--- /dev/null
+++ b/ExternalOAuthApi/apiproxy/ExternalOAuthApi.xml
@@ -0,0 +1,23 @@
+
+
+ /externaloauthapi
+
+ 1576142582125
+ pamesh12@gmail.com
+ API for demonstrating 2 legged OAuth from External System
+ ExternalOAuthApi
+ 1576143726727
+ pamesh12@gmail.com
+ SHA-512:755eed169a14235ea875fe5776a36108850286dffb90782e8442704b075ba0789250a0a719697706760e13da85f5c50bf7d5e8d232a061680c6b8928858435b2
+
+ GenerateToken
+ VerifyAPIKey
+
+
+ default
+
+
+
+
+
+
diff --git a/ExternalOAuthApi/apiproxy/manifests/manifest.xml b/ExternalOAuthApi/apiproxy/manifests/manifest.xml
new file mode 100644
index 0000000..8756bd1
--- /dev/null
+++ b/ExternalOAuthApi/apiproxy/manifests/manifest.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ExternalOAuthApi/apiproxy/policies/GenerateToken.xml b/ExternalOAuthApi/apiproxy/policies/GenerateToken.xml
new file mode 100644
index 0000000..2a206d0
--- /dev/null
+++ b/ExternalOAuthApi/apiproxy/policies/GenerateToken.xml
@@ -0,0 +1,14 @@
+
+
+ GenerateToken
+
+
+ false
+ GenerateAccessToken
+ 3600000
+
+ client_credentials
+
+
+
+
\ No newline at end of file
diff --git a/ExternalOAuthApi/apiproxy/policies/VerifyAPIKey.xml b/ExternalOAuthApi/apiproxy/policies/VerifyAPIKey.xml
new file mode 100644
index 0000000..be1d586
--- /dev/null
+++ b/ExternalOAuthApi/apiproxy/policies/VerifyAPIKey.xml
@@ -0,0 +1,6 @@
+
+
+ VerifyAPIKey
+
+
+
\ No newline at end of file
diff --git a/ExternalOAuthApi/apiproxy/proxies/default.xml b/ExternalOAuthApi/apiproxy/proxies/default.xml
new file mode 100644
index 0000000..259339e
--- /dev/null
+++ b/ExternalOAuthApi/apiproxy/proxies/default.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+ VerifyAPIKey
+
+
+
+
+
+
+
+
+
+
+ GenerateOauthToken
+
+
+ GenerateToken
+
+
+
+ (proxy.pathsuffix MatchesPath "/token") and (request.verb = "POST")
+
+
+
+ /externaloauthapi
+
+ default
+
+
+
\ No newline at end of file