diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..b0bc601
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2021 NEC Corporation of America
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..9f22f9f
--- /dev/null
+++ b/README.md
@@ -0,0 +1,43 @@
+
+
+# JavaScript sample code for UNIVERGE BLUE® EXTEND API
+
+ This sample code shows how to work with UNIVERGE BLUE® EXTEND API.
+
+ The UNIVERGE BLUE® EXTEND API allows you to integrate the features of UNIVERGE BLUE®'s award-winning voice, video, contact center, and analytics services into business applications (CRMs, ERPs, Ticketing Systems, etc.).
+
+## Authorization
+
+ You are going to need a set of valid credentials to invoke the APIs. Please follow the instructions provided in the [UNIVERGE BLUE® EXTEND API page](https://kb.univerge.blue/en-US/Article/63780) to register your service account and your application Client ID.
+
+ > NOTE: You need the Account Owner, or Technical Administrator with CONNECT or MEET permissions to access the Extend API section of **Control Panel**. If you do not have the sufficient permissions, please contact your account administrator for help.
+
+ Please review the [Authorization API reference](https://developer.univerge.blue/api/spec/calling/index.html#dev-guide-auth-guide) for detailed information about supported authorization flows and credentials.
+
+## Hosting the code
+
+ To use the provided samples, you would need to host the repository on some website (because you need a unique client URL for proper authorization configuration). There are multiple options how to achieve this, but the simplest ones are:
+
+* **Option 1**: [Fork](https://github.com/univerge-blue/extend-api-samples/fork) the repository into your own account, and [enable the GitHub pages](https://docs.github.com/en/pages/getting-started-with-github-pages/creating-a-github-pages-site) for it.
+* **Option 2**: Self-host the code. Clone our repository and use your favorite http server (nginx, apache, IIS, etc).
+
+## Invoking the APIs
+
+* Browse the **index.html** file to configure and authorize your client.
+* After the successful authorization you will see the menu with the available API call samples.
+
+## Credits
+
+ This code sample uses [**OIDC client**](https://github.com/IdentityModel/oidc-client-js) - a library for providing OpenID Connect (OIDC) and OAuth2 protocol support for client-side, browser-based JavaScript client applications.
+
+## License
+
+ This code sample is licensed under [MIT License](https://github.com/univerge-blue/extend-api-samples/blob/main/LICENSE).
+
+## Feedback
+
+ Excited? Frustrated? Please feel free to contact us via the [feedback form](https://developer.univerge.blue/articles/feedback.html).
diff --git a/api/address-book/address-book-api.js b/api/address-book/address-book-api.js
new file mode 100644
index 0000000..e618993
--- /dev/null
+++ b/api/address-book/address-book-api.js
@@ -0,0 +1,73 @@
+const baseUrl = 'https://api.univerge.blue';
+
+// https://developer.univerge.blue/api/spec/address_book/index.html#get-/address-book/v3/contacts
+function getContacts(query, phone, scope, fields){
+ let url = `${baseUrl}/address-book/v3/contacts`;
+
+ let searchParams = new URLSearchParams();
+ if(query) searchParams.append("query", query);
+ if(phone) searchParams.append("phone", phone);
+ if(scope) searchParams.append("scope", scope);
+ if(fields) searchParams.append("fields", fields);
+
+ if(searchParams.toString()){
+ url += `?${searchParams.toString()}`;
+ }
+
+ return makeRequest("GET", url).then((response) => response.json());
+}
+
+// https://developer.univerge.blue/api/spec/address_book/index.html#get-/address-book/v3/contacts/_me
+function getUserDetails(fields){
+ let url = `${baseUrl}/address-book/v3/contacts/_me`;
+
+ if(fields){
+ url += `?${fields}`;
+ }
+
+ return makeRequest("GET", url).then((response) => response.json());
+}
+
+// https://developer.univerge.blue/api/spec/address_book/index.html#post-/address-book/v3/contacts/_search
+function getContactsByJIDs(jids, fields){
+ let url = `${baseUrl}/address-book/v3/contacts/_search`;
+
+ if(fields){
+ url += `?${fields}`;
+ }
+
+ const body = {
+ "jids" : jids
+ }
+
+ return makeRequest("POST", url, body).then((response) => response.json());
+}
+
+// https://developer.univerge.blue/api/spec/address_book/index.html#get-/address-book/v3/contacts/{id}
+function getSingleContact(id, fields){
+ let url = `${baseUrl}/address-book/v3/contacts/${id}`;
+
+ if(fields){
+ url += `?${fields}`;
+ }
+
+ return makeRequest("GET", url).then((response) => response.json());
+}
+
+// https://developer.univerge.blue/api/spec/address_book/index.html#get-/address-book/v3/avatars/{avatarId}
+function getAvatar(avatarId){
+ const url = `${baseUrl}/address-book/v3/avatars/${avatarId}`;
+
+ return makeRequest('GET', url).then((response) => response.json());
+}
+
+// https://developer.univerge.blue/api/spec/address_book/index.html#post-/address-book/v3/avatars/_search
+function getMultipleAvatars(avatarIds){
+ const url = `${baseUrl}/address-book/v3/avatars/_search`;
+ const body = {
+ "avatarIds": avatarIds,
+ };
+ return makeRequest('POST', url, body).then((response) => response.json());
+}
+
+
diff --git a/api/address-book/address-book.html b/api/address-book/address-book.html
new file mode 100644
index 0000000..e3aefcb
--- /dev/null
+++ b/api/address-book/address-book.html
@@ -0,0 +1,183 @@
+
+
+
+ Address book samples
+
+
+
The Address Book API is a central point for any contact that is available to the user.
+ The contact can represent either person's details such as name, phone number or job title,
+ or a shared object with the phone number or e-mail address such as a Virtual Extension
+ or Resource Mailbox.
+