From 444928a957b2a9a0912e66f15ede82728ee5303a Mon Sep 17 00:00:00 2001
From: subalalithafl <79745769+subalalithafl@users.noreply.github.com>
Date: Mon, 15 Nov 2021 13:11:07 +0530
Subject: [PATCH 01/34] Set theme jekyll-theme-hacker

---
 _config.yml |  1 +
 index.md    | 37 +++++++++++++++++++++++++++++++++++++
 2 files changed, 38 insertions(+)
 create mode 100644 _config.yml
 create mode 100644 index.md

diff --git a/_config.yml b/_config.yml
new file mode 100644
index 0000000..fc24e7a
--- /dev/null
+++ b/_config.yml
@@ -0,0 +1 @@
+theme: jekyll-theme-hacker
\ No newline at end of file
diff --git a/index.md b/index.md
new file mode 100644
index 0000000..63fe132
--- /dev/null
+++ b/index.md
@@ -0,0 +1,37 @@
+## Welcome to GitHub Pages
+
+You can use the [editor on GitHub](https://github.com/FirstLanguage/fl-python/edit/gh-pages/index.md) to maintain and preview the content for your website in Markdown files.
+
+Whenever you commit to this repository, GitHub Pages will run [Jekyll](https://jekyllrb.com/) to rebuild the pages in your site, from the content in your Markdown files.
+
+### Markdown
+
+Markdown is a lightweight and easy-to-use syntax for styling your writing. It includes conventions for
+
+```markdown
+Syntax highlighted code block
+
+# Header 1
+## Header 2
+### Header 3
+
+- Bulleted
+- List
+
+1. Numbered
+2. List
+
+**Bold** and _Italic_ and `Code` text
+
+[Link](url) and ![Image](src)
+```
+
+For more details see [Basic writing and formatting syntax](https://docs.github.com/en/github/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax).
+
+### Jekyll Themes
+
+Your Pages site will use the layout and styles from the Jekyll theme you have selected in your [repository settings](https://github.com/FirstLanguage/fl-python/settings/pages). The name of this theme is saved in the Jekyll `_config.yml` configuration file.
+
+### Support or Contact
+
+Having trouble with Pages? Check out our [documentation](https://docs.github.com/categories/github-pages-basics/) or [contact support](https://support.github.com/contact) and we’ll help you sort it out.

From 28c02c01d22db054f82f6f51178c5b3c548e6347 Mon Sep 17 00:00:00 2001
From: subalalithafl <79745769+subalalithafl@users.noreply.github.com>
Date: Mon, 15 Nov 2021 13:11:48 +0530
Subject: [PATCH 02/34] Created a theme


From a456d79d98154ea89612253af08402be91ff4df3 Mon Sep 17 00:00:00 2001
From: Subalalitha <subalalitha@firstlanguage.in>
Date: Mon, 15 Nov 2021 13:14:52 +0530
Subject: [PATCH 03/34] Initial commit to pages

---
 README.md                                     | 130 +++++++++++
 doc/client.md                                 |  38 ++++
 doc/controllers/advanced-ap-is.md             | 155 +++++++++++++
 doc/controllers/basic-ap-is.md                | 210 ++++++++++++++++++
 doc/http-request.md                           |  16 ++
 doc/http-response.md                          |  15 ++
 .../api-classify-426-error-exception.md       |  21 ++
 .../api-lemmatize-426-error-exception.md      |  21 ++
 doc/models/api-morph-426-error-exception.md   |  21 ++
 doc/models/api-ner-response.md                |  27 +++
 doc/models/api-postag-426-error-exception.md  |  21 ++
 doc/models/api-qa-response.md                 |  27 +++
 doc/models/api-stemmer-426-error-exception.md |  21 ++
 doc/models/errors-1.md                        |  25 +++
 doc/models/errors-exception.md                |  21 ++
 doc/models/input-1.md                         |  27 +++
 doc/models/input-2.md                         |  28 +++
 doc/models/input-3.md                         |  27 +++
 doc/models/input-4.md                         |  23 ++
 doc/models/input.md                           |  25 +++
 doc/models/m426-error-exception.md            |  23 ++
 doc/models/orignal-string.md                  |  21 ++
 doc/models/responseclassify.md                |  23 ++
 doc/models/responselemma.md                   |  23 ++
 doc/models/responsemorph.md                   |  21 ++
 doc/models/responsepo.md                      |  23 ++
 doc/models/responsestem.md                    |  23 ++
 doc/models/text-input-classify.md             |  21 ++
 doc/models/text-input-tamil.md                |  21 ++
 doc/models/text-input.md                      |  21 ++
 doc/models/url-input-classify.md              |  21 ++
 doc/models/url-input.md                       |  21 ++
 doc/utility-classes.md                        |  21 ++
 33 files changed, 1182 insertions(+)
 create mode 100644 README.md
 create mode 100644 doc/client.md
 create mode 100644 doc/controllers/advanced-ap-is.md
 create mode 100644 doc/controllers/basic-ap-is.md
 create mode 100644 doc/http-request.md
 create mode 100644 doc/http-response.md
 create mode 100644 doc/models/api-classify-426-error-exception.md
 create mode 100644 doc/models/api-lemmatize-426-error-exception.md
 create mode 100644 doc/models/api-morph-426-error-exception.md
 create mode 100644 doc/models/api-ner-response.md
 create mode 100644 doc/models/api-postag-426-error-exception.md
 create mode 100644 doc/models/api-qa-response.md
 create mode 100644 doc/models/api-stemmer-426-error-exception.md
 create mode 100644 doc/models/errors-1.md
 create mode 100644 doc/models/errors-exception.md
 create mode 100644 doc/models/input-1.md
 create mode 100644 doc/models/input-2.md
 create mode 100644 doc/models/input-3.md
 create mode 100644 doc/models/input-4.md
 create mode 100644 doc/models/input.md
 create mode 100644 doc/models/m426-error-exception.md
 create mode 100644 doc/models/orignal-string.md
 create mode 100644 doc/models/responseclassify.md
 create mode 100644 doc/models/responselemma.md
 create mode 100644 doc/models/responsemorph.md
 create mode 100644 doc/models/responsepo.md
 create mode 100644 doc/models/responsestem.md
 create mode 100644 doc/models/text-input-classify.md
 create mode 100644 doc/models/text-input-tamil.md
 create mode 100644 doc/models/text-input.md
 create mode 100644 doc/models/url-input-classify.md
 create mode 100644 doc/models/url-input.md
 create mode 100644 doc/utility-classes.md

diff --git a/README.md b/README.md
new file mode 100644
index 0000000..62e6674
--- /dev/null
+++ b/README.md
@@ -0,0 +1,130 @@
+
+# Getting Started with FirstLanguage API
+
+## Introduction
+
+Collection of NLP APIs to help developers. We have grouped the APIs under Basic and Advanced. Basic APIs cover all basic text operations like POSTag, Stemmer etc and Advanced cover all the APIs like QA, translation etc.
+
+### OpenAPI Specification
+
+This API is documented in **OpenAPI v3.0 format**.
+In addition to standard
+OpenAPI syntax we use a few [vendor extensions](https://github.com/Redocly/redoc/blob/master/docs/redoc-vendor-extensions.md).
+
+## Building
+
+You must have Python `3 >=3.7, <= 3.9` installed on your system to install and run this SDK. This SDK package depends on other Python packages like nose, jsonpickle etc. These dependencies are defined in the `requirements.txt` file that comes with the SDK. To resolve these dependencies, you can use the PIP Dependency manager. Install it by following steps at [https://pip.pypa.io/en/stable/installing/](https://pip.pypa.io/en/stable/installing/).
+
+Python and PIP executables should be defined in your PATH. Open command prompt and type `pip --version`. This should display the version of the PIP Dependency Manager installed if your installation was successful and the paths are properly defined.
+
+* Using command line, navigate to the directory containing the generated files (including `requirements.txt`) for the SDK.
+* Run the command `pip install -r requirements.txt`. This should install all the required dependencies.
+
+![Building SDK - Step 1](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&step=installDependencies)
+
+## Installation
+
+The following section explains how to use the firstlanguageapi library in a new project.
+
+### 1. Open Project in an IDE
+
+Open up a Python IDE like PyCharm. The basic workflow presented here is also applicable if you prefer using a different editor or IDE.
+
+![Open project in PyCharm - Step 1](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&step=pyCharm)
+
+Click on `Open` in PyCharm to browse to your generated SDK directory and then click `OK`.
+
+![Open project in PyCharm - Step 2](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&step=openProject0)
+
+The project files will be displayed in the side bar as follows:
+
+![Open project in PyCharm - Step 3](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&step=openProject1)
+
+### 2. Add a new Test Project
+
+Create a new directory by right clicking on the solution name as shown below:
+
+![Add a new project in PyCharm - Step 1](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&step=createDirectory)
+
+Name the directory as "test".
+
+![Add a new project in PyCharm - Step 2](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&step=nameDirectory)
+
+Add a python file to this project.
+
+![Add a new project in PyCharm - Step 3](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&step=createFile)
+
+Name it "testSDK".
+
+![Add a new project in PyCharm - Step 4](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&step=nameFile)
+
+In your python file you will be required to import the generated python library using the following code lines
+
+```python
+from firstlanguageapi.firstlanguageapi_client import FirstlanguageapiClient
+```
+
+![Add a new project in PyCharm - Step 5](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&libraryName=firstlanguageapi.firstlanguageapi_client&className=FirstlanguageapiClient&step=projectFiles)
+
+After this you can write code to instantiate an API client object, get a controller object and  make API calls. Sample code is given in the subsequent sections.
+
+### 3. Run the Test Project
+
+To run the file within your test project, right click on your Python file inside your Test project and click on `Run`
+
+![Run Test Project - Step 1](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&libraryName=firstlanguageapi.firstlanguageapi_client&className=FirstlanguageapiClient&step=runProject)
+
+## Test the SDK
+
+You can test the generated SDK and the server with test cases. `unittest` is used as the testing framework and `nose` is used as the test runner. You can run the tests as follows:
+
+Navigate to the root directory of the SDK and run the following commands
+
+```
+pip install -r test-requirements.txt
+nosetests
+```
+
+## Initialize the API Client
+
+**_Note:_** Documentation for the client can be found [here.](/doc/client.md)
+
+The following parameters are configurable for the API Client:
+
+| Parameter | Type | Description |
+|  --- | --- | --- |
+| `apikey` | `string` | API Key can be copied from your dashboard |
+| `http_client_instance` | `HttpClient` | The Http Client passed from the sdk user for making requests |
+| `override_http_client_configuration` | `bool` | The value which determines to override properties of the passed Http Client from the sdk user |
+| `timeout` | `float` | The value to use for connection timeout. <br> **Default: 60** |
+| `max_retries` | `int` | The number of times to retry an endpoint call if it fails. <br> **Default: 0** |
+| `backoff_factor` | `float` | A backoff factor to apply between attempts after the second try. <br> **Default: 2** |
+| `retry_statuses` | `Array of int` | The http statuses on which retry is to be done. <br> **Default: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524]** |
+| `retry_methods` | `Array of string` | The http methods on which retry is to be done. <br> **Default: ['GET', 'PUT']** |
+
+The API client can be initialized as follows:
+
+```python
+from firstlanguageapi.firstlanguageapi_client import FirstlanguageapiClient
+from firstlanguageapi.configuration import Environment
+
+client = FirstlanguageapiClient(
+    apikey='apikey',
+    environment=Environment.PRODUCTION,)
+```
+
+## Authorization
+
+This API uses `Custom Header Signature`.
+
+## List of APIs
+
+* [Basic AP Is](/doc/controllers/basic-ap-is.md)
+* [Advanced AP Is](/doc/controllers/advanced-ap-is.md)
+
+## Classes Documentation
+
+* [Utility Classes](/doc/utility-classes.md)
+* [HttpResponse](/doc/http-response.md)
+* [HttpRequest](/doc/http-request.md)
+
diff --git a/doc/client.md b/doc/client.md
new file mode 100644
index 0000000..f814943
--- /dev/null
+++ b/doc/client.md
@@ -0,0 +1,38 @@
+
+# Client Class Documentation
+
+The following parameters are configurable for the API Client:
+
+| Parameter | Type | Description |
+|  --- | --- | --- |
+| `apikey` | `string` | API Key can be copied from your dashboard |
+| `http_client_instance` | `HttpClient` | The Http Client passed from the sdk user for making requests |
+| `override_http_client_configuration` | `bool` | The value which determines to override properties of the passed Http Client from the sdk user |
+| `timeout` | `float` | The value to use for connection timeout. <br> **Default: 60** |
+| `max_retries` | `int` | The number of times to retry an endpoint call if it fails. <br> **Default: 0** |
+| `backoff_factor` | `float` | A backoff factor to apply between attempts after the second try. <br> **Default: 2** |
+| `retry_statuses` | `Array of int` | The http statuses on which retry is to be done. <br> **Default: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524]** |
+| `retry_methods` | `Array of string` | The http methods on which retry is to be done. <br> **Default: ['GET', 'PUT']** |
+
+The API client can be initialized as follows:
+
+```python
+from firstlanguageapi.firstlanguageapi_client import FirstlanguageapiClient
+from firstlanguageapi.configuration import Environment
+
+client = FirstlanguageapiClient(
+    apikey='apikey',
+    environment=Environment.PRODUCTION,)
+```
+
+## FirstLanguage API Client
+
+The gateway for the SDK. This class acts as a factory for the Controllers and also holds the configuration of the SDK.
+
+## Controllers
+
+| Name | Description |
+|  --- | --- |
+| basic_ap_is | Gets BasicAPIsController |
+| advanced_ap_is | Gets AdvancedAPIsController |
+
diff --git a/doc/controllers/advanced-ap-is.md b/doc/controllers/advanced-ap-is.md
new file mode 100644
index 0000000..8a5e298
--- /dev/null
+++ b/doc/controllers/advanced-ap-is.md
@@ -0,0 +1,155 @@
+# Advanced AP Is
+
+Advanced text processing APIs
+
+```python
+advanced_ap_is_controller = client.advanced_ap_is
+```
+
+## Class Name
+
+`AdvancedAPIsController`
+
+## Methods
+
+* [Get Classification](/doc/controllers/advanced-ap-is.md#get-classification)
+* [Get QA](/doc/controllers/advanced-ap-is.md#get-qa)
+* [Get NER](/doc/controllers/advanced-ap-is.md#get-ner)
+
+
+# Get Classification
+
+# Stemmer : Defintion and it's usage
+
+# Languages covered:
+
+```python
+def get_classification(self,
+                      body)
+```
+
+## Parameters
+
+| Parameter | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `body` | `object` | Body, Required | Add a JSON Input as per the schema defined below |
+
+## Response Type
+
+[`Responseclassify`](/doc/models/responseclassify.md)
+
+## Example Usage
+
+```python
+body = jsonpickle.decode('{"key1":"val1","key2":"val2"}')
+
+result = advanced_ap_is_controller.get_classification(body)
+```
+
+## Errors
+
+| HTTP Status Code | Error Description | Exception Class |
+|  --- | --- | --- |
+| 400 | Error output | [`ErrorsException`](/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`ApiClassify426ErrorException`](/doc/models/api-classify-426-error-exception.md) |
+
+
+# Get QA
+
+# Stemmer : Defintion and it's usage
+
+# Languages covered:
+
+```python
+def get_qa(self,
+          body=None)
+```
+
+## Parameters
+
+| Parameter | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `body` | `object` | Body, Optional | Add a JSON Input as per the schema defined below |
+
+## Response Type
+
+[`ApiQaResponse`](/doc/models/api-qa-response.md)
+
+## Example Usage
+
+```python
+result = advanced_ap_is_controller.get_qa()
+```
+
+## Example Response *(as JSON)*
+
+```json
+{
+  "score": 0.028566665947437286,
+  "start": 0,
+  "end": 20,
+  "answer": "உப்பு, புளி, மிளகாய்"
+}
+```
+
+## Errors
+
+| HTTP Status Code | Error Description | Exception Class |
+|  --- | --- | --- |
+| 400 | Bad Request | [`ErrorsException`](/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`M426ErrorException`](/doc/models/m426-error-exception.md) |
+
+
+# Get NER
+
+# Stemmer : Defintion and it's usage
+
+# Languages covered:
+
+```python
+def get_ner(self,
+           body=None)
+```
+
+## Parameters
+
+| Parameter | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `body` | `object` | Body, Optional | Add a JSON Input as per the schema defined below |
+
+## Response Type
+
+[`List of ApiNerResponse`](/doc/models/api-ner-response.md)
+
+## Example Usage
+
+```python
+result = advanced_ap_is_controller.get_ner()
+```
+
+## Example Response *(as JSON)*
+
+```json
+[
+  {
+    "entity_group": "PER",
+    "word": "محمد",
+    "start": "4",
+    "end": "9"
+  },
+  {
+    "entity_group": "LOC",
+    "word": "برلين",
+    "start": "18",
+    "end": "24"
+  }
+]
+```
+
+## Errors
+
+| HTTP Status Code | Error Description | Exception Class |
+|  --- | --- | --- |
+| 400 | Bad Request | [`ErrorsException`](/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`M426ErrorException`](/doc/models/m426-error-exception.md) |
+
diff --git a/doc/controllers/basic-ap-is.md b/doc/controllers/basic-ap-is.md
new file mode 100644
index 0000000..70d4f6a
--- /dev/null
+++ b/doc/controllers/basic-ap-is.md
@@ -0,0 +1,210 @@
+# Basic AP Is
+
+Basic NLP text processing APIs
+
+```python
+basic_ap_is_controller = client.basic_ap_is
+```
+
+## Class Name
+
+`BasicAPIsController`
+
+## Methods
+
+* [Get Stemmer](/doc/controllers/basic-ap-is.md#get-stemmer)
+* [Get Lemma](/doc/controllers/basic-ap-is.md#get-lemma)
+* [Get Morph](/doc/controllers/basic-ap-is.md#get-morph)
+* [Get Postag](/doc/controllers/basic-ap-is.md#get-postag)
+
+
+# Get Stemmer
+
+# Stemmer : Defintion and it's usage
+
+A word takes different inflectional forms. For instance, the word, "Compute" can take the forms, "computing", "computation",  and "computerize". The NLP applications such as Search Engines and Information Extraction would want to store the base or stem of the word, i.e "Compute" instead of accomodating all its inflected forms. This will yield in dimensionality reduction and incerases the efficiency of the system. The stemmer cuts the prefix and suffix of a word.
+
+# Languages covered:
+
+Our stemmer works for the following  26 languages. Our stemmer works using the snowball stemmer algorithm which is also known as Porter 2 Stemming algorithm.
+
+1. Tamil
+2. Hindi
+3. English
+4. Arabic
+5. Basque
+6. Catalan
+7. Danish
+8. Dutch
+9. Finnish
+10. French
+11. German
+12. Greek
+13. Hungarian
+14. Indonesian
+15. Irish
+16. Italian
+17. Lithuanian
+18. Nepali
+19. Norwegian
+20. Portuguese
+21. Romanian
+22. Russian
+23. Serbian
+24. Spanish
+25. Swedish
+26. Turkish
+
+```python
+def get_stemmer(self,
+               body)
+```
+
+## Parameters
+
+| Parameter | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `body` | `object` | Body, Required | Add a JSON Input as per the schema defined below |
+
+## Response Type
+
+[`List of Responsestem`](/doc/models/responsestem.md)
+
+## Example Usage
+
+```python
+body = jsonpickle.decode('{"key1":"val1","key2":"val2"}')
+
+result = basic_ap_is_controller.get_stemmer(body)
+```
+
+## Errors
+
+| HTTP Status Code | Error Description | Exception Class |
+|  --- | --- | --- |
+| 400 | Error output | [`ErrorsException`](/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`ApiStemmer426ErrorException`](/doc/models/api-stemmer-426-error-exception.md) |
+
+
+# Get Lemma
+
+# Stemmer : Defintion and it's usage
+
+# Languages covered:
+
+```python
+def get_lemma(self,
+             body)
+```
+
+## Parameters
+
+| Parameter | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `body` | `object` | Body, Required | Add a JSON Input as per the schema defined below |
+
+## Response Type
+
+[`List of Responselemma`](/doc/models/responselemma.md)
+
+## Example Usage
+
+```python
+body = jsonpickle.decode('{"key1":"val1","key2":"val2"}')
+
+result = basic_ap_is_controller.get_lemma(body)
+```
+
+## Errors
+
+| HTTP Status Code | Error Description | Exception Class |
+|  --- | --- | --- |
+| 400 | Error output | [`ErrorsException`](/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`ApiLemmatize426ErrorException`](/doc/models/api-lemmatize-426-error-exception.md) |
+
+
+# Get Morph
+
+# Stemmer : Defintion and it's usage
+
+# Languages covered:
+
+```python
+def get_morph(self,
+             body)
+```
+
+## Parameters
+
+| Parameter | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `body` | `object` | Body, Required | Add a JSON Input as per the schema defined below |
+
+## Response Type
+
+[`Responsemorph`](/doc/models/responsemorph.md)
+
+## Example Usage
+
+```python
+body = jsonpickle.decode('{"key1":"val1","key2":"val2"}')
+
+result = basic_ap_is_controller.get_morph(body)
+```
+
+## Errors
+
+| HTTP Status Code | Error Description | Exception Class |
+|  --- | --- | --- |
+| 400 | Error output | [`ErrorsException`](/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`ApiMorph426ErrorException`](/doc/models/api-morph-426-error-exception.md) |
+
+
+# Get Postag
+
+**So, What is a POS Tagger?**
+
+Parts Of Speech Tagger, which is shortly known as POS Tagger is a software that automatically finds the word classes, when a text input is given. The text input can be a word, a sentence or a set of sentences. The word classes are the grammatical categories such as, Noun, Verb, Adverb etc. These category assigned to each word is a tag. A set of tags, each indicating a grammatical category is called, "tagsets". POS tagging is a mandatory pre processing for most of the Natural Language Processing Applications such as, Information Extraction, Information Retreival systems and Summary generation systems.
+
+**Is POS Tagger, a language-independent software?**
+
+No. A POS Tagger is a language-dependent software as the grammar rules will differ for every language. For instance, A word ending with "ing" might indicate a Verb" in English but this will not be applicable for other languages.
+
+**For what languages, our  POS Tagger API will work?**
+
+At present, our POS Tagger API works for English and Tami Languages. Soon we will extend the APIs to accomodate more languages.
+
+**How Precise are our POS Tagger API?**
+
+will update accuracy metrics soon .....
+
+```python
+def get_postag(self,
+              body)
+```
+
+## Parameters
+
+| Parameter | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `body` | `object` | Body, Required | Add a JSON Input as per the schema defined below |
+
+## Response Type
+
+[`List of Responsepo`](/doc/models/responsepo.md)
+
+## Example Usage
+
+```python
+body = jsonpickle.decode('{"key1":"val1","key2":"val2"}')
+
+result = basic_ap_is_controller.get_postag(body)
+```
+
+## Errors
+
+| HTTP Status Code | Error Description | Exception Class |
+|  --- | --- | --- |
+| 400 | Error output | [`ErrorsException`](/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`ApiPostag426ErrorException`](/doc/models/api-postag-426-error-exception.md) |
+
diff --git a/doc/http-request.md b/doc/http-request.md
new file mode 100644
index 0000000..2c16378
--- /dev/null
+++ b/doc/http-request.md
@@ -0,0 +1,16 @@
+
+# HttpRequest
+
+Represents a single Http Request.
+
+## Parameters
+
+| Name | Type | Tag | Description |
+|  --- | --- | --- | --- |
+| http_method | HttpMethodEnum |  | The HTTP method of the request. |
+| query_url | str |  | The endpoint URL for the API request. |
+| headers | dict | optional | Request headers. |
+| query_parameters | dict | optional | Query parameters to add in the URL. |
+| parameters | dict &#124; str | optional | Request body, either as a serialized string or else a list of parameters to form encode. |
+| files | dict | optional | Files to be sent with the request. |
+
diff --git a/doc/http-response.md b/doc/http-response.md
new file mode 100644
index 0000000..7bb56d4
--- /dev/null
+++ b/doc/http-response.md
@@ -0,0 +1,15 @@
+
+# HttpResponse
+
+Http response received.
+
+## Parameters
+
+| Name | Type | Description |
+|  --- | --- | --- |
+| status_code | int | The status code returned by the server. |
+| reason_phrase | str | The reason phrase returned by the server. |
+| headers | dict | Response headers. |
+| text | str | Response body. |
+| request | HttpRequest | The request that resulted in this response. |
+
diff --git a/doc/models/api-classify-426-error-exception.md b/doc/models/api-classify-426-error-exception.md
new file mode 100644
index 0000000..c7d4153
--- /dev/null
+++ b/doc/models/api-classify-426-error-exception.md
@@ -0,0 +1,21 @@
+
+# Api Classify 426 Error Exception
+
+## Structure
+
+`ApiClassify426ErrorException`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `message` | `string` | Optional | - |
+
+## Example (as JSON)
+
+```json
+{
+  "message": null
+}
+```
+
diff --git a/doc/models/api-lemmatize-426-error-exception.md b/doc/models/api-lemmatize-426-error-exception.md
new file mode 100644
index 0000000..fc788a0
--- /dev/null
+++ b/doc/models/api-lemmatize-426-error-exception.md
@@ -0,0 +1,21 @@
+
+# Api Lemmatize 426 Error Exception
+
+## Structure
+
+`ApiLemmatize426ErrorException`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `message` | `string` | Optional | - |
+
+## Example (as JSON)
+
+```json
+{
+  "message": null
+}
+```
+
diff --git a/doc/models/api-morph-426-error-exception.md b/doc/models/api-morph-426-error-exception.md
new file mode 100644
index 0000000..934ce65
--- /dev/null
+++ b/doc/models/api-morph-426-error-exception.md
@@ -0,0 +1,21 @@
+
+# Api Morph 426 Error Exception
+
+## Structure
+
+`ApiMorph426ErrorException`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `message` | `string` | Optional | - |
+
+## Example (as JSON)
+
+```json
+{
+  "message": null
+}
+```
+
diff --git a/doc/models/api-ner-response.md b/doc/models/api-ner-response.md
new file mode 100644
index 0000000..a9a3681
--- /dev/null
+++ b/doc/models/api-ner-response.md
@@ -0,0 +1,27 @@
+
+# Api Ner Response
+
+## Structure
+
+`ApiNerResponse`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `entity_group` | `string` | Required | Entity group inferred.<br>**Constraints**: *Minimum Length*: `1` |
+| `word` | `string` | Required | Corresponding word<br>**Constraints**: *Minimum Length*: `1` |
+| `start` | `string` | Required | Start position of the entity in the given input.<br>**Constraints**: *Minimum Length*: `1` |
+| `end` | `string` | Required | Start position of the entity in the given input.<br>**Constraints**: *Minimum Length*: `1` |
+
+## Example (as JSON)
+
+```json
+{
+  "entity_group": "entity_group6",
+  "word": "word2",
+  "start": "start4",
+  "end": "end8"
+}
+```
+
diff --git a/doc/models/api-postag-426-error-exception.md b/doc/models/api-postag-426-error-exception.md
new file mode 100644
index 0000000..33e6e42
--- /dev/null
+++ b/doc/models/api-postag-426-error-exception.md
@@ -0,0 +1,21 @@
+
+# Api Postag 426 Error Exception
+
+## Structure
+
+`ApiPostag426ErrorException`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `message` | `string` | Optional | - |
+
+## Example (as JSON)
+
+```json
+{
+  "message": null
+}
+```
+
diff --git a/doc/models/api-qa-response.md b/doc/models/api-qa-response.md
new file mode 100644
index 0000000..23288c8
--- /dev/null
+++ b/doc/models/api-qa-response.md
@@ -0,0 +1,27 @@
+
+# Api Qa Response
+
+## Structure
+
+`ApiQaResponse`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `score` | `float` | Required | What is the confident score of the answer |
+| `start` | `float` | Required | Start position of the answer in the context |
+| `end` | `float` | Required | End position of the answer in the context |
+| `answer` | `string` | Required | Answer to the question.<br>**Constraints**: *Minimum Length*: `1` |
+
+## Example (as JSON)
+
+```json
+{
+  "score": 147.4,
+  "start": 224.84,
+  "end": 12.78,
+  "answer": "answer4"
+}
+```
+
diff --git a/doc/models/api-stemmer-426-error-exception.md b/doc/models/api-stemmer-426-error-exception.md
new file mode 100644
index 0000000..09b02ff
--- /dev/null
+++ b/doc/models/api-stemmer-426-error-exception.md
@@ -0,0 +1,21 @@
+
+# Api Stemmer 426 Error Exception
+
+## Structure
+
+`ApiStemmer426ErrorException`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `message` | `string` | Optional | - |
+
+## Example (as JSON)
+
+```json
+{
+  "message": null
+}
+```
+
diff --git a/doc/models/errors-1.md b/doc/models/errors-1.md
new file mode 100644
index 0000000..b1886e7
--- /dev/null
+++ b/doc/models/errors-1.md
@@ -0,0 +1,25 @@
+
+# Errors 1
+
+## Structure
+
+`Errors1`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `msg` | `string` | Optional | - |
+| `param` | `string` | Optional | - |
+| `location` | `string` | Optional | - |
+
+## Example (as JSON)
+
+```json
+{
+  "msg": null,
+  "param": null,
+  "location": null
+}
+```
+
diff --git a/doc/models/errors-exception.md b/doc/models/errors-exception.md
new file mode 100644
index 0000000..ff1263e
--- /dev/null
+++ b/doc/models/errors-exception.md
@@ -0,0 +1,21 @@
+
+# Errors Exception
+
+## Structure
+
+`ErrorsException`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `errors` | [`List of Errors1`](/doc/models/errors-1.md) | Optional | - |
+
+## Example (as JSON)
+
+```json
+{
+  "errors": null
+}
+```
+
diff --git a/doc/models/input-1.md b/doc/models/input-1.md
new file mode 100644
index 0000000..151f72c
--- /dev/null
+++ b/doc/models/input-1.md
@@ -0,0 +1,27 @@
+
+# Input 1
+
+Text for processing will be read from the given URL. Only HTML pages or text pages will be processed at this time.
+
+## Structure
+
+`Input1`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `url` | `string` | Optional | URL where the content is hosted. |
+| `lang` | `string` | Optional | Allowed language code. Refer Allowed languages section. |
+| `content_type` | `string` | Optional | Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing. |
+
+## Example (as JSON)
+
+```json
+{
+  "url": null,
+  "lang": null,
+  "contentType": null
+}
+```
+
diff --git a/doc/models/input-2.md b/doc/models/input-2.md
new file mode 100644
index 0000000..be7ee85
--- /dev/null
+++ b/doc/models/input-2.md
@@ -0,0 +1,28 @@
+
+# Input 2
+
+## Structure
+
+`Input2`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `context` | `string` | Required | Word or sentence or a paragraph. Special characters will not be stripped. |
+| `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
+| `labels` | `List of object` | Required | Labels to classify |
+
+## Example (as JSON)
+
+```json
+{
+  "context": "Let us begin the API development.",
+  "lang": "en",
+  "labels": [
+    "good",
+    "bad"
+  ]
+}
+```
+
diff --git a/doc/models/input-3.md b/doc/models/input-3.md
new file mode 100644
index 0000000..c443b60
--- /dev/null
+++ b/doc/models/input-3.md
@@ -0,0 +1,27 @@
+
+# Input 3
+
+## Structure
+
+`Input3`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `url` | `string` | Optional | URL where the content is hosted. |
+| `lang` | `string` | Optional | Allowed language code. Refer Allowed languages section. |
+| `content_type` | `string` | Optional | Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing. |
+| `labels` | `List of object` | Optional | Labels to classify |
+
+## Example (as JSON)
+
+```json
+{
+  "url": null,
+  "lang": null,
+  "contentType": null,
+  "labels": null
+}
+```
+
diff --git a/doc/models/input-4.md b/doc/models/input-4.md
new file mode 100644
index 0000000..9c8ad1b
--- /dev/null
+++ b/doc/models/input-4.md
@@ -0,0 +1,23 @@
+
+# Input 4
+
+## Structure
+
+`Input4`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `text` | `string` | Required | Word or sentence or a paragraph. Special characters will not be stripped. |
+| `lang` | `string` | Required | Allowed ISO language code. Refer languages section. |
+
+## Example (as JSON)
+
+```json
+{
+  "text": "அவள் வேகமாக ஓடினாள்",
+  "lang": "ta"
+}
+```
+
diff --git a/doc/models/input.md b/doc/models/input.md
new file mode 100644
index 0000000..1a61b93
--- /dev/null
+++ b/doc/models/input.md
@@ -0,0 +1,25 @@
+
+# Input
+
+Direct Text Input
+
+## Structure
+
+`Input`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `text` | `string` | Required | Word or sentence or a paragraph. Special characters will not be stripped. |
+| `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
+
+## Example (as JSON)
+
+```json
+{
+  "text": "Let us begin the API development.",
+  "lang": "en"
+}
+```
+
diff --git a/doc/models/m426-error-exception.md b/doc/models/m426-error-exception.md
new file mode 100644
index 0000000..b2a9063
--- /dev/null
+++ b/doc/models/m426-error-exception.md
@@ -0,0 +1,23 @@
+
+# M426 Error Exception
+
+Please use HTTPS protocol
+
+## Structure
+
+`M426ErrorException`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `message` | `string` | Optional | - |
+
+## Example (as JSON)
+
+```json
+{
+  "message": null
+}
+```
+
diff --git a/doc/models/orignal-string.md b/doc/models/orignal-string.md
new file mode 100644
index 0000000..5e27a8d
--- /dev/null
+++ b/doc/models/orignal-string.md
@@ -0,0 +1,21 @@
+
+# Orignal String
+
+## Structure
+
+`OrignalString`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `morph_attr` | `List of string` | Optional | - |
+
+## Example (as JSON)
+
+```json
+{
+  "morph_attr": null
+}
+```
+
diff --git a/doc/models/responseclassify.md b/doc/models/responseclassify.md
new file mode 100644
index 0000000..0e4560a
--- /dev/null
+++ b/doc/models/responseclassify.md
@@ -0,0 +1,23 @@
+
+# Responseclassify
+
+## Structure
+
+`Responseclassify`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `labels` | `List of string` | Optional | - |
+| `scores` | `List of float` | Optional | - |
+
+## Example (as JSON)
+
+```json
+{
+  "labels": null,
+  "scores": null
+}
+```
+
diff --git a/doc/models/responselemma.md b/doc/models/responselemma.md
new file mode 100644
index 0000000..9c25d03
--- /dev/null
+++ b/doc/models/responselemma.md
@@ -0,0 +1,23 @@
+
+# Responselemma
+
+## Structure
+
+`Responselemma`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `orginal_text` | `string` | Optional | - |
+| `lemmatized` | `string` | Optional | - |
+
+## Example (as JSON)
+
+```json
+{
+  "orginalText": null,
+  "lemmatized": null
+}
+```
+
diff --git a/doc/models/responsemorph.md b/doc/models/responsemorph.md
new file mode 100644
index 0000000..2189224
--- /dev/null
+++ b/doc/models/responsemorph.md
@@ -0,0 +1,21 @@
+
+# Responsemorph
+
+## Structure
+
+`Responsemorph`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `orignal_string` | [`OrignalString`](/doc/models/orignal-string.md) | Optional | - |
+
+## Example (as JSON)
+
+```json
+{
+  "orignalString": null
+}
+```
+
diff --git a/doc/models/responsepo.md b/doc/models/responsepo.md
new file mode 100644
index 0000000..8ce2c79
--- /dev/null
+++ b/doc/models/responsepo.md
@@ -0,0 +1,23 @@
+
+# Responsepo
+
+## Structure
+
+`Responsepo`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `orginal_text` | `string` | Optional | - |
+| `postag` | `string` | Optional | - |
+
+## Example (as JSON)
+
+```json
+{
+  "orginalText": null,
+  "postag": null
+}
+```
+
diff --git a/doc/models/responsestem.md b/doc/models/responsestem.md
new file mode 100644
index 0000000..e8e0e7d
--- /dev/null
+++ b/doc/models/responsestem.md
@@ -0,0 +1,23 @@
+
+# Responsestem
+
+## Structure
+
+`Responsestem`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `orginal_text` | `string` | Optional | - |
+| `stem` | `string` | Optional | - |
+
+## Example (as JSON)
+
+```json
+{
+  "orginalText": null,
+  "stem": null
+}
+```
+
diff --git a/doc/models/text-input-classify.md b/doc/models/text-input-classify.md
new file mode 100644
index 0000000..bf63ad5
--- /dev/null
+++ b/doc/models/text-input-classify.md
@@ -0,0 +1,21 @@
+
+# Text Input Classify
+
+## Structure
+
+`TextInputClassify`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `input` | [`Input2`](/doc/models/input-2.md) | Optional | - |
+
+## Example (as JSON)
+
+```json
+{
+  "input": null
+}
+```
+
diff --git a/doc/models/text-input-tamil.md b/doc/models/text-input-tamil.md
new file mode 100644
index 0000000..1e5801f
--- /dev/null
+++ b/doc/models/text-input-tamil.md
@@ -0,0 +1,21 @@
+
+# Text Input Tamil
+
+## Structure
+
+`TextInputTamil`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `input` | [`Input4`](/doc/models/input-4.md) | Optional | - |
+
+## Example (as JSON)
+
+```json
+{
+  "input": null
+}
+```
+
diff --git a/doc/models/text-input.md b/doc/models/text-input.md
new file mode 100644
index 0000000..aec2aa3
--- /dev/null
+++ b/doc/models/text-input.md
@@ -0,0 +1,21 @@
+
+# Text Input
+
+## Structure
+
+`TextInput`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `input` | [`Input`](/doc/models/input.md) | Optional | Direct Text Input |
+
+## Example (as JSON)
+
+```json
+{
+  "input": null
+}
+```
+
diff --git a/doc/models/url-input-classify.md b/doc/models/url-input-classify.md
new file mode 100644
index 0000000..d977ac3
--- /dev/null
+++ b/doc/models/url-input-classify.md
@@ -0,0 +1,21 @@
+
+# URL Input Classify
+
+## Structure
+
+`URLInputClassify`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `input` | [`Input3`](/doc/models/input-3.md) | Optional | - |
+
+## Example (as JSON)
+
+```json
+{
+  "input": null
+}
+```
+
diff --git a/doc/models/url-input.md b/doc/models/url-input.md
new file mode 100644
index 0000000..6482217
--- /dev/null
+++ b/doc/models/url-input.md
@@ -0,0 +1,21 @@
+
+# URL Input
+
+## Structure
+
+`URLInput`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `input` | [`Input1`](/doc/models/input-1.md) | Optional | Text for processing will be read from the given URL. Only HTML pages or text pages will be processed at this time. |
+
+## Example (as JSON)
+
+```json
+{
+  "input": null
+}
+```
+
diff --git a/doc/utility-classes.md b/doc/utility-classes.md
new file mode 100644
index 0000000..c09e079
--- /dev/null
+++ b/doc/utility-classes.md
@@ -0,0 +1,21 @@
+
+# Utility Classes Documentation
+
+## ApiHelper
+
+A utility class for processing API Calls. Also contains classes for supporting standard datetime formats.
+
+### Methods
+
+| Name | Description |
+|  --- | --- |
+| json_deserialize | Deserializes a JSON string to a Python dictionary. |
+
+### Classes
+
+| Name | Description |
+|  --- | --- |
+| HttpDateTime | A wrapper for datetime to support HTTP date format. |
+| UnixDateTime | A wrapper for datetime to support Unix date format. |
+| RFC3339DateTime | A wrapper for datetime to support RFC3339 format. |
+

From fafca0cb85d23d1bd611b223e21cc3f79e945627 Mon Sep 17 00:00:00 2001
From: Subalalitha <subalalitha@firstlanguage.in>
Date: Mon, 15 Nov 2021 13:15:31 +0530
Subject: [PATCH 04/34] Initial commit to pages with readme

---
 index.md | 135 ++++++++++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 114 insertions(+), 21 deletions(-)

diff --git a/index.md b/index.md
index 63fe132..d540a1d 100644
--- a/index.md
+++ b/index.md
@@ -1,37 +1,130 @@
-## Welcome to GitHub Pages
 
-You can use the [editor on GitHub](https://github.com/FirstLanguage/fl-python/edit/gh-pages/index.md) to maintain and preview the content for your website in Markdown files.
+# Getting Started with FirstLanguage API
 
-Whenever you commit to this repository, GitHub Pages will run [Jekyll](https://jekyllrb.com/) to rebuild the pages in your site, from the content in your Markdown files.
+## Introduction
 
-### Markdown
+Collection of NLP APIs to help developers. We have grouped the APIs under Basic and Advanced. Basic APIs cover all basic text operations like POSTag, Stemmer etc and Advanced cover all the APIs like QA, translation etc.
 
-Markdown is a lightweight and easy-to-use syntax for styling your writing. It includes conventions for
+### OpenAPI Specification
 
-```markdown
-Syntax highlighted code block
+This API is documented in **OpenAPI v3.0 format**.
+In addition to standard
+OpenAPI syntax we use a few [vendor extensions](https://github.com/Redocly/redoc/blob/master/docs/redoc-vendor-extensions.md).
 
-# Header 1
-## Header 2
-### Header 3
+## Building
 
-- Bulleted
-- List
+You must have Python `3 >=3.7, <= 3.9` installed on your system to install and run this SDK. This SDK package depends on other Python packages like nose, jsonpickle etc. These dependencies are defined in the `requirements.txt` file that comes with the SDK. To resolve these dependencies, you can use the PIP Dependency manager. Install it by following steps at [https://pip.pypa.io/en/stable/installing/](https://pip.pypa.io/en/stable/installing/).
 
-1. Numbered
-2. List
+Python and PIP executables should be defined in your PATH. Open command prompt and type `pip --version`. This should display the version of the PIP Dependency Manager installed if your installation was successful and the paths are properly defined.
 
-**Bold** and _Italic_ and `Code` text
+* Using command line, navigate to the directory containing the generated files (including `requirements.txt`) for the SDK.
+* Run the command `pip install -r requirements.txt`. This should install all the required dependencies.
 
-[Link](url) and ![Image](src)
+![Building SDK - Step 1](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&step=installDependencies)
+
+## Installation
+
+The following section explains how to use the firstlanguageapi library in a new project.
+
+### 1. Open Project in an IDE
+
+Open up a Python IDE like PyCharm. The basic workflow presented here is also applicable if you prefer using a different editor or IDE.
+
+![Open project in PyCharm - Step 1](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&step=pyCharm)
+
+Click on `Open` in PyCharm to browse to your generated SDK directory and then click `OK`.
+
+![Open project in PyCharm - Step 2](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&step=openProject0)
+
+The project files will be displayed in the side bar as follows:
+
+![Open project in PyCharm - Step 3](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&step=openProject1)
+
+### 2. Add a new Test Project
+
+Create a new directory by right clicking on the solution name as shown below:
+
+![Add a new project in PyCharm - Step 1](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&step=createDirectory)
+
+Name the directory as "test".
+
+![Add a new project in PyCharm - Step 2](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&step=nameDirectory)
+
+Add a python file to this project.
+
+![Add a new project in PyCharm - Step 3](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&step=createFile)
+
+Name it "testSDK".
+
+![Add a new project in PyCharm - Step 4](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&step=nameFile)
+
+In your python file you will be required to import the generated python library using the following code lines
+
+```python
+from firstlanguageapi.firstlanguageapi_client import FirstlanguageapiClient
 ```
 
-For more details see [Basic writing and formatting syntax](https://docs.github.com/en/github/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax).
+![Add a new project in PyCharm - Step 5](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&libraryName=firstlanguageapi.firstlanguageapi_client&className=FirstlanguageapiClient&step=projectFiles)
+
+After this you can write code to instantiate an API client object, get a controller object and  make API calls. Sample code is given in the subsequent sections.
+
+### 3. Run the Test Project
+
+To run the file within your test project, right click on your Python file inside your Test project and click on `Run`
+
+![Run Test Project - Step 1](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&libraryName=firstlanguageapi.firstlanguageapi_client&className=FirstlanguageapiClient&step=runProject)
+
+## Test the SDK
+
+You can test the generated SDK and the server with test cases. `unittest` is used as the testing framework and `nose` is used as the test runner. You can run the tests as follows:
+
+Navigate to the root directory of the SDK and run the following commands
+
+```
+pip install -r test-requirements.txt
+nosetests
+```
+
+## Initialize the API Client
+
+**_Note:_** Documentation for the client can be found [here.](/doc/client.md)
+
+The following parameters are configurable for the API Client:
+
+| Parameter | Type | Description |
+|  --- | --- | --- |
+| `apikey` | `string` | API Key can be copied from your dashboard |
+| `http_client_instance` | `HttpClient` | The Http Client passed from the sdk user for making requests |
+| `override_http_client_configuration` | `bool` | The value which determines to override properties of the passed Http Client from the sdk user |
+| `timeout` | `float` | The value to use for connection timeout. <br> **Default: 60** |
+| `max_retries` | `int` | The number of times to retry an endpoint call if it fails. <br> **Default: 0** |
+| `backoff_factor` | `float` | A backoff factor to apply between attempts after the second try. <br> **Default: 2** |
+| `retry_statuses` | `Array of int` | The http statuses on which retry is to be done. <br> **Default: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524]** |
+| `retry_methods` | `Array of string` | The http methods on which retry is to be done. <br> **Default: ['GET', 'PUT']** |
+
+The API client can be initialized as follows:
+
+```python
+from firstlanguageapi.firstlanguageapi_client import FirstlanguageapiClient
+from firstlanguageapi.configuration import Environment
+
+client = FirstlanguageapiClient(
+    apikey='apikey',
+    environment=Environment.PRODUCTION,)
+```
+
+## Authorization
+
+This API uses `Custom Header Signature`.
+
+## List of APIs
 
-### Jekyll Themes
+* [Basic AP Is](/doc/controllers/basic-ap-is.md)
+* [Advanced AP Is](/doc/controllers/advanced-ap-is.md)
 
-Your Pages site will use the layout and styles from the Jekyll theme you have selected in your [repository settings](https://github.com/FirstLanguage/fl-python/settings/pages). The name of this theme is saved in the Jekyll `_config.yml` configuration file.
+## Classes Documentation
 
-### Support or Contact
+* [Utility Classes](/doc/utility-classes.md)
+* [HttpResponse](/doc/http-response.md)
+* [HttpRequest](/doc/http-request.md)
 
-Having trouble with Pages? Check out our [documentation](https://docs.github.com/categories/github-pages-basics/) or [contact support](https://support.github.com/contact) and we’ll help you sort it out.

From 0ebab5aae4dd6751559449fce47632e4fb2606a5 Mon Sep 17 00:00:00 2001
From: Subalalitha <subalalitha@firstlanguage.in>
Date: Mon, 15 Nov 2021 13:22:57 +0530
Subject: [PATCH 05/34] Relative link change

---
 doc/controllers/advanced-ap-is.md |  38 ++++----
 doc/controllers/basic-ap-is.md    | 142 +++++++++++++++---------------
 doc/models/errors-exception.md    |   2 +-
 doc/models/responsemorph.md       |   2 +-
 doc/models/text-input-classify.md |   2 +-
 doc/models/text-input-tamil.md    |   2 +-
 doc/models/text-input.md          |   2 +-
 doc/models/url-input-classify.md  |   2 +-
 doc/models/url-input.md           |   2 +-
 9 files changed, 97 insertions(+), 97 deletions(-)

diff --git a/doc/controllers/advanced-ap-is.md b/doc/controllers/advanced-ap-is.md
index 8a5e298..7147e81 100644
--- a/doc/controllers/advanced-ap-is.md
+++ b/doc/controllers/advanced-ap-is.md
@@ -12,15 +12,15 @@ advanced_ap_is_controller = client.advanced_ap_is
 
 ## Methods
 
-* [Get Classification](/doc/controllers/advanced-ap-is.md#get-classification)
-* [Get QA](/doc/controllers/advanced-ap-is.md#get-qa)
-* [Get NER](/doc/controllers/advanced-ap-is.md#get-ner)
+* [Get Classification](/fl-python/doc/controllers/advanced-ap-is.md#get-classification)
+* [Get QA](/fl-python/doc/controllers/advanced-ap-is.md#get-qa)
+* [Get NER](/fl-python/doc/controllers/advanced-ap-is.md#get-ner)
 
 
 # Get Classification
 
-# Stemmer : Defintion and it's usage
-
+# Stemmer : Defintion and it's usage
+
 # Languages covered:
 
 ```python
@@ -36,12 +36,12 @@ def get_classification(self,
 
 ## Response Type
 
-[`Responseclassify`](/doc/models/responseclassify.md)
+[`Responseclassify`](/fl-python/doc/models/responseclassify.md)
 
 ## Example Usage
 
 ```python
-body = jsonpickle.decode('{"key1":"val1","key2":"val2"}')
+body = jsonpickle.decode('{"key1":"val1","key2":"val2"}')
 
 result = advanced_ap_is_controller.get_classification(body)
 ```
@@ -50,14 +50,14 @@ result = advanced_ap_is_controller.get_classification(body)
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Error output | [`ErrorsException`](/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`ApiClassify426ErrorException`](/doc/models/api-classify-426-error-exception.md) |
+| 400 | Error output | [`ErrorsException`](/fl-python/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`ApiClassify426ErrorException`](/fl-python/doc/models/api-classify-426-error-exception.md) |
 
 
 # Get QA
 
-# Stemmer : Defintion and it's usage
-
+# Stemmer : Defintion and it's usage
+
 # Languages covered:
 
 ```python
@@ -73,7 +73,7 @@ def get_qa(self,
 
 ## Response Type
 
-[`ApiQaResponse`](/doc/models/api-qa-response.md)
+[`ApiQaResponse`](/fl-python/doc/models/api-qa-response.md)
 
 ## Example Usage
 
@@ -96,14 +96,14 @@ result = advanced_ap_is_controller.get_qa()
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Bad Request | [`ErrorsException`](/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`M426ErrorException`](/doc/models/m426-error-exception.md) |
+| 400 | Bad Request | [`ErrorsException`](/fl-python/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`M426ErrorException`](/fl-python/doc/models/m426-error-exception.md) |
 
 
 # Get NER
 
-# Stemmer : Defintion and it's usage
-
+# Stemmer : Defintion and it's usage
+
 # Languages covered:
 
 ```python
@@ -119,7 +119,7 @@ def get_ner(self,
 
 ## Response Type
 
-[`List of ApiNerResponse`](/doc/models/api-ner-response.md)
+[`List of ApiNerResponse`](/fl-python/doc/models/api-ner-response.md)
 
 ## Example Usage
 
@@ -150,6 +150,6 @@ result = advanced_ap_is_controller.get_ner()
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Bad Request | [`ErrorsException`](/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`M426ErrorException`](/doc/models/m426-error-exception.md) |
+| 400 | Bad Request | [`ErrorsException`](/fl-python/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`M426ErrorException`](/fl-python/doc/models/m426-error-exception.md) |
 
diff --git a/doc/controllers/basic-ap-is.md b/doc/controllers/basic-ap-is.md
index 70d4f6a..2a2e4fe 100644
--- a/doc/controllers/basic-ap-is.md
+++ b/doc/controllers/basic-ap-is.md
@@ -12,47 +12,47 @@ basic_ap_is_controller = client.basic_ap_is
 
 ## Methods
 
-* [Get Stemmer](/doc/controllers/basic-ap-is.md#get-stemmer)
-* [Get Lemma](/doc/controllers/basic-ap-is.md#get-lemma)
-* [Get Morph](/doc/controllers/basic-ap-is.md#get-morph)
-* [Get Postag](/doc/controllers/basic-ap-is.md#get-postag)
+* [Get Stemmer](/fl-python/doc/controllers/basic-ap-is.md#get-stemmer)
+* [Get Lemma](/fl-python/doc/controllers/basic-ap-is.md#get-lemma)
+* [Get Morph](/fl-python/doc/controllers/basic-ap-is.md#get-morph)
+* [Get Postag](/fl-python/doc/controllers/basic-ap-is.md#get-postag)
 
 
 # Get Stemmer
 
-# Stemmer : Defintion and it's usage
-
-A word takes different inflectional forms. For instance, the word, "Compute" can take the forms, "computing", "computation",  and "computerize". The NLP applications such as Search Engines and Information Extraction would want to store the base or stem of the word, i.e "Compute" instead of accomodating all its inflected forms. This will yield in dimensionality reduction and incerases the efficiency of the system. The stemmer cuts the prefix and suffix of a word.
-
-# Languages covered:
-
-Our stemmer works for the following  26 languages. Our stemmer works using the snowball stemmer algorithm which is also known as Porter 2 Stemming algorithm.
-
-1. Tamil
-2. Hindi
-3. English
-4. Arabic
-5. Basque
-6. Catalan
-7. Danish
-8. Dutch
-9. Finnish
-10. French
-11. German
-12. Greek
-13. Hungarian
-14. Indonesian
-15. Irish
-16. Italian
-17. Lithuanian
-18. Nepali
-19. Norwegian
-20. Portuguese
-21. Romanian
-22. Russian
-23. Serbian
-24. Spanish
-25. Swedish
+# Stemmer : Defintion and it's usage
+
+A word takes different inflectional forms. For instance, the word, "Compute" can take the forms, "computing", "computation",  and "computerize". The NLP applications such as Search Engines and Information Extraction would want to store the base or stem of the word, i.e "Compute" instead of accomodating all its inflected forms. This will yield in dimensionality reduction and incerases the efficiency of the system. The stemmer cuts the prefix and suffix of a word.
+
+# Languages covered:
+
+Our stemmer works for the following  26 languages. Our stemmer works using the snowball stemmer algorithm which is also known as Porter 2 Stemming algorithm.
+
+1. Tamil
+2. Hindi
+3. English
+4. Arabic
+5. Basque
+6. Catalan
+7. Danish
+8. Dutch
+9. Finnish
+10. French
+11. German
+12. Greek
+13. Hungarian
+14. Indonesian
+15. Irish
+16. Italian
+17. Lithuanian
+18. Nepali
+19. Norwegian
+20. Portuguese
+21. Romanian
+22. Russian
+23. Serbian
+24. Spanish
+25. Swedish
 26. Turkish
 
 ```python
@@ -68,12 +68,12 @@ def get_stemmer(self,
 
 ## Response Type
 
-[`List of Responsestem`](/doc/models/responsestem.md)
+[`List of Responsestem`](/fl-python/doc/models/responsestem.md)
 
 ## Example Usage
 
 ```python
-body = jsonpickle.decode('{"key1":"val1","key2":"val2"}')
+body = jsonpickle.decode('{"key1":"val1","key2":"val2"}')
 
 result = basic_ap_is_controller.get_stemmer(body)
 ```
@@ -82,14 +82,14 @@ result = basic_ap_is_controller.get_stemmer(body)
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Error output | [`ErrorsException`](/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`ApiStemmer426ErrorException`](/doc/models/api-stemmer-426-error-exception.md) |
+| 400 | Error output | [`ErrorsException`](/fl-python/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`ApiStemmer426ErrorException`](/fl-python/doc/models/api-stemmer-426-error-exception.md) |
 
 
 # Get Lemma
 
-# Stemmer : Defintion and it's usage
-
+# Stemmer : Defintion and it's usage
+
 # Languages covered:
 
 ```python
@@ -105,12 +105,12 @@ def get_lemma(self,
 
 ## Response Type
 
-[`List of Responselemma`](/doc/models/responselemma.md)
+[`List of Responselemma`](/fl-python/doc/models/responselemma.md)
 
 ## Example Usage
 
 ```python
-body = jsonpickle.decode('{"key1":"val1","key2":"val2"}')
+body = jsonpickle.decode('{"key1":"val1","key2":"val2"}')
 
 result = basic_ap_is_controller.get_lemma(body)
 ```
@@ -119,14 +119,14 @@ result = basic_ap_is_controller.get_lemma(body)
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Error output | [`ErrorsException`](/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`ApiLemmatize426ErrorException`](/doc/models/api-lemmatize-426-error-exception.md) |
+| 400 | Error output | [`ErrorsException`](/fl-python/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`ApiLemmatize426ErrorException`](/fl-python/doc/models/api-lemmatize-426-error-exception.md) |
 
 
 # Get Morph
 
-# Stemmer : Defintion and it's usage
-
+# Stemmer : Defintion and it's usage
+
 # Languages covered:
 
 ```python
@@ -142,12 +142,12 @@ def get_morph(self,
 
 ## Response Type
 
-[`Responsemorph`](/doc/models/responsemorph.md)
+[`Responsemorph`](/fl-python/doc/models/responsemorph.md)
 
 ## Example Usage
 
 ```python
-body = jsonpickle.decode('{"key1":"val1","key2":"val2"}')
+body = jsonpickle.decode('{"key1":"val1","key2":"val2"}')
 
 result = basic_ap_is_controller.get_morph(body)
 ```
@@ -156,26 +156,26 @@ result = basic_ap_is_controller.get_morph(body)
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Error output | [`ErrorsException`](/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`ApiMorph426ErrorException`](/doc/models/api-morph-426-error-exception.md) |
+| 400 | Error output | [`ErrorsException`](/fl-python/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`ApiMorph426ErrorException`](/fl-python/doc/models/api-morph-426-error-exception.md) |
 
 
 # Get Postag
 
-**So, What is a POS Tagger?**
-
-Parts Of Speech Tagger, which is shortly known as POS Tagger is a software that automatically finds the word classes, when a text input is given. The text input can be a word, a sentence or a set of sentences. The word classes are the grammatical categories such as, Noun, Verb, Adverb etc. These category assigned to each word is a tag. A set of tags, each indicating a grammatical category is called, "tagsets". POS tagging is a mandatory pre processing for most of the Natural Language Processing Applications such as, Information Extraction, Information Retreival systems and Summary generation systems.
-
-**Is POS Tagger, a language-independent software?**
-
-No. A POS Tagger is a language-dependent software as the grammar rules will differ for every language. For instance, A word ending with "ing" might indicate a Verb" in English but this will not be applicable for other languages.
-
-**For what languages, our  POS Tagger API will work?**
-
-At present, our POS Tagger API works for English and Tami Languages. Soon we will extend the APIs to accomodate more languages.
-
-**How Precise are our POS Tagger API?**
-
+**So, What is a POS Tagger?**
+
+Parts Of Speech Tagger, which is shortly known as POS Tagger is a software that automatically finds the word classes, when a text input is given. The text input can be a word, a sentence or a set of sentences. The word classes are the grammatical categories such as, Noun, Verb, Adverb etc. These category assigned to each word is a tag. A set of tags, each indicating a grammatical category is called, "tagsets". POS tagging is a mandatory pre processing for most of the Natural Language Processing Applications such as, Information Extraction, Information Retreival systems and Summary generation systems.
+
+**Is POS Tagger, a language-independent software?**
+
+No. A POS Tagger is a language-dependent software as the grammar rules will differ for every language. For instance, A word ending with "ing" might indicate a Verb" in English but this will not be applicable for other languages.
+
+**For what languages, our  POS Tagger API will work?**
+
+At present, our POS Tagger API works for English and Tami Languages. Soon we will extend the APIs to accomodate more languages.
+
+**How Precise are our POS Tagger API?**
+
 will update accuracy metrics soon .....
 
 ```python
@@ -191,12 +191,12 @@ def get_postag(self,
 
 ## Response Type
 
-[`List of Responsepo`](/doc/models/responsepo.md)
+[`List of Responsepo`](/fl-python/doc/models/responsepo.md)
 
 ## Example Usage
 
 ```python
-body = jsonpickle.decode('{"key1":"val1","key2":"val2"}')
+body = jsonpickle.decode('{"key1":"val1","key2":"val2"}')
 
 result = basic_ap_is_controller.get_postag(body)
 ```
@@ -205,6 +205,6 @@ result = basic_ap_is_controller.get_postag(body)
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Error output | [`ErrorsException`](/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`ApiPostag426ErrorException`](/doc/models/api-postag-426-error-exception.md) |
+| 400 | Error output | [`ErrorsException`](/fl-python/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`ApiPostag426ErrorException`](/fl-python/doc/models/api-postag-426-error-exception.md) |
 
diff --git a/doc/models/errors-exception.md b/doc/models/errors-exception.md
index ff1263e..0739360 100644
--- a/doc/models/errors-exception.md
+++ b/doc/models/errors-exception.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `errors` | [`List of Errors1`](/doc/models/errors-1.md) | Optional | - |
+| `errors` | [`List of Errors1`](/fl-python/doc/models/errors-1.md) | Optional | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/responsemorph.md b/doc/models/responsemorph.md
index 2189224..dfca796 100644
--- a/doc/models/responsemorph.md
+++ b/doc/models/responsemorph.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `orignal_string` | [`OrignalString`](/doc/models/orignal-string.md) | Optional | - |
+| `orignal_string` | [`OrignalString`](/fl-python/doc/models/orignal-string.md) | Optional | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/text-input-classify.md b/doc/models/text-input-classify.md
index bf63ad5..9d9da40 100644
--- a/doc/models/text-input-classify.md
+++ b/doc/models/text-input-classify.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input2`](/doc/models/input-2.md) | Optional | - |
+| `input` | [`Input2`](/fl-python/doc/models/input-2.md) | Optional | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/text-input-tamil.md b/doc/models/text-input-tamil.md
index 1e5801f..9f4cfe7 100644
--- a/doc/models/text-input-tamil.md
+++ b/doc/models/text-input-tamil.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input4`](/doc/models/input-4.md) | Optional | - |
+| `input` | [`Input4`](/fl-python/doc/models/input-4.md) | Optional | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/text-input.md b/doc/models/text-input.md
index aec2aa3..0175bc9 100644
--- a/doc/models/text-input.md
+++ b/doc/models/text-input.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input`](/doc/models/input.md) | Optional | Direct Text Input |
+| `input` | [`Input`](/fl-python/doc/models/input.md) | Optional | Direct Text Input |
 
 ## Example (as JSON)
 
diff --git a/doc/models/url-input-classify.md b/doc/models/url-input-classify.md
index d977ac3..d713410 100644
--- a/doc/models/url-input-classify.md
+++ b/doc/models/url-input-classify.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input3`](/doc/models/input-3.md) | Optional | - |
+| `input` | [`Input3`](/fl-python/doc/models/input-3.md) | Optional | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/url-input.md b/doc/models/url-input.md
index 6482217..0d5732c 100644
--- a/doc/models/url-input.md
+++ b/doc/models/url-input.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input1`](/doc/models/input-1.md) | Optional | Text for processing will be read from the given URL. Only HTML pages or text pages will be processed at this time. |
+| `input` | [`Input1`](/fl-python/doc/models/input-1.md) | Optional | Text for processing will be read from the given URL. Only HTML pages or text pages will be processed at this time. |
 
 ## Example (as JSON)
 

From aba98d412d688650507e41322597f5cb365f2ee8 Mon Sep 17 00:00:00 2001
From: Subalalitha <subalalitha@firstlanguage.in>
Date: Mon, 15 Nov 2021 13:26:49 +0530
Subject: [PATCH 06/34] Download link

---
 FirstLanguage_PythonSDK.zip | Bin 0 -> 36468 bytes
 README.md                   |  28 +++++++++++++++-------------
 2 files changed, 15 insertions(+), 13 deletions(-)
 create mode 100644 FirstLanguage_PythonSDK.zip

diff --git a/FirstLanguage_PythonSDK.zip b/FirstLanguage_PythonSDK.zip
new file mode 100644
index 0000000000000000000000000000000000000000..93dc565323ccefb6183541ccd49fb66289a575fa
GIT binary patch
diff --git a/README.md b/README.md
index 62e6674..d63f781 100644
--- a/README.md
+++ b/README.md
@@ -7,17 +7,19 @@ Collection of NLP APIs to help developers. We have grouped the APIs under Basic
 
 ### OpenAPI Specification
 
-This API is documented in **OpenAPI v3.0 format**.
-In addition to standard
+This API is documented in **OpenAPI v3.0 format**.
+In addition to standard
 OpenAPI syntax we use a few [vendor extensions](https://github.com/Redocly/redoc/blob/master/docs/redoc-vendor-extensions.md).
 
 ## Building
 
+Download the FirstLanguage Python SDK from <a href="FirstLanguage_PythonSDK.zip">here</a>
+
 You must have Python `3 >=3.7, <= 3.9` installed on your system to install and run this SDK. This SDK package depends on other Python packages like nose, jsonpickle etc. These dependencies are defined in the `requirements.txt` file that comes with the SDK. To resolve these dependencies, you can use the PIP Dependency manager. Install it by following steps at [https://pip.pypa.io/en/stable/installing/](https://pip.pypa.io/en/stable/installing/).
 
 Python and PIP executables should be defined in your PATH. Open command prompt and type `pip --version`. This should display the version of the PIP Dependency Manager installed if your installation was successful and the paths are properly defined.
 
-* Using command line, navigate to the directory containing the generated files (including `requirements.txt`) for the SDK.
+* Using command line, navigate to the directory containing the generated files (including `requirements.txt`) for the SDK.
 * Run the command `pip install -r requirements.txt`. This should install all the required dependencies.
 
 ![Building SDK - Step 1](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&step=installDependencies)
@@ -78,11 +80,11 @@ To run the file within your test project, right click on your Python file inside
 
 You can test the generated SDK and the server with test cases. `unittest` is used as the testing framework and `nose` is used as the test runner. You can run the tests as follows:
 
-Navigate to the root directory of the SDK and run the following commands
-
-```
-pip install -r test-requirements.txt
-nosetests
+Navigate to the root directory of the SDK and run the following commands
+
+```
+pip install -r test-requirements.txt
+nosetests
 ```
 
 ## Initialize the API Client
@@ -108,8 +110,8 @@ The API client can be initialized as follows:
 from firstlanguageapi.firstlanguageapi_client import FirstlanguageapiClient
 from firstlanguageapi.configuration import Environment
 
-client = FirstlanguageapiClient(
-    apikey='apikey',
+client = FirstlanguageapiClient(
+    apikey='apikey',
     environment=Environment.PRODUCTION,)
 ```
 
@@ -119,12 +121,12 @@ This API uses `Custom Header Signature`.
 
 ## List of APIs
 
-* [Basic AP Is](/doc/controllers/basic-ap-is.md)
+* [Basic AP Is](/doc/controllers/basic-ap-is.md)
 * [Advanced AP Is](/doc/controllers/advanced-ap-is.md)
 
 ## Classes Documentation
 
-* [Utility Classes](/doc/utility-classes.md)
-* [HttpResponse](/doc/http-response.md)
+* [Utility Classes](/doc/utility-classes.md)
+* [HttpResponse](/doc/http-response.md)
 * [HttpRequest](/doc/http-request.md)
 

From a7866534bdc65114e95cdf5718a23f19393d3d36 Mon Sep 17 00:00:00 2001
From: Subalalitha <subalalitha@firstlanguage.in>
Date: Mon, 15 Nov 2021 13:28:55 +0530
Subject: [PATCH 07/34] Download link

---
 index.md | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/index.md b/index.md
index d540a1d..2dab445 100644
--- a/index.md
+++ b/index.md
@@ -13,6 +13,8 @@ OpenAPI syntax we use a few [vendor extensions](https://github.com/Redocly/redoc
 
 ## Building
 
+Download the FirstLanguage Python SDK from <a href="FirstLanguage_PythonSDK.zip">here</a>
+
 You must have Python `3 >=3.7, <= 3.9` installed on your system to install and run this SDK. This SDK package depends on other Python packages like nose, jsonpickle etc. These dependencies are defined in the `requirements.txt` file that comes with the SDK. To resolve these dependencies, you can use the PIP Dependency manager. Install it by following steps at [https://pip.pypa.io/en/stable/installing/](https://pip.pypa.io/en/stable/installing/).
 
 Python and PIP executables should be defined in your PATH. Open command prompt and type `pip --version`. This should display the version of the PIP Dependency Manager installed if your installation was successful and the paths are properly defined.

From 5bf4d3f5f472c4cee2ba884992f5393c95c6b66f Mon Sep 17 00:00:00 2001
From: Subalalitha <subalalitha@firstlanguage.in>
Date: Mon, 15 Nov 2021 14:19:19 +0530
Subject: [PATCH 08/34] Changes to text

---
 FirstLanguage_PythonSDK.zip                   | Bin 36468 -> 151955 bytes
 README.md                                     |   4 ++--
 doc/client.md                                 |   8 +++----
 .../{advanced-ap-is.md => advanced-api.md}    |  16 +++++++-------
 .../{basic-ap-is.md => basic-api.md}          |  20 +++++++++---------
 index.md                                      |   4 ++--
 6 files changed, 26 insertions(+), 26 deletions(-)
 rename doc/controllers/{advanced-ap-is.md => advanced-api.md} (82%)
 rename doc/controllers/{basic-ap-is.md => basic-api.md} (87%)

diff --git a/FirstLanguage_PythonSDK.zip b/FirstLanguage_PythonSDK.zip
index 93dc565323ccefb6183541ccd49fb66289a575fa..74ff064d99e002272257844a2e8b09e213abc5cc 100644
GIT binary patch
diff --git a/README.md b/README.md
index d63f781..04c0d50 100644
--- a/README.md
+++ b/README.md
@@ -121,8 +121,8 @@ This API uses `Custom Header Signature`.
 
 ## List of APIs
 
-* [Basic AP Is](/doc/controllers/basic-ap-is.md)
-* [Advanced AP Is](/doc/controllers/advanced-ap-is.md)
+* [Basic AP Is](/doc/controllers/basic-api.md)
+* [Advanced AP Is](/doc/controllers/advanced-api.md)
 
 ## Classes Documentation
 
diff --git a/doc/client.md b/doc/client.md
index f814943..7b6057c 100644
--- a/doc/client.md
+++ b/doc/client.md
@@ -20,8 +20,8 @@ The API client can be initialized as follows:
 from firstlanguageapi.firstlanguageapi_client import FirstlanguageapiClient
 from firstlanguageapi.configuration import Environment
 
-client = FirstlanguageapiClient(
-    apikey='apikey',
+client = FirstlanguageapiClient(
+    apikey='apikey',
     environment=Environment.PRODUCTION,)
 ```
 
@@ -33,6 +33,6 @@ The gateway for the SDK. This class acts as a factory for the Controllers and al
 
 | Name | Description |
 |  --- | --- |
-| basic_ap_is | Gets BasicAPIsController |
-| advanced_ap_is | Gets AdvancedAPIsController |
+| basic_api | Gets BasicAPIsController |
+| advanced_api | Gets AdvancedAPIsController |
 
diff --git a/doc/controllers/advanced-ap-is.md b/doc/controllers/advanced-api.md
similarity index 82%
rename from doc/controllers/advanced-ap-is.md
rename to doc/controllers/advanced-api.md
index 7147e81..a0cdcd0 100644
--- a/doc/controllers/advanced-ap-is.md
+++ b/doc/controllers/advanced-api.md
@@ -1,9 +1,9 @@
-# Advanced AP Is
+# Advanced APIs
 
 Advanced text processing APIs
 
 ```python
-advanced_ap_is_controller = client.advanced_ap_is
+advanced_api_controller = client.advanced_api
 ```
 
 ## Class Name
@@ -12,9 +12,9 @@ advanced_ap_is_controller = client.advanced_ap_is
 
 ## Methods
 
-* [Get Classification](/fl-python/doc/controllers/advanced-ap-is.md#get-classification)
-* [Get QA](/fl-python/doc/controllers/advanced-ap-is.md#get-qa)
-* [Get NER](/fl-python/doc/controllers/advanced-ap-is.md#get-ner)
+* [Get Classification](/fl-python/doc/controllers/advanced-api.md#get-classification)
+* [Get QA](/fl-python/doc/controllers/advanced-api.md#get-qa)
+* [Get NER](/fl-python/doc/controllers/advanced-api.md#get-ner)
 
 
 # Get Classification
@@ -43,7 +43,7 @@ def get_classification(self,
 ```python
 body = jsonpickle.decode('{"key1":"val1","key2":"val2"}')
 
-result = advanced_ap_is_controller.get_classification(body)
+result = advanced_api_controller.get_classification(body)
 ```
 
 ## Errors
@@ -78,7 +78,7 @@ def get_qa(self,
 ## Example Usage
 
 ```python
-result = advanced_ap_is_controller.get_qa()
+result = advanced_api_controller.get_qa()
 ```
 
 ## Example Response *(as JSON)*
@@ -124,7 +124,7 @@ def get_ner(self,
 ## Example Usage
 
 ```python
-result = advanced_ap_is_controller.get_ner()
+result = advanced_api_controller.get_ner()
 ```
 
 ## Example Response *(as JSON)*
diff --git a/doc/controllers/basic-ap-is.md b/doc/controllers/basic-api.md
similarity index 87%
rename from doc/controllers/basic-ap-is.md
rename to doc/controllers/basic-api.md
index 2a2e4fe..f6707a9 100644
--- a/doc/controllers/basic-ap-is.md
+++ b/doc/controllers/basic-api.md
@@ -1,9 +1,9 @@
-# Basic AP Is
+# Basic APIs
 
 Basic NLP text processing APIs
 
 ```python
-basic_ap_is_controller = client.basic_ap_is
+basic_api_controller = client.basic_api
 ```
 
 ## Class Name
@@ -12,10 +12,10 @@ basic_ap_is_controller = client.basic_ap_is
 
 ## Methods
 
-* [Get Stemmer](/fl-python/doc/controllers/basic-ap-is.md#get-stemmer)
-* [Get Lemma](/fl-python/doc/controllers/basic-ap-is.md#get-lemma)
-* [Get Morph](/fl-python/doc/controllers/basic-ap-is.md#get-morph)
-* [Get Postag](/fl-python/doc/controllers/basic-ap-is.md#get-postag)
+* [Get Stemmer](/fl-python/doc/controllers/basic-api.md#get-stemmer)
+* [Get Lemma](/fl-python/doc/controllers/basic-api.md#get-lemma)
+* [Get Morph](/fl-python/doc/controllers/basic-api.md#get-morph)
+* [Get Postag](/fl-python/doc/controllers/basic-api.md#get-postag)
 
 
 # Get Stemmer
@@ -75,7 +75,7 @@ def get_stemmer(self,
 ```python
 body = jsonpickle.decode('{"key1":"val1","key2":"val2"}')
 
-result = basic_ap_is_controller.get_stemmer(body)
+result = basic_api_controller.get_stemmer(body)
 ```
 
 ## Errors
@@ -112,7 +112,7 @@ def get_lemma(self,
 ```python
 body = jsonpickle.decode('{"key1":"val1","key2":"val2"}')
 
-result = basic_ap_is_controller.get_lemma(body)
+result = basic_api_controller.get_lemma(body)
 ```
 
 ## Errors
@@ -149,7 +149,7 @@ def get_morph(self,
 ```python
 body = jsonpickle.decode('{"key1":"val1","key2":"val2"}')
 
-result = basic_ap_is_controller.get_morph(body)
+result = basic_api_controller.get_morph(body)
 ```
 
 ## Errors
@@ -198,7 +198,7 @@ def get_postag(self,
 ```python
 body = jsonpickle.decode('{"key1":"val1","key2":"val2"}')
 
-result = basic_ap_is_controller.get_postag(body)
+result = basic_api_controller.get_postag(body)
 ```
 
 ## Errors
diff --git a/index.md b/index.md
index 2dab445..6b5fe0d 100644
--- a/index.md
+++ b/index.md
@@ -121,8 +121,8 @@ This API uses `Custom Header Signature`.
 
 ## List of APIs
 
-* [Basic AP Is](/doc/controllers/basic-ap-is.md)
-* [Advanced AP Is](/doc/controllers/advanced-ap-is.md)
+* [Basic AP Is](/doc/controllers/basic-api.md)
+* [Advanced AP Is](/doc/controllers/advanced-api.md)
 
 ## Classes Documentation
 

From e091992f079b9bb79c7a2c4854c1d2e2db174b57 Mon Sep 17 00:00:00 2001
From: subalalithafl <79745769+subalalithafl@users.noreply.github.com>
Date: Mon, 15 Nov 2021 14:21:55 +0530
Subject: [PATCH 09/34] Update index.md

---
 index.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/index.md b/index.md
index 6b5fe0d..7f45bee 100644
--- a/index.md
+++ b/index.md
@@ -121,8 +121,8 @@ This API uses `Custom Header Signature`.
 
 ## List of APIs
 
-* [Basic AP Is](/doc/controllers/basic-api.md)
-* [Advanced AP Is](/doc/controllers/advanced-api.md)
+* [Basic APIs](/doc/controllers/basic-api.md)
+* [Advanced APIs](/doc/controllers/advanced-api.md)
 
 ## Classes Documentation
 

From a870f5126ccc2512c7063faf46d6066eca4f589d Mon Sep 17 00:00:00 2001
From: subalalithafl <79745769+subalalithafl@users.noreply.github.com>
Date: Mon, 15 Nov 2021 21:20:14 +0530
Subject: [PATCH 10/34] Remote theme

---
 _config.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/_config.yml b/_config.yml
index fc24e7a..fd9f83e 100644
--- a/_config.yml
+++ b/_config.yml
@@ -1 +1 @@
-theme: jekyll-theme-hacker
\ No newline at end of file
+remote_theme: benbalter/retlab

From 4f7d5c53a3be1763051da95a1ce099cece29b4a3 Mon Sep 17 00:00:00 2001
From: subalalithafl <79745769+subalalithafl@users.noreply.github.com>
Date: Mon, 15 Nov 2021 21:22:06 +0530
Subject: [PATCH 11/34] Enable plugin

---
 _config.yml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/_config.yml b/_config.yml
index fd9f83e..2a99cc0 100644
--- a/_config.yml
+++ b/_config.yml
@@ -1 +1,3 @@
+plugins:
+  - jekyll-remote-theme
 remote_theme: benbalter/retlab

From 0a3b339b2ac668398b68ac016c532ab7f9d14ece Mon Sep 17 00:00:00 2001
From: subalalithafl <79745769+subalalithafl@users.noreply.github.com>
Date: Mon, 15 Nov 2021 21:23:47 +0530
Subject: [PATCH 12/34] reverting

---
 _config.yml | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/_config.yml b/_config.yml
index 2a99cc0..8bbf794 100644
--- a/_config.yml
+++ b/_config.yml
@@ -1,3 +1 @@
-plugins:
-  - jekyll-remote-theme
-remote_theme: benbalter/retlab
+theme: jekyll-theme-hacker

From 9aba0fe133074d24a15465114a0fdef15544d6ae Mon Sep 17 00:00:00 2001
From: subalalithafl <79745769+subalalithafl@users.noreply.github.com>
Date: Mon, 15 Nov 2021 21:24:16 +0530
Subject: [PATCH 13/34] Set theme jekyll-theme-midnight

---
 _config.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/_config.yml b/_config.yml
index 8bbf794..bad8266 100644
--- a/_config.yml
+++ b/_config.yml
@@ -1 +1 @@
-theme: jekyll-theme-hacker
+theme: jekyll-theme-midnight

From 679080d25031bbd25e0ee3185e14b4f975781b94 Mon Sep 17 00:00:00 2001
From: subalalithafl <79745769+subalalithafl@users.noreply.github.com>
Date: Mon, 15 Nov 2021 21:30:15 +0530
Subject: [PATCH 14/34] Set theme jekyll-theme-cayman

---
 _config.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/_config.yml b/_config.yml
index bad8266..277f1f2 100644
--- a/_config.yml
+++ b/_config.yml
@@ -1 +1 @@
-theme: jekyll-theme-midnight
+theme: jekyll-theme-cayman

From ad9435488f7d25f009caaf758d3014fd293334ed Mon Sep 17 00:00:00 2001
From: subalalithafl <79745769+subalalithafl@users.noreply.github.com>
Date: Mon, 15 Nov 2021 21:31:36 +0530
Subject: [PATCH 15/34] Set theme jekyll-theme-midnight

---
 _config.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/_config.yml b/_config.yml
index 277f1f2..bad8266 100644
--- a/_config.yml
+++ b/_config.yml
@@ -1 +1 @@
-theme: jekyll-theme-cayman
+theme: jekyll-theme-midnight

From 2cc4364eb628f8b271590c548c2960de11aeed78 Mon Sep 17 00:00:00 2001
From: subalalithafl <79745769+subalalithafl@users.noreply.github.com>
Date: Mon, 15 Nov 2021 21:32:47 +0530
Subject: [PATCH 16/34] Set theme jekyll-theme-cayman

---
 _config.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/_config.yml b/_config.yml
index bad8266..277f1f2 100644
--- a/_config.yml
+++ b/_config.yml
@@ -1 +1 @@
-theme: jekyll-theme-midnight
+theme: jekyll-theme-cayman

From 7ee6e0cc92b07b409b270f29c94633518c2a292a Mon Sep 17 00:00:00 2001
From: Subalalitha <subalalitha@firstlanguage.in>
Date: Mon, 15 Nov 2021 21:43:15 +0530
Subject: [PATCH 17/34] Changes to layout

---
 default.html | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)
 create mode 100644 default.html

diff --git a/default.html b/default.html
new file mode 100644
index 0000000..bd60e35
--- /dev/null
+++ b/default.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html lang="{{ site.lang | default: "en-US" }}">
+  <head>
+    <meta charset="UTF-8">
+
+{% seo %}
+    <link rel="preconnect" href="https://fonts.gstatic.com">
+    <link rel="preload" href="https://fonts.googleapis.com/css?family=Open+Sans:400,700&display=swap" as="style" type="text/css" crossorigin>
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <meta name="theme-color" content="#157878">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
+    <link rel="stylesheet" href="{{ '/assets/css/style.css?v=' | append: site.github.build_revision | relative_url }}">
+    {% include head-custom.html %}
+  </head>
+  <body>
+    <a id="skip-to-content" href="#content">Skip to the content.</a>
+
+    <header class="page-header" role="banner">
+      <h1 class="project-name">{{ page.title | default: site.title | default: site.github.repository_name }}</h1>
+      <h2 class="project-tagline">{{ page.description | default: site.description | default: site.github.project_tagline }}</h2>
+      
+    </header>
+
+    <main id="content" class="main-content" role="main">
+      {{ content }}
+
+      <footer class="site-footer">        
+      </footer>
+    </main>
+  </body>
+</html>

From e05b289d11d5562ace30d723144f631def5e4a43 Mon Sep 17 00:00:00 2001
From: Subalalitha <subalalitha@firstlanguage.in>
Date: Mon, 15 Nov 2021 21:45:12 +0530
Subject: [PATCH 18/34] Changes to layout

---
 default.html => _layouts/default.html | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename default.html => _layouts/default.html (100%)

diff --git a/default.html b/_layouts/default.html
similarity index 100%
rename from default.html
rename to _layouts/default.html

From fb7bdfe671e42d877a53c0690221357ea438632d Mon Sep 17 00:00:00 2001
From: Subalalitha <subalalitha@firstlanguage.in>
Date: Mon, 15 Nov 2021 21:52:45 +0530
Subject: [PATCH 19/34] Changes to layout

---
 default.html | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)
 create mode 100644 default.html

diff --git a/default.html b/default.html
new file mode 100644
index 0000000..3582678
--- /dev/null
+++ b/default.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html lang="{{ site.lang | default: "en-US" }}">
+  <head>
+    <meta charset="UTF-8">
+
+{% seo %}
+    <link rel="preconnect" href="https://fonts.gstatic.com">
+    <link rel="preload" href="https://fonts.googleapis.com/css?family=Open+Sans:400,700&display=swap" as="style" type="text/css" crossorigin>
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <meta name="theme-color" content="#157878">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
+    <link rel="stylesheet" href="{{ '/assets/css/style.css?v=' | append: site.github.build_revision | relative_url }}">
+    {% include head-custom.html %}
+  </head>
+  <body>
+    <a id="skip-to-content" href="#content">Skip to the content.</a>
+
+    <header class="page-header" role="banner">
+      <h1 class="project-name">{{ page.description | default: site.description | default: site.github.repository_name }}</h1>           
+    </header>
+
+    <main id="content" class="main-content" role="main">
+      {{ content }}
+
+      <footer class="site-footer">        
+      </footer>
+    </main>
+  </body>
+</html>

From 0f8ce8fceece18192246f11b9fca70573fe71ab4 Mon Sep 17 00:00:00 2001
From: subalalithafl <79745769+subalalithafl@users.noreply.github.com>
Date: Mon, 15 Nov 2021 21:57:43 +0530
Subject: [PATCH 20/34] change layout

---
 _layouts/default.html | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/_layouts/default.html b/_layouts/default.html
index bd60e35..8e63637 100644
--- a/_layouts/default.html
+++ b/_layouts/default.html
@@ -16,9 +16,7 @@
     <a id="skip-to-content" href="#content">Skip to the content.</a>
 
     <header class="page-header" role="banner">
-      <h1 class="project-name">{{ page.title | default: site.title | default: site.github.repository_name }}</h1>
-      <h2 class="project-tagline">{{ page.description | default: site.description | default: site.github.project_tagline }}</h2>
-      
+      <h1 class="project-name">{{ page.description | default: site.description | default: site.github.repository_name }}</h1>      
     </header>
 
     <main id="content" class="main-content" role="main">

From 08229f3c26bd53e38125aa7901ac2ff53776cbf0 Mon Sep 17 00:00:00 2001
From: Subalalitha <subalalitha@firstlanguage.in>
Date: Fri, 19 Nov 2021 13:01:04 +0530
Subject: [PATCH 21/34] Packaged

---
 FirstLanguage_PythonSDK.zip                   | Bin 151955 -> 0 bytes
 LICENSE                                       |  28 ++
 MANIFEST.in                                   |   2 +
 __pycache__/TestSDK.cpython-39.pyc            | Bin 0 -> 772 bytes
 examples/example_Stemmer.py                   |  19 +
 firstlanguage_python/__init__.py              |  10 +
 .../__pycache__/__init__.cpython-39.pyc       | Bin 0 -> 281 bytes
 .../__pycache__/api_helper.cpython-39.pyc     | Bin 0 -> 13198 bytes
 .../__pycache__/configuration.cpython-39.pyc  | Bin 0 -> 4245 bytes
 .../__pycache__/decorators.cpython-39.pyc     | Bin 0 -> 868 bytes
 .../firstlanguage_client.cpython-39.pyc       | Bin 0 -> 1694 bytes
 .../firstlanguageapi_client.cpython-39.pyc    | Bin 0 -> 1741 bytes
 firstlanguage_python/api_helper.py            | 418 ++++++++++++++++++
 firstlanguage_python/configuration.py         | 159 +++++++
 firstlanguage_python/controllers/__init__.py  |   5 +
 .../__pycache__/__init__.cpython-39.pyc       | Bin 0 -> 280 bytes
 .../advanced_ap_is_controller.cpython-39.pyc  | Bin 0 -> 5153 bytes
 .../advanced_api_controller.cpython-39.pyc    | Bin 0 -> 5173 bytes
 .../base_controller.cpython-39.pyc            | Bin 0 -> 3371 bytes
 .../basic_ap_is_controller.cpython-39.pyc     | Bin 0 -> 8917 bytes
 .../basic_api_controller.cpython-39.pyc       | Bin 0 -> 8968 bytes
 .../controllers/advanced_api_controller.py    | 178 ++++++++
 .../controllers/base_controller.py            |  95 ++++
 .../controllers/basic_api_controller.py       | 282 ++++++++++++
 firstlanguage_python/decorators.py            |  24 +
 firstlanguage_python/exceptions/__init__.py   |  10 +
 .../__pycache__/__init__.cpython-39.pyc       | Bin 0 -> 432 bytes
 ...lassify_426_error_exception.cpython-39.pyc | Bin 0 -> 1780 bytes
 .../__pycache__/api_exception.cpython-39.pyc  | Bin 0 -> 1201 bytes
 ...mmatize_426_error_exception.cpython-39.pyc | Bin 0 -> 1785 bytes
 ...i_morph_426_error_exception.cpython-39.pyc | Bin 0 -> 1762 bytes
 ..._postag_426_error_exception.cpython-39.pyc | Bin 0 -> 1767 bytes
 ...stemmer_426_error_exception.cpython-39.pyc | Bin 0 -> 1775 bytes
 .../errors_exception.cpython-39.pyc           | Bin 0 -> 1979 bytes
 .../m_426_error_exception.cpython-39.pyc      | Bin 0 -> 1726 bytes
 .../api_classify_426_error_exception.py       |  38 ++
 .../exceptions/api_exception.py               |  35 ++
 .../api_lemmatize_426_error_exception.py      |  38 ++
 .../api_morph_426_error_exception.py          |  38 ++
 .../api_postag_426_error_exception.py         |  38 ++
 .../api_stemmer_426_error_exception.py        |  38 ++
 .../exceptions/errors_exception.py            |  41 ++
 .../exceptions/m_426_error_exception.py       |  38 ++
 firstlanguage_python/firstlanguage_client.py  |  47 ++
 firstlanguage_python/http/__init__.py         |   9 +
 .../http/__pycache__/__init__.cpython-39.pyc  | Bin 0 -> 304 bytes
 .../__pycache__/http_call_back.cpython-39.pyc | Bin 0 -> 1455 bytes
 .../__pycache__/http_client.cpython-39.pyc    | Bin 0 -> 6385 bytes
 .../http_method_enum.cpython-39.pyc           | Bin 0 -> 1280 bytes
 .../__pycache__/http_request.cpython-39.pyc   | Bin 0 -> 3004 bytes
 .../__pycache__/http_response.cpython-39.pyc  | Bin 0 -> 1649 bytes
 .../requests_client.cpython-39.pyc            | Bin 0 -> 3821 bytes
 firstlanguage_python/http/auth/__init__.py    |   3 +
 .../auth/__pycache__/__init__.cpython-39.pyc  | Bin 0 -> 228 bytes
 .../custom_header_auth.cpython-39.pyc         | Bin 0 -> 1575 bytes
 .../http/auth/custom_header_auth.py           |  37 ++
 firstlanguage_python/http/http_call_back.py   |  38 ++
 firstlanguage_python/http/http_client.py      | 210 +++++++++
 firstlanguage_python/http/http_method_enum.py |  50 +++
 firstlanguage_python/http/http_request.py     |  88 ++++
 firstlanguage_python/http/http_response.py    |  47 ++
 firstlanguage_python/http/requests_client.py  | 156 +++++++
 firstlanguage_python/models/__init__.py       |  21 +
 .../__pycache__/__init__.cpython-39.pyc       | Bin 0 -> 467 bytes
 .../api_ner_response.cpython-39.pyc           | Bin 0 -> 1823 bytes
 .../api_qa_response.cpython-39.pyc            | Bin 0 -> 1816 bytes
 .../__pycache__/errors_1.cpython-39.pyc       | Bin 0 -> 1637 bytes
 .../__pycache__/orignal_string.cpython-39.pyc | Bin 0 -> 1457 bytes
 .../responseclassify.cpython-39.pyc           | Bin 0 -> 1593 bytes
 .../__pycache__/responselemma.cpython-39.pyc  | Bin 0 -> 1588 bytes
 .../__pycache__/responsemorph.cpython-39.pyc  | Bin 0 -> 1600 bytes
 .../__pycache__/responsepo.cpython-39.pyc     | Bin 0 -> 1562 bytes
 .../__pycache__/responsestem.cpython-39.pyc   | Bin 0 -> 1570 bytes
 .../models/api_ner_response.py                |  73 +++
 .../models/api_qa_response.py                 |  73 +++
 firstlanguage_python/models/errors_1.py       |  67 +++
 firstlanguage_python/models/input.py          |  63 +++
 firstlanguage_python/models/input_1.py        |  71 +++
 firstlanguage_python/models/input_2.py        |  69 +++
 firstlanguage_python/models/input_3.py        |  76 ++++
 firstlanguage_python/models/input_4.py        |  62 +++
 firstlanguage_python/models/orignal_string.py |  55 +++
 .../models/responseclassify.py                |  61 +++
 firstlanguage_python/models/responselemma.py  |  61 +++
 firstlanguage_python/models/responsemorph.py  |  56 +++
 firstlanguage_python/models/responsepo.py     |  61 +++
 firstlanguage_python/models/responsestem.py   |  61 +++
 firstlanguage_python/models/text_input.py     |  56 +++
 .../models/text_input_classify.py             |  56 +++
 .../models/text_input_tamil.py                |  56 +++
 firstlanguage_python/models/url_input.py      |  57 +++
 .../models/url_input_classify.py              |  56 +++
 firstlanguage_python/utilities/__init__.py    |   3 +
 .../__pycache__/__init__.cpython-39.pyc       | Bin 0 -> 225 bytes
 .../utilities/file_wrapper.py                 |  25 ++
 requirements.txt                              |   5 +
 setup.py                                      |  34 ++
 test-requirements.txt                         |   1 +
 tests/__init__.py                             |   0
 tests/__pycache__/__init__.cpython-39.pyc     | Bin 0 -> 173 bytes
 .../http_response_catcher.cpython-39.pyc      | Bin 0 -> 1132 bytes
 tests/__pycache__/test_helper.cpython-39.pyc  | Bin 0 -> 4513 bytes
 tests/controllers/__init__.py                 |   0
 .../__pycache__/__init__.cpython-39.pyc       | Bin 0 -> 185 bytes
 .../controller_test_base.cpython-39.pyc       | Bin 0 -> 1313 bytes
 ...t_advanced_ap_is_controller.cpython-39.pyc | Bin 0 -> 3603 bytes
 tests/controllers/controller_test_base.py     |  32 ++
 .../test_advanced_ap_is_controller.py         |  91 ++++
 tests/http_response_catcher.py                |  28 ++
 tests/test_helper.py                          | 127 ++++++
 tox.ini                                       |   7 +
 111 files changed, 3783 insertions(+)
 delete mode 100644 FirstLanguage_PythonSDK.zip
 create mode 100644 LICENSE
 create mode 100644 MANIFEST.in
 create mode 100644 __pycache__/TestSDK.cpython-39.pyc
 create mode 100644 examples/example_Stemmer.py
 create mode 100644 firstlanguage_python/__init__.py
 create mode 100644 firstlanguage_python/__pycache__/__init__.cpython-39.pyc
 create mode 100644 firstlanguage_python/__pycache__/api_helper.cpython-39.pyc
 create mode 100644 firstlanguage_python/__pycache__/configuration.cpython-39.pyc
 create mode 100644 firstlanguage_python/__pycache__/decorators.cpython-39.pyc
 create mode 100644 firstlanguage_python/__pycache__/firstlanguage_client.cpython-39.pyc
 create mode 100644 firstlanguage_python/__pycache__/firstlanguageapi_client.cpython-39.pyc
 create mode 100644 firstlanguage_python/api_helper.py
 create mode 100644 firstlanguage_python/configuration.py
 create mode 100644 firstlanguage_python/controllers/__init__.py
 create mode 100644 firstlanguage_python/controllers/__pycache__/__init__.cpython-39.pyc
 create mode 100644 firstlanguage_python/controllers/__pycache__/advanced_ap_is_controller.cpython-39.pyc
 create mode 100644 firstlanguage_python/controllers/__pycache__/advanced_api_controller.cpython-39.pyc
 create mode 100644 firstlanguage_python/controllers/__pycache__/base_controller.cpython-39.pyc
 create mode 100644 firstlanguage_python/controllers/__pycache__/basic_ap_is_controller.cpython-39.pyc
 create mode 100644 firstlanguage_python/controllers/__pycache__/basic_api_controller.cpython-39.pyc
 create mode 100644 firstlanguage_python/controllers/advanced_api_controller.py
 create mode 100644 firstlanguage_python/controllers/base_controller.py
 create mode 100644 firstlanguage_python/controllers/basic_api_controller.py
 create mode 100644 firstlanguage_python/decorators.py
 create mode 100644 firstlanguage_python/exceptions/__init__.py
 create mode 100644 firstlanguage_python/exceptions/__pycache__/__init__.cpython-39.pyc
 create mode 100644 firstlanguage_python/exceptions/__pycache__/api_classify_426_error_exception.cpython-39.pyc
 create mode 100644 firstlanguage_python/exceptions/__pycache__/api_exception.cpython-39.pyc
 create mode 100644 firstlanguage_python/exceptions/__pycache__/api_lemmatize_426_error_exception.cpython-39.pyc
 create mode 100644 firstlanguage_python/exceptions/__pycache__/api_morph_426_error_exception.cpython-39.pyc
 create mode 100644 firstlanguage_python/exceptions/__pycache__/api_postag_426_error_exception.cpython-39.pyc
 create mode 100644 firstlanguage_python/exceptions/__pycache__/api_stemmer_426_error_exception.cpython-39.pyc
 create mode 100644 firstlanguage_python/exceptions/__pycache__/errors_exception.cpython-39.pyc
 create mode 100644 firstlanguage_python/exceptions/__pycache__/m_426_error_exception.cpython-39.pyc
 create mode 100644 firstlanguage_python/exceptions/api_classify_426_error_exception.py
 create mode 100644 firstlanguage_python/exceptions/api_exception.py
 create mode 100644 firstlanguage_python/exceptions/api_lemmatize_426_error_exception.py
 create mode 100644 firstlanguage_python/exceptions/api_morph_426_error_exception.py
 create mode 100644 firstlanguage_python/exceptions/api_postag_426_error_exception.py
 create mode 100644 firstlanguage_python/exceptions/api_stemmer_426_error_exception.py
 create mode 100644 firstlanguage_python/exceptions/errors_exception.py
 create mode 100644 firstlanguage_python/exceptions/m_426_error_exception.py
 create mode 100644 firstlanguage_python/firstlanguage_client.py
 create mode 100644 firstlanguage_python/http/__init__.py
 create mode 100644 firstlanguage_python/http/__pycache__/__init__.cpython-39.pyc
 create mode 100644 firstlanguage_python/http/__pycache__/http_call_back.cpython-39.pyc
 create mode 100644 firstlanguage_python/http/__pycache__/http_client.cpython-39.pyc
 create mode 100644 firstlanguage_python/http/__pycache__/http_method_enum.cpython-39.pyc
 create mode 100644 firstlanguage_python/http/__pycache__/http_request.cpython-39.pyc
 create mode 100644 firstlanguage_python/http/__pycache__/http_response.cpython-39.pyc
 create mode 100644 firstlanguage_python/http/__pycache__/requests_client.cpython-39.pyc
 create mode 100644 firstlanguage_python/http/auth/__init__.py
 create mode 100644 firstlanguage_python/http/auth/__pycache__/__init__.cpython-39.pyc
 create mode 100644 firstlanguage_python/http/auth/__pycache__/custom_header_auth.cpython-39.pyc
 create mode 100644 firstlanguage_python/http/auth/custom_header_auth.py
 create mode 100644 firstlanguage_python/http/http_call_back.py
 create mode 100644 firstlanguage_python/http/http_client.py
 create mode 100644 firstlanguage_python/http/http_method_enum.py
 create mode 100644 firstlanguage_python/http/http_request.py
 create mode 100644 firstlanguage_python/http/http_response.py
 create mode 100644 firstlanguage_python/http/requests_client.py
 create mode 100644 firstlanguage_python/models/__init__.py
 create mode 100644 firstlanguage_python/models/__pycache__/__init__.cpython-39.pyc
 create mode 100644 firstlanguage_python/models/__pycache__/api_ner_response.cpython-39.pyc
 create mode 100644 firstlanguage_python/models/__pycache__/api_qa_response.cpython-39.pyc
 create mode 100644 firstlanguage_python/models/__pycache__/errors_1.cpython-39.pyc
 create mode 100644 firstlanguage_python/models/__pycache__/orignal_string.cpython-39.pyc
 create mode 100644 firstlanguage_python/models/__pycache__/responseclassify.cpython-39.pyc
 create mode 100644 firstlanguage_python/models/__pycache__/responselemma.cpython-39.pyc
 create mode 100644 firstlanguage_python/models/__pycache__/responsemorph.cpython-39.pyc
 create mode 100644 firstlanguage_python/models/__pycache__/responsepo.cpython-39.pyc
 create mode 100644 firstlanguage_python/models/__pycache__/responsestem.cpython-39.pyc
 create mode 100644 firstlanguage_python/models/api_ner_response.py
 create mode 100644 firstlanguage_python/models/api_qa_response.py
 create mode 100644 firstlanguage_python/models/errors_1.py
 create mode 100644 firstlanguage_python/models/input.py
 create mode 100644 firstlanguage_python/models/input_1.py
 create mode 100644 firstlanguage_python/models/input_2.py
 create mode 100644 firstlanguage_python/models/input_3.py
 create mode 100644 firstlanguage_python/models/input_4.py
 create mode 100644 firstlanguage_python/models/orignal_string.py
 create mode 100644 firstlanguage_python/models/responseclassify.py
 create mode 100644 firstlanguage_python/models/responselemma.py
 create mode 100644 firstlanguage_python/models/responsemorph.py
 create mode 100644 firstlanguage_python/models/responsepo.py
 create mode 100644 firstlanguage_python/models/responsestem.py
 create mode 100644 firstlanguage_python/models/text_input.py
 create mode 100644 firstlanguage_python/models/text_input_classify.py
 create mode 100644 firstlanguage_python/models/text_input_tamil.py
 create mode 100644 firstlanguage_python/models/url_input.py
 create mode 100644 firstlanguage_python/models/url_input_classify.py
 create mode 100644 firstlanguage_python/utilities/__init__.py
 create mode 100644 firstlanguage_python/utilities/__pycache__/__init__.cpython-39.pyc
 create mode 100644 firstlanguage_python/utilities/file_wrapper.py
 create mode 100644 requirements.txt
 create mode 100644 setup.py
 create mode 100644 test-requirements.txt
 create mode 100644 tests/__init__.py
 create mode 100644 tests/__pycache__/__init__.cpython-39.pyc
 create mode 100644 tests/__pycache__/http_response_catcher.cpython-39.pyc
 create mode 100644 tests/__pycache__/test_helper.cpython-39.pyc
 create mode 100644 tests/controllers/__init__.py
 create mode 100644 tests/controllers/__pycache__/__init__.cpython-39.pyc
 create mode 100644 tests/controllers/__pycache__/controller_test_base.cpython-39.pyc
 create mode 100644 tests/controllers/__pycache__/test_advanced_ap_is_controller.cpython-39.pyc
 create mode 100644 tests/controllers/controller_test_base.py
 create mode 100644 tests/controllers/test_advanced_ap_is_controller.py
 create mode 100644 tests/http_response_catcher.py
 create mode 100644 tests/test_helper.py
 create mode 100644 tox.ini

diff --git a/FirstLanguage_PythonSDK.zip b/FirstLanguage_PythonSDK.zip
deleted file mode 100644
index 74ff064d99e002272257844a2e8b09e213abc5cc..0000000000000000000000000000000000000000
GIT binary patch
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..749af7f
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,28 @@
+License: 
+========
+The MIT License (MIT)
+http://opensource.org/licenses/MIT
+
+Copyright (c) 2014 - 2020 APIMATIC Limited
+
+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.
+
+Trade Mark:
+==========
+APIMATIC is a trade mark for APIMATIC Limited
\ No newline at end of file
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000..64aa22e
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,2 @@
+include LICENSE
+include README.md
diff --git a/__pycache__/TestSDK.cpython-39.pyc b/__pycache__/TestSDK.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..ac4662bd8dbded9ecb5da9f3891c3eb244dbccfc
GIT binary patch
diff --git a/examples/example_Stemmer.py b/examples/example_Stemmer.py
new file mode 100644
index 0000000..a26fde7
--- /dev/null
+++ b/examples/example_Stemmer.py
@@ -0,0 +1,19 @@
+from firstlanguage.firstlanguage_client import Client
+from firstlanguage.configuration import Environment
+import jsonpickle
+
+
+client = Client(
+    apikey='079cc45f-bbb2-4f01-ac27-63ff9a2d82b5',
+    environment=Environment.PRODUCTION,)
+
+reqbody='{"input":{"text":"அவள் வேகமாக ஓடினாள்","lang":"ta"} }'
+
+body = jsonpickle.decode(reqbody)
+basic_api_controller = client.basic_api
+
+result = basic_api_controller.get_stemmer(body)
+
+for res in result:
+  print("Original Text passed: "+res.orginal_text)
+  print("Stemmed result: "+res.stem)
diff --git a/firstlanguage_python/__init__.py b/firstlanguage_python/__init__.py
new file mode 100644
index 0000000..66dde5c
--- /dev/null
+++ b/firstlanguage_python/__init__.py
@@ -0,0 +1,10 @@
+__all__ = [
+    'api_helper',
+    'configuration',
+    'controllers',
+    'decorators',
+    'exceptions',
+    'firstlanguage_client',
+    'http',
+    'models',
+]
diff --git a/firstlanguage_python/__pycache__/__init__.cpython-39.pyc b/firstlanguage_python/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..3ee79d887c00903b862715d355053d40801072eb
GIT binary patch
diff --git a/firstlanguage_python/__pycache__/api_helper.cpython-39.pyc b/firstlanguage_python/__pycache__/api_helper.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..e94a0634b6d72268aa886de2a2e4c853f977a227
GIT binary patch
diff --git a/firstlanguage_python/__pycache__/configuration.cpython-39.pyc b/firstlanguage_python/__pycache__/configuration.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..3023031421e24e6b1ee6cc4bd60d88a837a4f865
GIT binary patch
diff --git a/firstlanguage_python/__pycache__/decorators.cpython-39.pyc b/firstlanguage_python/__pycache__/decorators.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..f9a357bb33eda0047e3fde9779fa501f5e5e03ca
GIT binary patch
diff --git a/firstlanguage_python/__pycache__/firstlanguage_client.cpython-39.pyc b/firstlanguage_python/__pycache__/firstlanguage_client.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..96ce36298c4f0acd66c84707824ef207b9e0a53c
GIT binary patch
diff --git a/firstlanguage_python/__pycache__/firstlanguageapi_client.cpython-39.pyc b/firstlanguage_python/__pycache__/firstlanguageapi_client.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..679c68912dbf34104eda191e74688215435b5fb6
GIT binary patch
diff --git a/firstlanguage_python/api_helper.py b/firstlanguage_python/api_helper.py
new file mode 100644
index 0000000..70b416f
--- /dev/null
+++ b/firstlanguage_python/api_helper.py
@@ -0,0 +1,418 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+import re
+import sys
+import datetime
+import calendar
+import email.utils as eut
+from time import mktime
+
+import jsonpickle
+import dateutil.parser
+from requests.utils import quote
+
+
+class APIHelper(object):
+
+    """A Helper Class for various functions associated with API Calls.
+
+    This class contains static methods for operations that need to be
+    performed during API requests. All of the methods inside this class are
+    static methods, there is no need to ever initialise an instance of this
+    class.
+
+    """
+
+    @staticmethod
+    def merge_dicts(dict1, dict2):
+        """Merges two dictionaries into one as a shallow copy.
+
+        Args:
+            dict1 (dict): The first dictionary.
+            dict2 (dict): The second dictionary.
+
+        Returns:
+            dict: A dictionary containing key value pairs
+            from both the argument dictionaries. In the case
+            of a key conflict, values from dict2 are used
+            and those from dict1 are lost.
+
+        """
+        temp = dict1.copy()
+        temp.update(dict2)
+        return temp
+
+    @staticmethod
+    def json_serialize(obj):
+        """JSON Serialization of a given object.
+
+        Args:
+            obj (object): The object to serialize.
+
+        Returns:
+            str: The JSON serialized string of the object.
+
+        """
+        if obj is None:
+            return None
+
+        # Resolve any Names if it's one of our objects that needs to have this called on
+        if isinstance(obj, list):
+            value = list()
+            for item in obj:
+                if hasattr(item, "_names"):
+                    value.append(APIHelper.to_dictionary(item))
+                else:
+                    value.append(item)
+            obj = value
+        else:
+            if hasattr(obj, "_names"):
+                obj = APIHelper.to_dictionary(obj)
+
+        return jsonpickle.encode(obj, False)
+
+    @staticmethod
+    def json_deserialize(json, unboxing_function=None, as_dict=False):
+        """JSON Deserialization of a given string.
+
+        Args:
+            json (str): The JSON serialized string to deserialize.
+
+        Returns:
+            dict: A dictionary representing the data contained in the
+                JSON serialized string.
+
+        """
+        if json is None:
+            return None
+
+        try:
+            decoded = jsonpickle.decode(json)
+        except ValueError:
+            return json
+
+        if unboxing_function is None:
+            return decoded
+
+        if as_dict:
+            return {k: unboxing_function(v) for k, v in decoded.items()}
+        elif isinstance(decoded, list):
+            return [unboxing_function(element) for element in decoded]
+        else:
+            return unboxing_function(decoded)
+
+    @staticmethod
+    def serialize_array(key, array, formatting="indexed"):
+        """Converts an array parameter to a list of key value tuples.
+
+        Args:
+            key (str): The name of the parameter.
+            array (list): The value of the parameter.
+            formatting (str): The type of key formatting expected.
+
+        Returns:
+            list: A list with key value tuples for the array elements.
+
+        """
+        tuples = []
+
+        if sys.version_info[0] < 3:
+            serializable_types = (str, int, long, float, bool, datetime.date, APIHelper.CustomDate)
+        else:
+            serializable_types = (str, int, float, bool, datetime.date, APIHelper.CustomDate)
+
+        if isinstance(array[0], serializable_types):
+            if formatting == "unindexed":
+                tuples += [("{0}[]".format(key), element) for element in array]
+            elif formatting == "indexed":
+                tuples += [("{0}[{1}]".format(key, index), element) for index, element in enumerate(array)]
+            elif formatting == "plain":
+                tuples += [(key, element) for element in array]
+            else:
+                raise ValueError("Invalid format provided.")
+        else:
+            tuples += [("{0}[{1}]".format(key, index), element) for index, element in enumerate(array)]
+
+        return tuples
+
+    @staticmethod
+    def append_url_with_template_parameters(url, parameters):
+        """Replaces template parameters in the given url.
+
+        Args:
+            url (str): The query url string to replace the template parameters.
+            parameters (dict): The parameters to replace in the url.
+
+        Returns:
+            str: URL with replaced parameters.
+
+        """
+        # Parameter validation
+        if url is None:
+            raise ValueError("URL is None.")
+        if parameters is None:
+            return url
+
+        # Iterate and replace parameters
+        for key in parameters:
+            value = parameters[key]['value']
+            encode = parameters[key]['encode']
+            replace_value = ''
+
+            # Load parameter value
+            if value is None:
+                replace_value = ''
+            elif isinstance(value, list):
+                replace_value = "/".join((quote(str(x), safe='') if encode else str(x)) for x in value)
+            else:
+                replace_value = quote(str(value), safe='') if encode else str(value)
+
+            url = url.replace('{{{0}}}'.format(key), str(replace_value))
+
+        return url
+
+    @staticmethod
+    def append_url_with_query_parameters(url,
+                                         parameters,
+                                         array_serialization="indexed"):
+        """Adds query parameters to a URL.
+
+        Args:
+            url (str): The URL string.
+            parameters (dict): The query parameters to add to the URL.
+            array_serialization (str): The format of array parameter serialization.
+
+        Returns:
+            str: URL with added query parameters.
+
+        """
+        # Parameter validation
+        if url is None:
+            raise ValueError("URL is None.")
+        if parameters is None:
+            return url
+
+        for key, value in parameters.items():
+            seperator = '&' if '?' in url else '?'
+            if value is not None:
+                if isinstance(value, list):
+                    value = [element for element in value if element]
+                    if array_serialization == "csv":
+                        url += "{0}{1}={2}".format(
+                            seperator,
+                            key,
+                            ",".join(quote(str(x), safe='') for x in value)
+                        )
+                    elif array_serialization == "psv":
+                        url += "{0}{1}={2}".format(
+                            seperator,
+                            key,
+                            "|".join(quote(str(x), safe='') for x in value)
+                        )
+                    elif array_serialization == "tsv":
+                        url += "{0}{1}={2}".format(
+                            seperator,
+                            key,
+                            "\t".join(quote(str(x), safe='') for x in value)
+                        )
+                    else:
+                        url += "{0}{1}".format(
+                            seperator,
+                            "&".join(("{0}={1}".format(k, quote(str(v), safe='')))
+                                     for k, v in APIHelper.serialize_array(key, value, array_serialization))
+                        )
+                else:
+                    url += "{0}{1}={2}".format(seperator, key, quote(str(value), safe=''))
+
+        return url
+
+    @staticmethod
+    def clean_url(url):
+        """Validates and processes the given query Url to clean empty slashes.
+
+        Args:
+            url (str): The given query Url to process.
+
+        Returns:
+            str: Clean Url as string.
+
+        """
+        # Ensure that the urls are absolute
+        regex = "^https?://[^/]+"
+        match = re.match(regex, url)
+        if match is None:
+            raise ValueError('Invalid Url format.')
+
+        protocol = match.group(0)
+        index = url.find('?')
+        query_url = url[len(protocol): index if index != -1 else None]
+        query_url = re.sub("//+", "/", query_url)
+        parameters = url[index:] if index != -1 else ""
+
+        return protocol + query_url + parameters
+
+    @staticmethod
+    def form_encode_parameters(form_parameters,
+                               array_serialization="indexed"):
+        """Form encodes a dictionary of form parameters
+
+        Args:
+            form_parameters (dictionary): The given dictionary which has
+            atleast one model to form encode.
+            array_serialization (str): The format of array parameter serialization.
+
+        Returns:
+            dict: A dictionary of form encoded properties of the model.
+
+        """
+        encoded = []
+
+        for key, value in form_parameters.items():
+            encoded += APIHelper.form_encode(value, key, array_serialization)
+
+        return encoded
+
+    @staticmethod
+    def form_encode(obj,
+                    instance_name,
+                    array_serialization="indexed"):
+        """Encodes a model in a form-encoded manner such as person[Name]
+
+        Args:
+            obj (object): The given Object to form encode.
+            instance_name (string): The base name to appear before each entry
+                for this object.
+            array_serialization (string): The format of array parameter serialization.
+
+        Returns:
+            dict: A dictionary of form encoded properties of the model.
+
+        """
+        retval = []
+        # If we received an object, resolve it's field names.
+        if hasattr(obj, "_names"):
+            obj = APIHelper.to_dictionary(obj)
+
+        if obj is None:
+            return []
+        elif isinstance(obj, list):
+            for element in APIHelper.serialize_array(instance_name, obj, array_serialization):
+                retval += APIHelper.form_encode(element[1], element[0], array_serialization)
+        elif isinstance(obj, dict):
+            for item in obj:
+                retval += APIHelper.form_encode(obj[item], instance_name + "[" + item + "]", array_serialization)
+        else:
+            retval.append((instance_name, obj))
+
+        return retval
+
+    @staticmethod
+    def to_dictionary(obj):
+        """Creates a dictionary representation of a class instance. The
+        keys are taken from the API description and may differ from language
+        specific variable names of properties.
+
+        Args:
+            obj: The object to be converted into a dictionary.
+
+        Returns:
+            dictionary: A dictionary form of the model with properties in
+            their API formats.
+
+        """
+        dictionary = dict()
+
+        # Loop through all properties in this model
+        for name in obj._names:
+            value = getattr(obj, name)
+            if isinstance(value, list):
+                # Loop through each item
+                dictionary[obj._names[name]] = list()
+                for item in value:
+                    dictionary[obj._names[name]].append(APIHelper.to_dictionary(item) if hasattr(item, "_names") else item)
+            elif isinstance(value, dict):
+                # Loop through each item
+                dictionary[obj._names[name]] = dict()
+                for key in value:
+                    dictionary[obj._names[name]][key] = APIHelper.to_dictionary(value[key]) if hasattr(value[key], "_names") else value[key]
+            else:
+                dictionary[obj._names[name]] = APIHelper.to_dictionary(value) if hasattr(value, "_names") else value
+
+        # Return the result
+        return dictionary
+
+    @staticmethod
+    def when_defined(func, value):
+        return func(value) if value else None
+
+    class CustomDate(object):
+
+        """ A base class for wrapper classes of datetime.
+
+        This class contains methods which help in
+        appropriate serialization of datetime objects.
+
+        """
+
+        def __init__(self, dtime, value=None):
+            self.datetime = dtime
+            if not value:
+                self.value = self.from_datetime(dtime)
+            else:
+                self.value = value
+
+        def __repr__(self):
+            return str(self.value)
+
+        def __getstate__(self):
+            return self.value
+
+        def __setstate__(self, state):
+            pass
+
+    class HttpDateTime(CustomDate):
+
+        """ A wrapper class for datetime to support HTTP date format."""
+
+        @classmethod
+        def from_datetime(cls, date_time):
+            return eut.formatdate(timeval=mktime(date_time.timetuple()),
+                                  localtime=False, usegmt=True)
+
+        @classmethod
+        def from_value(cls, value):
+            dtime = datetime.datetime.fromtimestamp(eut.mktime_tz(eut.parsedate_tz(value)))
+            return cls(dtime, value)
+
+    class UnixDateTime(CustomDate):
+
+        """ A wrapper class for datetime to support Unix date format."""
+
+        @classmethod
+        def from_datetime(cls, date_time):
+            return calendar.timegm(date_time.utctimetuple())
+
+        @classmethod
+        def from_value(cls, value):
+            dtime = datetime.datetime.utcfromtimestamp(float(value))
+            return cls(dtime, float(value))
+
+    class RFC3339DateTime(CustomDate):
+
+        """ A wrapper class for datetime to support Rfc 3339 format."""
+
+        @classmethod
+        def from_datetime(cls, date_time):
+            return date_time.isoformat()
+
+        @classmethod
+        def from_value(cls, value):
+            dtime = dateutil.parser.parse(value)
+            return cls(dtime, value)
diff --git a/firstlanguage_python/configuration.py b/firstlanguage_python/configuration.py
new file mode 100644
index 0000000..ec4147b
--- /dev/null
+++ b/firstlanguage_python/configuration.py
@@ -0,0 +1,159 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+from enum import Enum
+from firstlanguage_python.http.requests_client import RequestsClient
+
+
+class Environment(Enum):
+    """An enum for SDK environments"""
+    # Live Server
+    PRODUCTION = 0
+
+
+class Server(Enum):
+    """An enum for API servers"""
+    DEFAULT = 0
+
+
+class Configuration(object):
+    """A class used for configuring the SDK by a user.
+    """
+
+    @property
+    def http_client(self):
+        return self._http_client
+
+    @property
+    def http_client_instance(self):
+        return self._http_client_instance
+
+    @property
+    def override_http_client_configuration(self):
+        return self._override_http_client_configuration
+
+    @property
+    def timeout(self):
+        return self._timeout
+
+    @property
+    def max_retries(self):
+        return self._max_retries
+
+    @property
+    def backoff_factor(self):
+        return self._backoff_factor
+
+    @property
+    def retry_statuses(self):
+        return self._retry_statuses
+
+    @property
+    def retry_methods(self):
+        return self._retry_methods
+
+    @property
+    def environment(self):
+        return self._environment
+
+    @property
+    def apikey(self):
+        return self._apikey
+
+    def __init__(
+        self, http_client_instance=None,
+        override_http_client_configuration=False, timeout=60, max_retries=0,
+        backoff_factor=2,
+        retry_statuses=[408, 413, 429, 500, 502, 503, 504, 521, 522, 524],
+        retry_methods=['GET', 'PUT'], environment=Environment.PRODUCTION,
+        apikey='BHbLvTKeT4y9PACVomcGBF3GrCv1OUOc'
+    ):
+        # The Http Client passed from the sdk user for making requests
+        self._http_client_instance = http_client_instance
+
+        # The value which determines to override properties of the passed Http Client from the sdk user
+        self._override_http_client_configuration = override_http_client_configuration
+
+        # The value to use for connection timeout
+        self._timeout = timeout
+
+        # The number of times to retry an endpoint call if it fails
+        self._max_retries = max_retries
+
+        # A backoff factor to apply between attempts after the second try.
+        # urllib3 will sleep for:
+        # `{backoff factor} * (2 ** ({number of total retries} - 1))`
+        self._backoff_factor = backoff_factor
+
+        # The http statuses on which retry is to be done
+        self._retry_statuses = retry_statuses
+
+        # The http methods on which retry is to be done
+        self._retry_methods = retry_methods
+
+        # Current API environment
+        self._environment = environment
+
+        # API Key can be copied from your dashboard
+        self._apikey = apikey
+
+        # The Http Client to use for making requests.
+        self._http_client = self.create_http_client()
+
+    def clone_with(self, http_client_instance=None,
+                   override_http_client_configuration=None, timeout=None,
+                   max_retries=None, backoff_factor=None, retry_statuses=None,
+                   retry_methods=None, environment=None, apikey=None):
+        http_client_instance = http_client_instance or self.http_client_instance
+        override_http_client_configuration = override_http_client_configuration or self.override_http_client_configuration
+        timeout = timeout or self.timeout
+        max_retries = max_retries or self.max_retries
+        backoff_factor = backoff_factor or self.backoff_factor
+        retry_statuses = retry_statuses or self.retry_statuses
+        retry_methods = retry_methods or self.retry_methods
+        environment = environment or self.environment
+        apikey = apikey or self.apikey
+
+        return Configuration(
+            http_client_instance=http_client_instance,
+            override_http_client_configuration=override_http_client_configuration,
+            timeout=timeout, max_retries=max_retries,
+            backoff_factor=backoff_factor, retry_statuses=retry_statuses,
+            retry_methods=retry_methods, environment=environment, apikey=apikey
+        )
+
+    def create_http_client(self):
+        return RequestsClient(
+            timeout=self.timeout, max_retries=self.max_retries,
+            backoff_factor=self.backoff_factor, retry_statuses=self.retry_statuses,
+            retry_methods=self.retry_methods,
+            http_client_instance=self.http_client_instance,
+            override_http_client_configuration=self.override_http_client_configuration
+        )
+
+    # All the environments the SDK can run in
+    environments = {
+        Environment.PRODUCTION: {
+            Server.DEFAULT: 'https://api.firstlanguage.in'
+        }
+    }
+
+    def get_base_uri(self, server=Server.DEFAULT):
+        """Generates the appropriate base URI for the environment and the
+        server.
+
+        Args:
+            server (Configuration.Server): The server enum for which the base
+            URI is required.
+
+        Returns:
+            String: The base URI.
+
+        """
+        return self.environments[self.environment][server]
diff --git a/firstlanguage_python/controllers/__init__.py b/firstlanguage_python/controllers/__init__.py
new file mode 100644
index 0000000..58a3d73
--- /dev/null
+++ b/firstlanguage_python/controllers/__init__.py
@@ -0,0 +1,5 @@
+__all__ = [
+    'base_controller',
+    'basic_ap_is_controller',
+    'advanced_ap_is_controller',
+]
diff --git a/firstlanguage_python/controllers/__pycache__/__init__.cpython-39.pyc b/firstlanguage_python/controllers/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..5b030dda3a64f13d4bda656f9a96ad6d4fd72753
GIT binary patch
diff --git a/firstlanguage_python/controllers/__pycache__/advanced_ap_is_controller.cpython-39.pyc b/firstlanguage_python/controllers/__pycache__/advanced_ap_is_controller.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..a6f8a7de39b6f637b93ee438104f232e7db1f2e4
GIT binary patch
diff --git a/firstlanguage_python/controllers/__pycache__/advanced_api_controller.cpython-39.pyc b/firstlanguage_python/controllers/__pycache__/advanced_api_controller.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..ade0b51857d5a662fdb2bbc2306efa8d51913644
GIT binary patch
diff --git a/firstlanguage_python/controllers/__pycache__/base_controller.cpython-39.pyc b/firstlanguage_python/controllers/__pycache__/base_controller.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..3ff45bba22b148e4030dcca3f2fbf8be879d3853
GIT binary patch
diff --git a/firstlanguage_python/controllers/__pycache__/basic_ap_is_controller.cpython-39.pyc b/firstlanguage_python/controllers/__pycache__/basic_ap_is_controller.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..5a9826cb1eff3699f0c8a1f618154ecfb4fbbc03
GIT binary patch
diff --git a/firstlanguage_python/controllers/__pycache__/basic_api_controller.cpython-39.pyc b/firstlanguage_python/controllers/__pycache__/basic_api_controller.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..6cb7beec0bcc015ce276a318d440d74b6823625e
GIT binary patch
diff --git a/firstlanguage_python/controllers/advanced_api_controller.py b/firstlanguage_python/controllers/advanced_api_controller.py
new file mode 100644
index 0000000..f8a36a3
--- /dev/null
+++ b/firstlanguage_python/controllers/advanced_api_controller.py
@@ -0,0 +1,178 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+from firstlanguage_python.api_helper import APIHelper
+from firstlanguage_python.configuration import Server
+from firstlanguage_python.controllers.base_controller import BaseController 
+from firstlanguage_python.http.auth.custom_header_auth import CustomHeaderAuth
+from firstlanguage_python.models.responseclassify import Responseclassify
+from firstlanguage_python.models.api_qa_response import ApiQaResponse
+from firstlanguage_python.models.api_ner_response import ApiNerResponse
+from firstlanguage_python.exceptions.errors_exception import ErrorsException
+from firstlanguage_python.exceptions.api_classify_426_error_exception import ApiClassify426ErrorException
+from firstlanguage_python.exceptions.m_426_error_exception import M426ErrorException
+
+
+class AdvancedAPIsController(BaseController):
+
+    """A Controller to access Endpoints in the firstlanguage API."""
+
+    def __init__(self, config, call_back=None):
+        super(AdvancedAPIsController, self).__init__(config, call_back)
+
+    def get_classification(self,
+                           body):
+        """Does a POST request to /api/classify.
+
+        # Stemmer : Defintion and it's usage
+        # Languages covered:
+
+        Args:
+            body (object): Add a JSON Input as per the schema defined below
+
+        Returns:
+            Responseclassify: Response from the API. Classifies labels.
+
+        Raises:
+            APIException: When an error occurs while fetching the data from
+                the remote API. This exception includes the HTTP Response
+                code, an error message, and the HTTP body that was received in
+                the request.
+
+        """
+
+        # Prepare query URL
+        _url_path = '/api/classify'
+        _query_builder = self.config.get_base_uri()
+        _query_builder += _url_path
+        _query_url = APIHelper.clean_url(_query_builder)
+
+        # Prepare headers
+        _headers = {
+            'accept': 'application/json',
+            'Content-Type': 'application/json'
+        }
+
+        # Prepare and execute request
+        _request = self.config.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body))
+        CustomHeaderAuth.apply(self.config, _request)
+        _response = self.execute_request(_request)
+
+        # Endpoint and global error handling using HTTP status codes.
+        if _response.status_code == 400:
+            raise ErrorsException('Error output', _response)
+        elif _response.status_code == 426:
+            raise ApiClassify426ErrorException('Please use HTTPS protocol', _response)
+        self.validate_response(_response)
+
+        decoded = APIHelper.json_deserialize(_response.text, Responseclassify.from_dictionary)
+
+        return decoded
+
+    def get_qa(self,
+               body=None):
+        """Does a POST request to /api/qa.
+
+        # Stemmer : Defintion and it's usage
+        # Languages covered:
+
+        Args:
+            body (object, optional): Add a JSON Input as per the schema
+                defined below
+
+        Returns:
+            ApiQaResponse: Response from the API. Answer for the question
+                posted.
+
+        Raises:
+            APIException: When an error occurs while fetching the data from
+                the remote API. This exception includes the HTTP Response
+                code, an error message, and the HTTP body that was received in
+                the request.
+
+        """
+
+        # Prepare query URL
+        _url_path = '/api/qa'
+        _query_builder = self.config.get_base_uri()
+        _query_builder += _url_path
+        _query_url = APIHelper.clean_url(_query_builder)
+
+        # Prepare headers
+        _headers = {
+            'accept': 'application/json',
+            'Content-Type': 'application/json'
+        }
+
+        # Prepare and execute request
+        _request = self.config.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body))
+        CustomHeaderAuth.apply(self.config, _request)
+        _response = self.execute_request(_request)
+
+        # Endpoint and global error handling using HTTP status codes.
+        if _response.status_code == 400:
+            raise ErrorsException('Bad Request', _response)
+        elif _response.status_code == 426:
+            raise M426ErrorException('Please use HTTPS protocol', _response)
+        self.validate_response(_response)
+
+        decoded = APIHelper.json_deserialize(_response.text, ApiQaResponse.from_dictionary)
+
+        return decoded
+
+    def get_ner(self,
+                body=None):
+        """Does a POST request to /api/ner.
+
+        # Stemmer : Defintion and it's usage
+        # Languages covered:
+
+        Args:
+            body (object, optional): Add a JSON Input as per the schema
+                defined below
+
+        Returns:
+            list of ApiNerResponse: Response from the API. Array of Named
+                Entites marked from the input given.
+
+        Raises:
+            APIException: When an error occurs while fetching the data from
+                the remote API. This exception includes the HTTP Response
+                code, an error message, and the HTTP body that was received in
+                the request.
+
+        """
+
+        # Prepare query URL
+        _url_path = '/api/ner'
+        _query_builder = self.config.get_base_uri()
+        _query_builder += _url_path
+        _query_url = APIHelper.clean_url(_query_builder)
+
+        # Prepare headers
+        _headers = {
+            'accept': 'application/json',
+            'Content-Type': 'application/json'
+        }
+
+        # Prepare and execute request
+        _request = self.config.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body))
+        CustomHeaderAuth.apply(self.config, _request)
+        _response = self.execute_request(_request)
+
+        # Endpoint and global error handling using HTTP status codes.
+        if _response.status_code == 400:
+            raise ErrorsException('Bad Request', _response)
+        elif _response.status_code == 426:
+            raise M426ErrorException('Please use HTTPS protocol', _response)
+        self.validate_response(_response)
+
+        decoded = APIHelper.json_deserialize(_response.text, ApiNerResponse.from_dictionary)
+
+        return decoded
diff --git a/firstlanguage_python/controllers/base_controller.py b/firstlanguage_python/controllers/base_controller.py
new file mode 100644
index 0000000..e727514
--- /dev/null
+++ b/firstlanguage_python/controllers/base_controller.py
@@ -0,0 +1,95 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+from firstlanguage_python.api_helper import APIHelper
+from firstlanguage_python.exceptions.api_exception import APIException
+
+
+class BaseController(object):
+
+    """All controllers inherit from this base class.
+
+    Attributes:
+        config (Configuration): The HttpClient which a specific controller
+            instance will use. By default all the controller objects share
+            the same HttpClient. A user can use his own custom HttpClient
+            as well.
+        http_call_back (HttpCallBack): An object which holds call back
+            methods to be called before and after the execution of an HttpRequest.
+        global_headers (dict): The global headers of the API which are sent with
+            every request.
+
+    """
+
+    def global_headers(self):
+        return {
+            'user-agent': 'APIMATIC 3.0'
+        }
+
+    def __init__(self, config, call_back=None):
+        self._config = config
+        self._http_call_back = call_back
+
+    @property
+    def config(self):
+        return self._config
+
+    @property
+    def http_call_back(self):
+        return self._http_call_back
+
+    def validate_parameters(self, **kwargs):
+        """Validates required parameters of an endpoint.
+
+        Args:
+            kwargs (dict): A dictionary of the required parameters.
+
+        """
+        for name, value in kwargs.items():
+            if value is None:
+                raise ValueError("Required parameter {} cannot be None.".format(name))
+
+    def execute_request(self, request, binary=False):
+        """Executes an HttpRequest.
+
+        Args:
+            request (HttpRequest): The HttpRequest to execute.
+            binary (bool): A flag which should be set to True if
+                a binary response is expected.
+
+        Returns:
+            HttpResponse: The HttpResponse received.
+
+        """
+        # Invoke the on before request HttpCallBack if specified
+        if self.http_call_back is not None:
+            self.http_call_back.on_before_request(request)
+
+        # Add global headers to request
+        request.headers = APIHelper.merge_dicts(self.global_headers(), request.headers)
+
+        # Invoke the API call to fetch the response.
+        func = self.config.http_client.execute_as_binary if binary else self.config.http_client.execute_as_string
+        response = func(request)
+
+        # Invoke the on after response HttpCallBack if specified
+        if self.http_call_back is not None:
+            self.http_call_back.on_after_response(response)
+
+        return response
+
+    def validate_response(self, response):
+        """Validates an HTTP response by checking for global errors.
+
+        Args:
+            response (HttpResponse): The HttpResponse of the API call.
+
+        """
+        if (response.status_code < 200) or (response.status_code > 208):  # [200,208] = HTTP OK
+            raise APIException('HTTP response not OK.', response)
diff --git a/firstlanguage_python/controllers/basic_api_controller.py b/firstlanguage_python/controllers/basic_api_controller.py
new file mode 100644
index 0000000..f6e8b9a
--- /dev/null
+++ b/firstlanguage_python/controllers/basic_api_controller.py
@@ -0,0 +1,282 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+from firstlanguage_python.api_helper import APIHelper
+from firstlanguage_python.configuration import Server
+from firstlanguage_python.controllers.base_controller import BaseController
+from firstlanguage_python.http.auth.custom_header_auth import CustomHeaderAuth
+from firstlanguage_python.models.responsestem import Responsestem
+from firstlanguage_python.models.responselemma import Responselemma
+from firstlanguage_python.models.responsemorph import Responsemorph
+from firstlanguage_python.models.responsepo import Responsepo
+from firstlanguage_python.exceptions.errors_exception import ErrorsException
+from firstlanguage_python.exceptions.api_stemmer_426_error_exception import ApiStemmer426ErrorException
+from firstlanguage_python.exceptions.api_lemmatize_426_error_exception import ApiLemmatize426ErrorException
+from firstlanguage_python.exceptions.api_morph_426_error_exception import ApiMorph426ErrorException
+from firstlanguage_python.exceptions.api_postag_426_error_exception import ApiPostag426ErrorException
+
+
+class BasicAPIsController(BaseController):
+
+    """A Controller to access Endpoints in the firstlanguage API."""
+
+    def __init__(self, config, call_back=None):
+        super(BasicAPIsController, self).__init__(config, call_back)
+
+    def get_stemmer(self,
+                    body):
+        """Does a POST request to /api/stemmer.
+
+        # Stemmer : Defintion and it's usage
+         A word takes different inflectional forms. For instance, the word,
+         "Compute" can take the forms, "computing", "computation",  and
+         "computerize". The NLP applications such as Search Engines and
+         Information Extraction would want to store the base or stem of the
+         word, i.e "Compute" instead of accomodating all its inflected forms.
+         This will yield in dimensionality reduction and incerases the
+         efficiency of the system. The stemmer cuts the prefix and suffix of a
+         word. 
+         # Languages covered:
+          Our stemmer works for the following  26 languages. Our stemmer works
+          using the snowball stemmer algorithm which is also known as Porter 2
+          Stemming algorithm. 
+          1. Tamil
+          2. Hindi
+          3. English
+          4. Arabic
+          5. Basque
+          6. Catalan
+          7. Danish
+          8. Dutch
+          9. Finnish
+          10.  French
+          11. German
+          12. Greek
+          13. Hungarian
+          14. Indonesian
+          15. Irish
+          16. Italian
+          17. Lithuanian
+          18. Nepali
+          19. Norwegian
+          20. Portuguese
+          21. Romanian
+          22. Russian
+          23. Serbian
+          24. Spanish
+          25. Swedish
+          26. Turkish
+
+        Args:
+            body (object): Add a JSON Input as per the schema defined below
+
+        Returns:
+            list of Responsestem: Response from the API. Stemmed output.
+
+        Raises:
+            APIException: When an error occurs while fetching the data from
+                the remote API. This exception includes the HTTP Response
+                code, an error message, and the HTTP body that was received in
+                the request.
+
+        """
+
+        # Prepare query URL
+        _url_path = '/api/stemmer'
+        _query_builder = self.config.get_base_uri()
+        _query_builder += _url_path
+        _query_url = APIHelper.clean_url(_query_builder)
+
+        # Prepare headers
+        _headers = {
+            'accept': 'application/json',
+            'Content-Type': 'application/json'
+        }
+
+        # Prepare and execute request
+        _request = self.config.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body))
+        CustomHeaderAuth.apply(self.config, _request)
+        _response = self.execute_request(_request)
+        print(_response.status_code)
+        # Endpoint and global error handling using HTTP status codes.
+        if _response.status_code == 400:
+            raise ErrorsException('Error output', _response)
+        elif _response.status_code == 426:
+            raise ApiStemmer426ErrorException('Please use HTTPS protocol', _response)
+        self.validate_response(_response)
+
+        decoded = APIHelper.json_deserialize(_response.text, Responsestem.from_dictionary)
+
+        return decoded
+
+    def get_lemma(self,
+                  body):
+        """Does a POST request to /api/lemmatize.
+
+        # Stemmer : Defintion and it's usage
+        # Languages covered:
+
+        Args:
+            body (object): Add a JSON Input as per the schema defined below
+
+        Returns:
+            list of Responselemma: Response from the API. Lemmatized output.
+
+        Raises:
+            APIException: When an error occurs while fetching the data from
+                the remote API. This exception includes the HTTP Response
+                code, an error message, and the HTTP body that was received in
+                the request.
+
+        """
+
+        # Prepare query URL
+        _url_path = '/api/lemmatize'
+        _query_builder = self.config.get_base_uri()
+        _query_builder += _url_path
+        _query_url = APIHelper.clean_url(_query_builder)
+
+        # Prepare headers
+        _headers = {
+            'accept': 'application/json',
+            'Content-Type': 'application/json'
+        }
+
+        # Prepare and execute request
+        _request = self.config.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body))
+        CustomHeaderAuth.apply(self.config, _request)
+        _response = self.execute_request(_request)
+
+        # Endpoint and global error handling using HTTP status codes.
+        if _response.status_code == 400:
+            raise ErrorsException('Error output', _response)
+        elif _response.status_code == 426:
+            raise ApiLemmatize426ErrorException('Please use HTTPS protocol', _response)
+        self.validate_response(_response)
+
+        decoded = APIHelper.json_deserialize(_response.text, Responselemma.from_dictionary)
+
+        return decoded
+
+    def get_morph(self,
+                  body):
+        """Does a POST request to /api/morph.
+
+        # Stemmer : Defintion and it's usage
+        # Languages covered:
+
+        Args:
+            body (object): Add a JSON Input as per the schema defined below
+
+        Returns:
+            Responsemorph: Response from the API. Morphological output.
+
+        Raises:
+            APIException: When an error occurs while fetching the data from
+                the remote API. This exception includes the HTTP Response
+                code, an error message, and the HTTP body that was received in
+                the request.
+
+        """
+
+        # Prepare query URL
+        _url_path = '/api/morph'
+        _query_builder = self.config.get_base_uri()
+        _query_builder += _url_path
+        _query_url = APIHelper.clean_url(_query_builder)
+
+        # Prepare headers
+        _headers = {
+            'accept': 'application/json',
+            'Content-Type': 'application/json'
+        }
+
+        # Prepare and execute request
+        _request = self.config.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body))
+        CustomHeaderAuth.apply(self.config, _request)
+        _response = self.execute_request(_request)
+
+        # Endpoint and global error handling using HTTP status codes.
+        if _response.status_code == 400:
+            raise ErrorsException('Error output', _response)
+        elif _response.status_code == 426:
+            raise ApiMorph426ErrorException('Please use HTTPS protocol', _response)
+        self.validate_response(_response)
+
+        decoded = APIHelper.json_deserialize(_response.text, Responsemorph.from_dictionary)
+
+        return decoded
+
+    def get_postag(self,
+                   body):
+        """Does a POST request to /api/postag.
+
+         **So, What is a POS Tagger?**
+          Parts Of Speech Tagger, which is shortly known as POS Tagger is a
+          software that automatically finds the word classes, when a text
+          input is given. The text input can be a word, a sentence or a set of
+          sentences. The word classes are the grammatical categories such as,
+          Noun, Verb, Adverb etc. These category assigned to each word is a
+          tag. A set of tags, each indicating a grammatical category is
+          called, "tagsets". POS tagging is a mandatory pre processing for
+          most of the Natural Language Processing Applications such as,
+          Information Extraction, Information Retreival systems and Summary
+          generation systems.
+        **Is POS Tagger, a language-independent software?**
+        No. A POS Tagger is a language-dependent software as the grammar rules
+        will differ for every language. For instance, A word ending with "ing"
+        might indicate a Verb" in English but this will not be applicable for
+        other languages.
+        **For what languages, our  POS Tagger API will work?**
+        At present, our POS Tagger API works for English and Tami Languages.
+        Soon we will extend the APIs to accomodate more languages. 
+        **How Precise are our POS Tagger API?**
+        will update accuracy metrics soon .....
+
+        Args:
+            body (object): Add a JSON Input as per the schema defined below
+
+        Returns:
+            list of Responsepo: Response from the API. POSTAG output.
+
+        Raises:
+            APIException: When an error occurs while fetching the data from
+                the remote API. This exception includes the HTTP Response
+                code, an error message, and the HTTP body that was received in
+                the request.
+
+        """
+
+        # Prepare query URL
+        _url_path = '/api/postag'
+        _query_builder = self.config.get_base_uri()
+        _query_builder += _url_path
+        _query_url = APIHelper.clean_url(_query_builder)
+
+        # Prepare headers
+        _headers = {
+            'accept': 'application/json',
+            'Content-Type': 'application/json'
+        }
+
+        # Prepare and execute request
+        _request = self.config.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body))
+        CustomHeaderAuth.apply(self.config, _request)
+        _response = self.execute_request(_request)
+
+        # Endpoint and global error handling using HTTP status codes.
+        if _response.status_code == 400:
+            raise ErrorsException('Error output', _response)
+        elif _response.status_code == 426:
+            raise ApiPostag426ErrorException('Please use HTTPS protocol', _response)
+        self.validate_response(_response)
+
+        decoded = APIHelper.json_deserialize(_response.text, Responsepo.from_dictionary)
+
+        return decoded
diff --git a/firstlanguage_python/decorators.py b/firstlanguage_python/decorators.py
new file mode 100644
index 0000000..caa44eb
--- /dev/null
+++ b/firstlanguage_python/decorators.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+
+class lazy_property(object):
+
+    """A decorator class for lazy instantiation."""
+
+    def __init__(self, fget):
+        self.fget = fget
+        self.func_name = fget.__name__
+
+    def __get__(self, obj, cls):
+        if obj is None:
+            return None
+        value = self.fget(obj)
+        setattr(obj, self.func_name, value)
+        return value
diff --git a/firstlanguage_python/exceptions/__init__.py b/firstlanguage_python/exceptions/__init__.py
new file mode 100644
index 0000000..9db4cbc
--- /dev/null
+++ b/firstlanguage_python/exceptions/__init__.py
@@ -0,0 +1,10 @@
+__all__ = [
+    'api_exception',
+    'errors_exception',
+    'm_426_error_exception',
+    'api_classify_426_error_exception',
+    'api_lemmatize_426_error_exception',
+    'api_morph_426_error_exception',
+    'api_postag_426_error_exception',
+    'api_stemmer_426_error_exception',
+]
diff --git a/firstlanguage_python/exceptions/__pycache__/__init__.cpython-39.pyc b/firstlanguage_python/exceptions/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..bdf5bf41ab46a100f810de41902be200a252f8cb
GIT binary patch
diff --git a/firstlanguage_python/exceptions/__pycache__/api_classify_426_error_exception.cpython-39.pyc b/firstlanguage_python/exceptions/__pycache__/api_classify_426_error_exception.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..b9a0ff7fb5ae1e6c08e4512089c00125b1995a54
GIT binary patch
diff --git a/firstlanguage_python/exceptions/__pycache__/api_exception.cpython-39.pyc b/firstlanguage_python/exceptions/__pycache__/api_exception.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..8c2f6d362363395c0994c1d12296594218b278ee
GIT binary patch
diff --git a/firstlanguage_python/exceptions/__pycache__/api_lemmatize_426_error_exception.cpython-39.pyc b/firstlanguage_python/exceptions/__pycache__/api_lemmatize_426_error_exception.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..21c054c5e8df00564cb4acef662b51d94ba36ea9
GIT binary patch
diff --git a/firstlanguage_python/exceptions/__pycache__/api_morph_426_error_exception.cpython-39.pyc b/firstlanguage_python/exceptions/__pycache__/api_morph_426_error_exception.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..66c8aab164b1308824215dbe9d47c7ba3fcc8b0d
GIT binary patch
diff --git a/firstlanguage_python/exceptions/__pycache__/api_postag_426_error_exception.cpython-39.pyc b/firstlanguage_python/exceptions/__pycache__/api_postag_426_error_exception.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..3f8d659663eb54994b1389be9c41b800706b211d
GIT binary patch
diff --git a/firstlanguage_python/exceptions/__pycache__/api_stemmer_426_error_exception.cpython-39.pyc b/firstlanguage_python/exceptions/__pycache__/api_stemmer_426_error_exception.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..02be921489e3cf3fe7fed3d43df5dfd32f9d2ae6
GIT binary patch
diff --git a/firstlanguage_python/exceptions/__pycache__/errors_exception.cpython-39.pyc b/firstlanguage_python/exceptions/__pycache__/errors_exception.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..9089110571bafb6ee265801e3e896a106ab6f477
GIT binary patch
diff --git a/firstlanguage_python/exceptions/__pycache__/m_426_error_exception.cpython-39.pyc b/firstlanguage_python/exceptions/__pycache__/m_426_error_exception.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..cbe8ccae92734b9a8f66847256b9dd737ffd3bb6
GIT binary patch
diff --git a/firstlanguage_python/exceptions/api_classify_426_error_exception.py b/firstlanguage_python/exceptions/api_classify_426_error_exception.py
new file mode 100644
index 0000000..ffbb26f
--- /dev/null
+++ b/firstlanguage_python/exceptions/api_classify_426_error_exception.py
@@ -0,0 +1,38 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+from firstlanguage_python.api_helper import APIHelper
+import firstlanguage_python.exceptions.api_exception
+
+
+class ApiClassify426ErrorException(firstlanguage_python.exceptions.api_exception.APIException):
+    def __init__(self, reason, response):
+        """Constructor for the ApiClassify426ErrorException class
+
+        Args:
+            reason (string): The reason (or error message) for the Exception
+                to be raised.
+            response (HttpResponse): The HttpResponse of the API call.
+
+        """
+        super(ApiClassify426ErrorException, self).__init__(reason, response)
+        dictionary = APIHelper.json_deserialize(self.response.text)
+        if isinstance(dictionary, dict):
+            self.unbox(dictionary)
+
+    def unbox(self, dictionary):
+        """Populates the properties of this object by extracting them from a dictionary.
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object as
+            obtained from the deserialization of the server's response. The keys
+            MUST match property names in the API description.
+
+        """
+        self.message = dictionary.get('message')
diff --git a/firstlanguage_python/exceptions/api_exception.py b/firstlanguage_python/exceptions/api_exception.py
new file mode 100644
index 0000000..6d428b2
--- /dev/null
+++ b/firstlanguage_python/exceptions/api_exception.py
@@ -0,0 +1,35 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+
+class APIException(Exception):
+
+    """Class that handles HTTP Exceptions when fetching API Endpoints.
+
+    Attributes:
+        response_code (int): The status code of the response.
+        response (HttpResponse): The HttpResponse of the API call.
+
+    """
+
+    def __init__(self,
+                 reason,
+                 response):
+        """Constructor for the APIException class
+
+        Args:
+            reason (string): The reason (or error message) for the Exception
+                to be raised.
+            response (HttpResponse): The HttpResponse of the API call.
+
+        """
+        super(APIException, self).__init__(reason)
+        self.reason = reason
+        self.response = response
+        self.response_code = response.status_code
diff --git a/firstlanguage_python/exceptions/api_lemmatize_426_error_exception.py b/firstlanguage_python/exceptions/api_lemmatize_426_error_exception.py
new file mode 100644
index 0000000..830034f
--- /dev/null
+++ b/firstlanguage_python/exceptions/api_lemmatize_426_error_exception.py
@@ -0,0 +1,38 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+from firstlanguage_python.api_helper import APIHelper
+import firstlanguage_python.exceptions.api_exception
+
+
+class ApiLemmatize426ErrorException(firstlanguage_python.exceptions.api_exception.APIException):
+    def __init__(self, reason, response):
+        """Constructor for the ApiLemmatize426ErrorException class
+
+        Args:
+            reason (string): The reason (or error message) for the Exception
+                to be raised.
+            response (HttpResponse): The HttpResponse of the API call.
+
+        """
+        super(ApiLemmatize426ErrorException, self).__init__(reason, response)
+        dictionary = APIHelper.json_deserialize(self.response.text)
+        if isinstance(dictionary, dict):
+            self.unbox(dictionary)
+
+    def unbox(self, dictionary):
+        """Populates the properties of this object by extracting them from a dictionary.
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object as
+            obtained from the deserialization of the server's response. The keys
+            MUST match property names in the API description.
+
+        """
+        self.message = dictionary.get('message')
diff --git a/firstlanguage_python/exceptions/api_morph_426_error_exception.py b/firstlanguage_python/exceptions/api_morph_426_error_exception.py
new file mode 100644
index 0000000..7bef4f4
--- /dev/null
+++ b/firstlanguage_python/exceptions/api_morph_426_error_exception.py
@@ -0,0 +1,38 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+from firstlanguage_python.api_helper import APIHelper
+import firstlanguage_python.exceptions.api_exception
+
+
+class ApiMorph426ErrorException(firstlanguage_python.exceptions.api_exception.APIException):
+    def __init__(self, reason, response):
+        """Constructor for the ApiMorph426ErrorException class
+
+        Args:
+            reason (string): The reason (or error message) for the Exception
+                to be raised.
+            response (HttpResponse): The HttpResponse of the API call.
+
+        """
+        super(ApiMorph426ErrorException, self).__init__(reason, response)
+        dictionary = APIHelper.json_deserialize(self.response.text)
+        if isinstance(dictionary, dict):
+            self.unbox(dictionary)
+
+    def unbox(self, dictionary):
+        """Populates the properties of this object by extracting them from a dictionary.
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object as
+            obtained from the deserialization of the server's response. The keys
+            MUST match property names in the API description.
+
+        """
+        self.message = dictionary.get('message')
diff --git a/firstlanguage_python/exceptions/api_postag_426_error_exception.py b/firstlanguage_python/exceptions/api_postag_426_error_exception.py
new file mode 100644
index 0000000..ebc12c8
--- /dev/null
+++ b/firstlanguage_python/exceptions/api_postag_426_error_exception.py
@@ -0,0 +1,38 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+from firstlanguage_python.api_helper import APIHelper
+import firstlanguage_python.exceptions.api_exception
+
+
+class ApiPostag426ErrorException(firstlanguage_python.exceptions.api_exception.APIException):
+    def __init__(self, reason, response):
+        """Constructor for the ApiPostag426ErrorException class
+
+        Args:
+            reason (string): The reason (or error message) for the Exception
+                to be raised.
+            response (HttpResponse): The HttpResponse of the API call.
+
+        """
+        super(ApiPostag426ErrorException, self).__init__(reason, response)
+        dictionary = APIHelper.json_deserialize(self.response.text)
+        if isinstance(dictionary, dict):
+            self.unbox(dictionary)
+
+    def unbox(self, dictionary):
+        """Populates the properties of this object by extracting them from a dictionary.
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object as
+            obtained from the deserialization of the server's response. The keys
+            MUST match property names in the API description.
+
+        """
+        self.message = dictionary.get('message')
diff --git a/firstlanguage_python/exceptions/api_stemmer_426_error_exception.py b/firstlanguage_python/exceptions/api_stemmer_426_error_exception.py
new file mode 100644
index 0000000..22e4084
--- /dev/null
+++ b/firstlanguage_python/exceptions/api_stemmer_426_error_exception.py
@@ -0,0 +1,38 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+from firstlanguage_python.api_helper import APIHelper
+import firstlanguage_python.exceptions.api_exception
+
+
+class ApiStemmer426ErrorException(firstlanguage_python.exceptions.api_exception.APIException):
+    def __init__(self, reason, response):
+        """Constructor for the ApiStemmer426ErrorException class
+
+        Args:
+            reason (string): The reason (or error message) for the Exception
+                to be raised.
+            response (HttpResponse): The HttpResponse of the API call.
+
+        """
+        super(ApiStemmer426ErrorException, self).__init__(reason, response)
+        dictionary = APIHelper.json_deserialize(self.response.text)
+        if isinstance(dictionary, dict):
+            self.unbox(dictionary)
+
+    def unbox(self, dictionary):
+        """Populates the properties of this object by extracting them from a dictionary.
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object as
+            obtained from the deserialization of the server's response. The keys
+            MUST match property names in the API description.
+
+        """
+        self.message = dictionary.get('message')
diff --git a/firstlanguage_python/exceptions/errors_exception.py b/firstlanguage_python/exceptions/errors_exception.py
new file mode 100644
index 0000000..b41235e
--- /dev/null
+++ b/firstlanguage_python/exceptions/errors_exception.py
@@ -0,0 +1,41 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+from firstlanguage_python.api_helper import APIHelper
+import firstlanguage_python.exceptions.api_exception
+from firstlanguage_python.models.errors_1 import Errors1
+
+
+class ErrorsException(firstlanguage_python.exceptions.api_exception.APIException):
+    def __init__(self, reason, response):
+        """Constructor for the ErrorsException class
+
+        Args:
+            reason (string): The reason (or error message) for the Exception
+                to be raised.
+            response (HttpResponse): The HttpResponse of the API call.
+
+        """
+        super(ErrorsException, self).__init__(reason, response)
+        dictionary = APIHelper.json_deserialize(self.response.text)
+        if isinstance(dictionary, dict):
+            self.unbox(dictionary)
+
+    def unbox(self, dictionary):
+        """Populates the properties of this object by extracting them from a dictionary.
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object as
+            obtained from the deserialization of the server's response. The keys
+            MUST match property names in the API description.
+
+        """
+        self.errors = None
+        if dictionary.get('errors') is not None:
+            self.errors = [Errors1.from_dictionary(x) for x in dictionary.get('errors')]
diff --git a/firstlanguage_python/exceptions/m_426_error_exception.py b/firstlanguage_python/exceptions/m_426_error_exception.py
new file mode 100644
index 0000000..afbbfce
--- /dev/null
+++ b/firstlanguage_python/exceptions/m_426_error_exception.py
@@ -0,0 +1,38 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+from firstlanguage_python.api_helper import APIHelper
+import firstlanguage_python.exceptions.api_exception
+
+
+class M426ErrorException(firstlanguage_python.exceptions.api_exception.APIException):
+    def __init__(self, reason, response):
+        """Constructor for the M426ErrorException class
+
+        Args:
+            reason (string): The reason (or error message) for the Exception
+                to be raised.
+            response (HttpResponse): The HttpResponse of the API call.
+
+        """
+        super(M426ErrorException, self).__init__(reason, response)
+        dictionary = APIHelper.json_deserialize(self.response.text)
+        if isinstance(dictionary, dict):
+            self.unbox(dictionary)
+
+    def unbox(self, dictionary):
+        """Populates the properties of this object by extracting them from a dictionary.
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object as
+            obtained from the deserialization of the server's response. The keys
+            MUST match property names in the API description.
+
+        """
+        self.message = dictionary.get('message')
diff --git a/firstlanguage_python/firstlanguage_client.py b/firstlanguage_python/firstlanguage_client.py
new file mode 100644
index 0000000..0eeb624
--- /dev/null
+++ b/firstlanguage_python/firstlanguage_client.py
@@ -0,0 +1,47 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+from firstlanguage_python.decorators import lazy_property
+from firstlanguage_python.configuration import Configuration
+from firstlanguage_python.configuration import Environment
+from firstlanguage_python.controllers.basic_api_controller\
+    import BasicAPIsController
+from firstlanguage_python.controllers.advanced_api_controller\
+    import AdvancedAPIsController
+
+
+class Client(object):
+
+    @lazy_property
+    def basic_api(self):
+        return BasicAPIsController(self.config)
+
+    @lazy_property
+    def advanced_api(self):
+        return AdvancedAPIsController(self.config)
+
+    def __init__(self, http_client_instance=None,
+                 override_http_client_configuration=False, timeout=60,
+                 max_retries=0, backoff_factor=2,
+                 retry_statuses=[408, 413, 429, 500, 502, 503, 504, 521, 522, 524],
+                 retry_methods=['GET', 'PUT'],
+                 environment=Environment.PRODUCTION, apikey='BHbLvTKeT4y9PACVomcGBF3GrCv1OUOc',
+                 config=None):
+        if config is None:
+            self.config = Configuration(
+                                         http_client_instance=http_client_instance,
+                                         override_http_client_configuration=override_http_client_configuration,
+                                         timeout=timeout,
+                                         max_retries=max_retries,
+                                         backoff_factor=backoff_factor,
+                                         retry_statuses=retry_statuses,
+                                         retry_methods=retry_methods,
+                                         environment=environment, apikey=apikey)
+        else:
+            self.config = config
diff --git a/firstlanguage_python/http/__init__.py b/firstlanguage_python/http/__init__.py
new file mode 100644
index 0000000..4348222
--- /dev/null
+++ b/firstlanguage_python/http/__init__.py
@@ -0,0 +1,9 @@
+__all__ = [
+    'auth',
+    'http_method_enum',
+    'http_request',
+    'http_response',
+    'http_client',
+    'requests_client',
+    'http_call_back',
+]
diff --git a/firstlanguage_python/http/__pycache__/__init__.cpython-39.pyc b/firstlanguage_python/http/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..da8d012fc2f6d2d434738b042e5e11b60be7d389
GIT binary patch
diff --git a/firstlanguage_python/http/__pycache__/http_call_back.cpython-39.pyc b/firstlanguage_python/http/__pycache__/http_call_back.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..0b25e9deeac9e9822fc8e5e74d30362a1ba605ea
GIT binary patch
diff --git a/firstlanguage_python/http/__pycache__/http_client.cpython-39.pyc b/firstlanguage_python/http/__pycache__/http_client.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..faa1d21fff8e99737fea0289c507d774298fb2a4
GIT binary patch
diff --git a/firstlanguage_python/http/__pycache__/http_method_enum.cpython-39.pyc b/firstlanguage_python/http/__pycache__/http_method_enum.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..c407c0e79fd741f5cdad14861b35dc08ce58654c
GIT binary patch
diff --git a/firstlanguage_python/http/__pycache__/http_request.cpython-39.pyc b/firstlanguage_python/http/__pycache__/http_request.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..036b223544b71037e178a3d29e33d5ccbb58a72a
GIT binary patch
diff --git a/firstlanguage_python/http/__pycache__/http_response.cpython-39.pyc b/firstlanguage_python/http/__pycache__/http_response.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..57cde19842a0f435fe2abbfe5fca7d1b56bf536d
GIT binary patch
diff --git a/firstlanguage_python/http/__pycache__/requests_client.cpython-39.pyc b/firstlanguage_python/http/__pycache__/requests_client.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..5e76ddd65d87a70e70c653e44f3671e924d13a71
GIT binary patch
diff --git a/firstlanguage_python/http/auth/__init__.py b/firstlanguage_python/http/auth/__init__.py
new file mode 100644
index 0000000..0f713be
--- /dev/null
+++ b/firstlanguage_python/http/auth/__init__.py
@@ -0,0 +1,3 @@
+__all__ = [
+    'custom_header_auth',
+]
diff --git a/firstlanguage_python/http/auth/__pycache__/__init__.cpython-39.pyc b/firstlanguage_python/http/auth/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..32ff97fa58dcbcf56859702c6e0859e87e0a2549
GIT binary patch
diff --git a/firstlanguage_python/http/auth/__pycache__/custom_header_auth.cpython-39.pyc b/firstlanguage_python/http/auth/__pycache__/custom_header_auth.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..dc68234eef6d1250e02ca981b0ee651f290b31b8
GIT binary patch
diff --git a/firstlanguage_python/http/auth/custom_header_auth.py b/firstlanguage_python/http/auth/custom_header_auth.py
new file mode 100644
index 0000000..67878c2
--- /dev/null
+++ b/firstlanguage_python/http/auth/custom_header_auth.py
@@ -0,0 +1,37 @@
+# -*- coding: utf-8 -*-
+import random
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+user_agent_list = [
+'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Safari/605.1.15',
+'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0',
+'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36',
+'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:77.0) Gecko/20100101 Firefox/77.0',
+'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36',
+]
+
+
+class CustomHeaderAuth:
+
+    @staticmethod
+    def apply(config, http_request):
+        """ Add custom authentication to the request.
+
+        Args:
+            config (Configuration): The Configuration object which holds the
+                authentication information.
+            http_request (HttpRequest): The HttpRequest object to which
+                authentication will be added.
+
+        """
+        #Pick a random user agent
+        user_agent = random.choice(user_agent_list)
+        http_request.add_header("apikey", config.apikey)
+        http_request.add_header("User-Agent", user_agent)
+        http_request.add_header("Accept", "application/json")
+        http_request.add_header("Accept-Encoding", "gzip, deflate")
diff --git a/firstlanguage_python/http/http_call_back.py b/firstlanguage_python/http/http_call_back.py
new file mode 100644
index 0000000..76518de
--- /dev/null
+++ b/firstlanguage_python/http/http_call_back.py
@@ -0,0 +1,38 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+
+class HttpCallBack(object):
+
+    """An interface for  the callback to be called before and after the
+    HTTP call for an endpoint is made.
+
+    This class should not be instantiated but should be used as a base class
+    for HttpCallBack classes.
+
+    """
+
+    def on_before_request(self,
+                          request):
+        """The controller will call this method before making the HttpRequest.
+
+        Args:
+            request (HttpRequest): The request object which will be sent
+                to the HttpClient to be executed.
+        """
+        raise NotImplementedError("This method has not been implemented.")
+
+    def on_after_response(self,
+                          http_response):
+        """The controller will call this method after making the HttpRequest.
+
+        Args:
+            http_response (HttpResponse): The HttpResponse of the API call.
+        """
+        raise NotImplementedError("This method has not been implemented.")
diff --git a/firstlanguage_python/http/http_client.py b/firstlanguage_python/http/http_client.py
new file mode 100644
index 0000000..b92e9cd
--- /dev/null
+++ b/firstlanguage_python/http/http_client.py
@@ -0,0 +1,210 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+from firstlanguage_python.http.http_method_enum import HttpMethodEnum
+from firstlanguage_python.http.http_request import HttpRequest
+
+
+class HttpClient(object):
+
+    """An interface for the methods that an HTTP Client must implement
+
+    This class should not be instantiated but should be used as a base class
+    for HTTP Client classes.
+
+    """
+
+    def execute_as_string(self, request):
+        """Execute a given HttpRequest to get a string response back
+
+        Args:
+            request (HttpRequest): The given HttpRequest to execute.
+
+        Returns:
+            HttpResponse: The response of the HttpRequest.
+
+        """
+        raise NotImplementedError("Please Implement this method")
+
+    def execute_as_binary(self, request):
+        """Execute a given HttpRequest to get a binary response back
+
+        Args:
+            request (HttpRequest): The given HttpRequest to execute.
+
+        Returns:
+            HttpResponse: The response of the HttpRequest.
+
+        """
+        raise NotImplementedError("Please Implement this method")
+
+    def convert_response(self, response, binary):
+        """Converts the Response object of the HttpClient into an
+        HttpResponse object.
+
+        Args:
+            response (dynamic): The original response object.
+
+        Returns:
+            HttpResponse: The converted HttpResponse object.
+
+        """
+        raise NotImplementedError("Please Implement this method")
+
+    def get(self, query_url,
+            headers={},
+            query_parameters={}):
+        """Create a simple GET HttpRequest object for the given parameters
+
+        Args:
+            query_url (string): The URL to send the request to.
+            headers (dict, optional): The headers for the HTTP Request.
+            query_parameters (dict, optional): Query parameters to add in the
+                URL.
+
+        Returns:
+            HttpRequest: The generated HttpRequest for the given paremeters.
+
+        """
+        return HttpRequest(HttpMethodEnum.GET,
+                           query_url,
+                           headers,
+                           query_parameters,
+                           None,
+                           None)
+
+    def head(self, query_url,
+             headers={},
+             query_parameters={}):
+        """Create a simple HEAD HttpRequest object for the given parameters
+
+        Args:
+            query_url (string): The URL to send the request to.
+            headers (dict, optional): The headers for the HTTP Request.
+            query_parameters (dict, optional): Query parameters to add in the
+                URL.
+
+        Returns:
+            HttpRequest: The generated HttpRequest for the given paremeters.
+
+        """
+        return HttpRequest(HttpMethodEnum.HEAD,
+                           query_url,
+                           headers,
+                           query_parameters,
+                           None,
+                           None)
+
+    def post(self, query_url,
+             headers={},
+             query_parameters={},
+             parameters={},
+             files={}):
+        """Create a simple POST HttpRequest object for the given parameters
+
+        Args:
+            query_url (string): The URL to send the request to.
+            headers (dict, optional): The headers for the HTTP Request.
+            query_parameters (dict, optional): Query parameters to add in the
+                URL.
+            parameters (dict, optional): Form or body parameters to be included
+                in the body.
+            files (dict, optional): Files to be sent with the request.
+
+        Returns:
+            HttpRequest: The generated HttpRequest for the given paremeters.
+
+        """
+        return HttpRequest(HttpMethodEnum.POST,
+                           query_url,
+                           headers,
+                           query_parameters,
+                           parameters,
+                           files)
+
+    def put(self, query_url,
+            headers={},
+            query_parameters={},
+            parameters={},
+            files={}):
+        """Create a simple PUT HttpRequest object for the given parameters
+
+        Args:
+            query_url (string): The URL to send the request to.
+            headers (dict, optional): The headers for the HTTP Request.
+            query_parameters (dict, optional): Query parameters to add in the
+                URL.
+            parameters (dict, optional): Form or body parameters to be included
+                in the body.
+            files (dict, optional): Files to be sent with the request.
+
+        Returns:
+            HttpRequest: The generated HttpRequest for the given paremeters.
+
+        """
+        return HttpRequest(HttpMethodEnum.PUT,
+                           query_url,
+                           headers,
+                           query_parameters,
+                           parameters,
+                           files)
+
+    def patch(self, query_url,
+              headers={},
+              query_parameters={},
+              parameters={},
+              files={}):
+        """Create a simple PATCH HttpRequest object for the given parameters
+
+        Args:
+            query_url (string): The URL to send the request to.
+            headers (dict, optional): The headers for the HTTP Request.
+            query_parameters (dict, optional): Query parameters to add in the
+                URL.
+            parameters (dict, optional): Form or body parameters to be included
+                in the body.
+            files (dict, optional): Files to be sent with the request.
+
+        Returns:
+            HttpRequest: The generated HttpRequest for the given paremeters.
+
+        """
+        return HttpRequest(HttpMethodEnum.PATCH,
+                           query_url,
+                           headers,
+                           query_parameters,
+                           parameters,
+                           files)
+
+    def delete(self, query_url,
+               headers={},
+               query_parameters={},
+               parameters={},
+               files={}):
+        """Create a simple DELETE HttpRequest object for the given parameters
+
+        Args:
+            query_url (string): The URL to send the request to.
+            headers (dict, optional): The headers for the HTTP Request.
+            query_parameters (dict, optional): Query parameters to add in the
+                URL.
+            parameters (dict, optional): Form or body parameters to be
+                included in the body.
+            files (dict, optional): Files to be sent with the request.
+
+        Returns:
+            HttpRequest: The generated HttpRequest for the given paremeters.
+
+        """
+        return HttpRequest(HttpMethodEnum.DELETE,
+                           query_url,
+                           headers,
+                           query_parameters,
+                           parameters,
+                           files)
diff --git a/firstlanguage_python/http/http_method_enum.py b/firstlanguage_python/http/http_method_enum.py
new file mode 100644
index 0000000..e960847
--- /dev/null
+++ b/firstlanguage_python/http/http_method_enum.py
@@ -0,0 +1,50 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+
+class HttpMethodEnum(object):
+
+    """Enumeration of an HTTP Method
+
+    Attributes:
+        GET: A GET Request
+        POST: A POST Request
+        PUT: A PUT Request
+        PATCH: A PATCH Request
+        DELETE: A DELETE Request
+
+    """
+
+    GET = "GET"
+
+    POST = "POST"
+
+    PUT = "PUT"
+
+    PATCH = "PATCH"
+
+    DELETE = "DELETE"
+
+    HEAD = "HEAD"
+
+    @classmethod
+    def to_string(cls, val):
+        """Returns the string equivalent for the Enum.
+
+        """
+        for k, v in list(vars(cls).items()):
+            if v == val:
+                return k
+
+    @classmethod
+    def from_string(cls, str):
+        """Creates an instance of the Enum from a given string.
+
+        """
+        return getattr(cls, str.upper(), None)
diff --git a/firstlanguage_python/http/http_request.py b/firstlanguage_python/http/http_request.py
new file mode 100644
index 0000000..d6ee996
--- /dev/null
+++ b/firstlanguage_python/http/http_request.py
@@ -0,0 +1,88 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+from firstlanguage_python.api_helper import APIHelper
+
+
+class HttpRequest(object):
+
+    """Information about an HTTP Request including its method, headers,
+        parameters, URL, and Basic Auth details
+
+    Attributes:
+        http_method (HttpMethodEnum): The HTTP Method that this request should
+            perform when called.
+        headers (dict): A dictionary of headers (key : value) that should be
+            sent along with the request.
+        query_url (string): The URL that the request should be sent to.
+        parameters (dict): A dictionary of parameters that are to be sent along
+            with the request in the form body of the request
+
+    """
+
+    def __init__(self,
+                 http_method,
+                 query_url,
+                 headers=None,
+                 query_parameters=None,
+                 parameters=None,
+                 files=None):
+        """Constructor for the HttpRequest class
+
+        Args:
+            http_method (HttpMethodEnum): The HTTP Method.
+            query_url (string): The URL to send the request to.
+            headers (dict, optional): The headers for the HTTP Request.
+            query_parameters (dict, optional): Query parameters to add in the
+                URL.
+            parameters (dict, optional): Form or body parameters to be included
+                in the body.
+            files (dict, optional): Files to be sent with the request.
+
+        """
+        self.http_method = http_method
+        self.query_url = query_url
+        self.headers = headers
+        self.query_parameters = query_parameters
+        self.parameters = parameters
+        self.files = files
+
+    def add_header(self, name, value):
+        """ Add a header to the HttpRequest.
+
+        Args:
+            name (string): The name of the header.
+            value (string): The value of the header.
+
+        """
+        self.headers[name] = value
+
+    def add_parameter(self, name, value):
+        """ Add a parameter to the HttpRequest.
+
+        Args:
+            name (string): The name of the parameter.
+            value (string): The value of the parameter.
+
+        """
+        self.parameters[name] = value
+
+    def add_query_parameter(self, name, value):
+        """ Add a query parameter to the HttpRequest.
+
+        Args:
+            name (string): The name of the query parameter.
+            value (string): The value of the query parameter.
+
+        """
+        self.query_url = APIHelper.append_url_with_query_parameters(
+            self.query_url,
+            {name: value}
+        )
+        self.query_url = APIHelper.clean_url(self.query_url)
diff --git a/firstlanguage_python/http/http_response.py b/firstlanguage_python/http/http_response.py
new file mode 100644
index 0000000..cbaebd5
--- /dev/null
+++ b/firstlanguage_python/http/http_response.py
@@ -0,0 +1,47 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+
+class HttpResponse(object):
+
+    """Information about an HTTP Response including its status code, returned
+        headers, and raw body
+
+    Attributes:
+        status_code (int): The status code response from the server that
+            corresponds to this response.
+        reason_phrase (string): The reason phrase returned by the server.
+        headers (dict): A dictionary of headers (key : value) that were
+            returned with the response
+        text (string): The Raw body of the HTTP Response as a string
+        request (HttpRequest): The request that resulted in this response.
+
+    """
+
+    def __init__(self,
+                 status_code,
+                 reason_phrase,
+                 headers,
+                 text,
+                 request):
+        """Constructor for the HttpResponse class
+
+        Args:
+            status_code (int): The response status code.
+            reason_phrase (string): The response reason phrase.
+            headers (dict): The response headers.
+            text (string): The raw body from the server.
+            request (HttpRequest): The request that resulted in this response.
+
+        """
+        self.status_code = status_code
+        self.reason_phrase = reason_phrase
+        self.headers = headers
+        self.text = text
+        self.request = request
diff --git a/firstlanguage_python/http/requests_client.py b/firstlanguage_python/http/requests_client.py
new file mode 100644
index 0000000..f3ea2a3
--- /dev/null
+++ b/firstlanguage_python/http/requests_client.py
@@ -0,0 +1,156 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+from cachecontrol import CacheControl
+from requests import session
+from requests.adapters import HTTPAdapter
+from urllib3.util.retry import Retry
+
+from firstlanguage_python.http.http_client import HttpClient
+from firstlanguage_python.http.http_method_enum import HttpMethodEnum
+from firstlanguage_python.http.http_response import HttpResponse
+
+
+class RequestsClient(HttpClient):
+
+    """An implementation of HttpClient that uses Requests as its HTTP Client
+
+    Attributes:
+        timeout (int): The default timeout for all API requests.
+
+    """
+
+    def __init__(self,
+                 timeout=60,
+                 cache=False,
+                 max_retries=None,
+                 backoff_factor=None,
+                 retry_statuses=None,
+                 retry_methods=None,
+                 verify=True,
+                 http_client_instance=None,
+                 override_http_client_configuration=False):
+        """The constructor.
+
+        Args:
+            timeout (float): The default global timeout(seconds).
+
+        """
+        if http_client_instance == None:
+            self.create_default_http_cient(timeout, cache, max_retries,
+                                           backoff_factor, retry_statuses,
+                                           retry_methods, verify)
+        else:
+          if override_http_client_configuration == True:
+            http_client_instance.timeout = timeout
+            http_client_instance.session.verify = verify
+            adapters = http_client_instance.session.adapters
+            for adapter in adapters.values():
+                adapter.max_retries.total = max_retries
+                adapter.max_retries.backoff_factor = backoff_factor
+                adapter.max_retries.status_forcelist = retry_statuses
+                adapter.max_retries.allowed_methods = retry_methods        
+
+          self.timeout = http_client_instance.timeout
+          self.session = http_client_instance.session 
+
+    def create_default_http_cient(self,
+                                  timeout=60,
+                                  cache=False,
+                                  max_retries=None,
+                                  backoff_factor=None,
+                                  retry_statuses=None,
+                                  retry_methods=None,
+                                  verify=True):
+        self.timeout = timeout
+        self.session = session()
+
+        retries = Retry(total=max_retries, backoff_factor=backoff_factor,
+                        status_forcelist=retry_statuses, allowed_methods=retry_methods)
+        self.session.mount('http://', HTTPAdapter(max_retries=retries))
+        self.session.mount('https://', HTTPAdapter(max_retries=retries))
+
+        if cache:
+            self.session = CacheControl(self.session)
+
+        self.session.verify = verify
+
+    def execute_as_string(self, request):
+        """Execute a given HttpRequest to get a string response back
+
+        Args:
+            request (HttpRequest): The given HttpRequest to execute.
+
+        Returns:
+            HttpResponse: The response of the HttpRequest.
+
+        """
+        response = self.session.request(
+            HttpMethodEnum.to_string(request.http_method),
+            request.query_url,
+            headers=request.headers,
+            params=request.query_parameters,
+            data=request.parameters,
+            files=request.files,
+            timeout=self.timeout
+        )
+
+        return self.convert_response(response, False, request)
+
+    def execute_as_binary(self, request):
+        """Execute a given HttpRequest to get a binary response back
+
+        Args:
+            request (HttpRequest): The given HttpRequest to execute.
+
+        Returns:
+            HttpResponse: The response of the HttpRequest.
+
+        """
+
+        response = self.session.request(
+            HttpMethodEnum.to_string(request.http_method),
+            request.query_url,
+            headers=request.headers,
+            params=request.query_parameters,
+            data=request.parameters,
+            files=request.files,
+            timeout=self.timeout
+        )
+
+        return self.convert_response(response, True, request)
+
+    def convert_response(self, response, binary, http_request):
+        """Converts the Response object of the HttpClient into an
+        HttpResponse object.
+
+        Args:
+            response (dynamic): The original response object.
+            http_request (HttpRequest): The original HttpRequest object.
+
+        Returns:
+            HttpResponse: The converted HttpResponse object.
+
+        """
+        if binary:
+            return HttpResponse(
+                response.status_code,
+                response.reason,
+                response.headers,
+                response.content,
+                http_request
+            )
+        else:
+            return HttpResponse(
+                response.status_code,
+                response.reason,
+                response.headers,
+                response.text,
+                http_request
+            )
diff --git a/firstlanguage_python/models/__init__.py b/firstlanguage_python/models/__init__.py
new file mode 100644
index 0000000..e5be29f
--- /dev/null
+++ b/firstlanguage_python/models/__init__.py
@@ -0,0 +1,21 @@
+__all__ = [
+    'responseclassify',
+    'responsemorph',
+    'text_input',
+    'text_input_classify',
+    'text_input_tamil',
+    'url_input',
+    'url_input_classify',
+    'api_ner_response',
+    'api_qa_response',
+    'errors_1',
+    'input',
+    'input_1',
+    'input_2',
+    'input_3',
+    'input_4',
+    'orignal_string',
+    'responselemma',
+    'responsepo',
+    'responsestem',
+]
diff --git a/firstlanguage_python/models/__pycache__/__init__.cpython-39.pyc b/firstlanguage_python/models/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..b1f1dba3a945054904a5bac659f5870013cf9f0a
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/api_ner_response.cpython-39.pyc b/firstlanguage_python/models/__pycache__/api_ner_response.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..85bcca45faa0b8fb0f9fffaa27b6ec01803beae2
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/api_qa_response.cpython-39.pyc b/firstlanguage_python/models/__pycache__/api_qa_response.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..5671681c9bed275c13c255edc1ef4f948ec2ac1b
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/errors_1.cpython-39.pyc b/firstlanguage_python/models/__pycache__/errors_1.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..929ff968399c23a67ec5679552a1992cf598b9fb
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/orignal_string.cpython-39.pyc b/firstlanguage_python/models/__pycache__/orignal_string.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..4e9e819346b6dc19b76a9a0916ddd6f7f95af028
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/responseclassify.cpython-39.pyc b/firstlanguage_python/models/__pycache__/responseclassify.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..5b4790f9a14bcad02840c3fa47469f97f7dce51c
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/responselemma.cpython-39.pyc b/firstlanguage_python/models/__pycache__/responselemma.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..3b54b9141c3fe5ba116084573656e4167dca6be1
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/responsemorph.cpython-39.pyc b/firstlanguage_python/models/__pycache__/responsemorph.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..e86844710acb6e49b04c68c36f2fdef85c105b16
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/responsepo.cpython-39.pyc b/firstlanguage_python/models/__pycache__/responsepo.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..d23c3a15fd7d1c35d44fd3ba88c72e24d779256f
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/responsestem.cpython-39.pyc b/firstlanguage_python/models/__pycache__/responsestem.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..f034300e8c9b327878d128e9309e03e93a62cf17
GIT binary patch
diff --git a/firstlanguage_python/models/api_ner_response.py b/firstlanguage_python/models/api_ner_response.py
new file mode 100644
index 0000000..2e412f8
--- /dev/null
+++ b/firstlanguage_python/models/api_ner_response.py
@@ -0,0 +1,73 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+
+class ApiNerResponse(object):
+
+    """Implementation of the 'Api Ner Response' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        entity_group (string): Entity group inferred.
+        word (string): Corresponding word
+        start (string): Start position of the entity in the given input.
+        end (string): Start position of the entity in the given input.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "entity_group": 'entity_group',
+        "word": 'word',
+        "start": 'start',
+        "end": 'end'
+    }
+
+    def __init__(self,
+                 entity_group=None,
+                 word=None,
+                 start=None,
+                 end=None):
+        """Constructor for the ApiNerResponse class"""
+
+        # Initialize members of the class
+        self.entity_group = entity_group
+        self.word = word
+        self.start = start
+        self.end = end
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        entity_group = dictionary.get('entity_group')
+        word = dictionary.get('word')
+        start = dictionary.get('start')
+        end = dictionary.get('end')
+
+        # Return an object of this model
+        return cls(entity_group,
+                   word,
+                   start,
+                   end)
diff --git a/firstlanguage_python/models/api_qa_response.py b/firstlanguage_python/models/api_qa_response.py
new file mode 100644
index 0000000..7c2b95e
--- /dev/null
+++ b/firstlanguage_python/models/api_qa_response.py
@@ -0,0 +1,73 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+
+class ApiQaResponse(object):
+
+    """Implementation of the 'Api Qa Response' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        score (float): What is the confident score of the answer
+        start (float): Start position of the answer in the context
+        end (float): End position of the answer in the context
+        answer (string): Answer to the question.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "score": 'score',
+        "start": 'start',
+        "end": 'end',
+        "answer": 'answer'
+    }
+
+    def __init__(self,
+                 score=None,
+                 start=None,
+                 end=None,
+                 answer=None):
+        """Constructor for the ApiQaResponse class"""
+
+        # Initialize members of the class
+        self.score = score
+        self.start = start
+        self.end = end
+        self.answer = answer
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        score = dictionary.get('score')
+        start = dictionary.get('start')
+        end = dictionary.get('end')
+        answer = dictionary.get('answer')
+
+        # Return an object of this model
+        return cls(score,
+                   start,
+                   end,
+                   answer)
diff --git a/firstlanguage_python/models/errors_1.py b/firstlanguage_python/models/errors_1.py
new file mode 100644
index 0000000..1104e0a
--- /dev/null
+++ b/firstlanguage_python/models/errors_1.py
@@ -0,0 +1,67 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+
+class Errors1(object):
+
+    """Implementation of the 'Errors1' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        msg (string): TODO: type description here.
+        param (string): TODO: type description here.
+        location (string): TODO: type description here.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "msg": 'msg',
+        "param": 'param',
+        "location": 'location'
+    }
+
+    def __init__(self,
+                 msg=None,
+                 param=None,
+                 location=None):
+        """Constructor for the Errors1 class"""
+
+        # Initialize members of the class
+        self.msg = msg
+        self.param = param
+        self.location = location
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        msg = dictionary.get('msg')
+        param = dictionary.get('param')
+        location = dictionary.get('location')
+
+        # Return an object of this model
+        return cls(msg,
+                   param,
+                   location)
diff --git a/firstlanguage_python/models/input.py b/firstlanguage_python/models/input.py
new file mode 100644
index 0000000..cadc1a0
--- /dev/null
+++ b/firstlanguage_python/models/input.py
@@ -0,0 +1,63 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+
+class Input(object):
+
+    """Implementation of the 'Input' model.
+
+    Direct Text Input
+
+    Attributes:
+        text (string): Word or sentence or a paragraph. Special characters
+            will not be stripped.
+        lang (string): Allowed language code. Refer Allowed languages
+            section.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "text": 'text',
+        "lang": 'lang'
+    }
+
+    def __init__(self,
+                 text=None,
+                 lang=None):
+        """Constructor for the Input class"""
+
+        # Initialize members of the class
+        self.text = text
+        self.lang = lang
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        text = dictionary.get('text')
+        lang = dictionary.get('lang')
+
+        # Return an object of this model
+        return cls(text,
+                   lang)
diff --git a/firstlanguage_python/models/input_1.py b/firstlanguage_python/models/input_1.py
new file mode 100644
index 0000000..c539e9a
--- /dev/null
+++ b/firstlanguage_python/models/input_1.py
@@ -0,0 +1,71 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+
+class Input1(object):
+
+    """Implementation of the 'Input1' model.
+
+    Text for processing will be read from the given URL. Only HTML pages or
+    text pages will be processed at this time.
+
+    Attributes:
+        url (string): URL where the content is hosted.
+        lang (string): Allowed language code. Refer Allowed languages
+            section.
+        content_type (string): Allowed values or html or text. If html is
+            specified all html tags and special characters will be stripped
+            before processing.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "url": 'url',
+        "lang": 'lang',
+        "content_type": 'contentType'
+    }
+
+    def __init__(self,
+                 url=None,
+                 lang=None,
+                 content_type=None):
+        """Constructor for the Input1 class"""
+
+        # Initialize members of the class
+        self.url = url
+        self.lang = lang
+        self.content_type = content_type
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        url = dictionary.get('url')
+        lang = dictionary.get('lang')
+        content_type = dictionary.get('contentType')
+
+        # Return an object of this model
+        return cls(url,
+                   lang,
+                   content_type)
diff --git a/firstlanguage_python/models/input_2.py b/firstlanguage_python/models/input_2.py
new file mode 100644
index 0000000..b34a25b
--- /dev/null
+++ b/firstlanguage_python/models/input_2.py
@@ -0,0 +1,69 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+
+class Input2(object):
+
+    """Implementation of the 'Input2' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        context (string): Word or sentence or a paragraph. Special characters
+            will not be stripped.
+        lang (string): Allowed language code. Refer Allowed languages
+            section.
+        labels (list of object): Labels to classify
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "context": 'context',
+        "lang": 'lang',
+        "labels": 'labels'
+    }
+
+    def __init__(self,
+                 context=None,
+                 lang=None,
+                 labels=None):
+        """Constructor for the Input2 class"""
+
+        # Initialize members of the class
+        self.context = context
+        self.lang = lang
+        self.labels = labels
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        context = dictionary.get('context')
+        lang = dictionary.get('lang')
+        labels = dictionary.get('labels')
+
+        # Return an object of this model
+        return cls(context,
+                   lang,
+                   labels)
diff --git a/firstlanguage_python/models/input_3.py b/firstlanguage_python/models/input_3.py
new file mode 100644
index 0000000..8bf46be
--- /dev/null
+++ b/firstlanguage_python/models/input_3.py
@@ -0,0 +1,76 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+
+class Input3(object):
+
+    """Implementation of the 'Input3' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        url (string): URL where the content is hosted.
+        lang (string): Allowed language code. Refer Allowed languages
+            section.
+        content_type (string): Allowed values or html or text. If html is
+            specified all html tags and special characters will be stripped
+            before processing.
+        labels (list of object): Labels to classify
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "url": 'url',
+        "lang": 'lang',
+        "content_type": 'contentType',
+        "labels": 'labels'
+    }
+
+    def __init__(self,
+                 url=None,
+                 lang=None,
+                 content_type=None,
+                 labels=None):
+        """Constructor for the Input3 class"""
+
+        # Initialize members of the class
+        self.url = url
+        self.lang = lang
+        self.content_type = content_type
+        self.labels = labels
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        url = dictionary.get('url')
+        lang = dictionary.get('lang')
+        content_type = dictionary.get('contentType')
+        labels = dictionary.get('labels')
+
+        # Return an object of this model
+        return cls(url,
+                   lang,
+                   content_type,
+                   labels)
diff --git a/firstlanguage_python/models/input_4.py b/firstlanguage_python/models/input_4.py
new file mode 100644
index 0000000..61749d1
--- /dev/null
+++ b/firstlanguage_python/models/input_4.py
@@ -0,0 +1,62 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+
+class Input4(object):
+
+    """Implementation of the 'Input4' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        text (string): Word or sentence or a paragraph. Special characters
+            will not be stripped.
+        lang (string): Allowed ISO language code. Refer languages section.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "text": 'text',
+        "lang": 'lang'
+    }
+
+    def __init__(self,
+                 text=None,
+                 lang=None):
+        """Constructor for the Input4 class"""
+
+        # Initialize members of the class
+        self.text = text
+        self.lang = lang
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        text = dictionary.get('text')
+        lang = dictionary.get('lang')
+
+        # Return an object of this model
+        return cls(text,
+                   lang)
diff --git a/firstlanguage_python/models/orignal_string.py b/firstlanguage_python/models/orignal_string.py
new file mode 100644
index 0000000..eab0bf8
--- /dev/null
+++ b/firstlanguage_python/models/orignal_string.py
@@ -0,0 +1,55 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+
+class OrignalString(object):
+
+    """Implementation of the 'OrignalString' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        morph_attr (list of string): TODO: type description here.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "morph_attr": 'morph_attr'
+    }
+
+    def __init__(self,
+                 morph_attr=None):
+        """Constructor for the OrignalString class"""
+
+        # Initialize members of the class
+        self.morph_attr = morph_attr
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        morph_attr = dictionary.get('morph_attr')
+
+        # Return an object of this model
+        return cls(morph_attr)
diff --git a/firstlanguage_python/models/responseclassify.py b/firstlanguage_python/models/responseclassify.py
new file mode 100644
index 0000000..db4b0f4
--- /dev/null
+++ b/firstlanguage_python/models/responseclassify.py
@@ -0,0 +1,61 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+
+class Responseclassify(object):
+
+    """Implementation of the 'responseclassify' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        labels (list of string): TODO: type description here.
+        scores (list of float): TODO: type description here.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "labels": 'labels',
+        "scores": 'scores'
+    }
+
+    def __init__(self,
+                 labels=None,
+                 scores=None):
+        """Constructor for the Responseclassify class"""
+
+        # Initialize members of the class
+        self.labels = labels
+        self.scores = scores
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        labels = dictionary.get('labels')
+        scores = dictionary.get('scores')
+
+        # Return an object of this model
+        return cls(labels,
+                   scores)
diff --git a/firstlanguage_python/models/responselemma.py b/firstlanguage_python/models/responselemma.py
new file mode 100644
index 0000000..4a7eb05
--- /dev/null
+++ b/firstlanguage_python/models/responselemma.py
@@ -0,0 +1,61 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+
+class Responselemma(object):
+
+    """Implementation of the 'responselemma' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        orginal_text (string): TODO: type description here.
+        lemmatized (string): TODO: type description here.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "orginal_text": 'orginalText',
+        "lemmatized": 'lemmatized'
+    }
+
+    def __init__(self,
+                 orginal_text=None,
+                 lemmatized=None):
+        """Constructor for the Responselemma class"""
+
+        # Initialize members of the class
+        self.orginal_text = orginal_text
+        self.lemmatized = lemmatized
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        orginal_text = dictionary.get('orginalText')
+        lemmatized = dictionary.get('lemmatized')
+
+        # Return an object of this model
+        return cls(orginal_text,
+                   lemmatized)
diff --git a/firstlanguage_python/models/responsemorph.py b/firstlanguage_python/models/responsemorph.py
new file mode 100644
index 0000000..91f87de
--- /dev/null
+++ b/firstlanguage_python/models/responsemorph.py
@@ -0,0 +1,56 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+from firstlanguage_python.models.orignal_string import OrignalString
+
+
+class Responsemorph(object):
+
+    """Implementation of the 'responsemorph' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        orignal_string (OrignalString): TODO: type description here.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "orignal_string": 'orignalString'
+    }
+
+    def __init__(self,
+                 orignal_string=None):
+        """Constructor for the Responsemorph class"""
+
+        # Initialize members of the class
+        self.orignal_string = orignal_string
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        orignal_string = OrignalString.from_dictionary(dictionary.get('orignalString')) if dictionary.get('orignalString') else None
+
+        # Return an object of this model
+        return cls(orignal_string)
diff --git a/firstlanguage_python/models/responsepo.py b/firstlanguage_python/models/responsepo.py
new file mode 100644
index 0000000..f205885
--- /dev/null
+++ b/firstlanguage_python/models/responsepo.py
@@ -0,0 +1,61 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+
+class Responsepo(object):
+
+    """Implementation of the 'responsepo' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        orginal_text (string): TODO: type description here.
+        postag (string): TODO: type description here.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "orginal_text": 'orginalText',
+        "postag": 'postag'
+    }
+
+    def __init__(self,
+                 orginal_text=None,
+                 postag=None):
+        """Constructor for the Responsepo class"""
+
+        # Initialize members of the class
+        self.orginal_text = orginal_text
+        self.postag = postag
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        orginal_text = dictionary.get('orginalText')
+        postag = dictionary.get('postag')
+
+        # Return an object of this model
+        return cls(orginal_text,
+                   postag)
diff --git a/firstlanguage_python/models/responsestem.py b/firstlanguage_python/models/responsestem.py
new file mode 100644
index 0000000..3778c9f
--- /dev/null
+++ b/firstlanguage_python/models/responsestem.py
@@ -0,0 +1,61 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+
+class Responsestem(object):
+
+    """Implementation of the 'responsestem' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        orginal_text (string): TODO: type description here.
+        stem (string): TODO: type description here.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "orginal_text": 'orginalText',
+        "stem": 'stem'
+    }
+
+    def __init__(self,
+                 orginal_text=None,
+                 stem=None):
+        """Constructor for the Responsestem class"""
+
+        # Initialize members of the class
+        self.orginal_text = orginal_text
+        self.stem = stem
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        orginal_text = dictionary.get('orginalText')
+        stem = dictionary.get('stem')
+
+        # Return an object of this model
+        return cls(orginal_text,
+                   stem)
diff --git a/firstlanguage_python/models/text_input.py b/firstlanguage_python/models/text_input.py
new file mode 100644
index 0000000..8a7629c
--- /dev/null
+++ b/firstlanguage_python/models/text_input.py
@@ -0,0 +1,56 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+from firstlanguage_python.models.input import Input
+
+
+class TextInput(object):
+
+    """Implementation of the 'TextInput' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        input (Input): Direct Text Input
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "input": 'input'
+    }
+
+    def __init__(self,
+                 input=None):
+        """Constructor for the TextInput class"""
+
+        # Initialize members of the class
+        self.input = input
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        input = Input.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+
+        # Return an object of this model
+        return cls(input)
diff --git a/firstlanguage_python/models/text_input_classify.py b/firstlanguage_python/models/text_input_classify.py
new file mode 100644
index 0000000..ef4bc44
--- /dev/null
+++ b/firstlanguage_python/models/text_input_classify.py
@@ -0,0 +1,56 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+from firstlanguage_python.models.input_2 import Input2
+
+
+class TextInputClassify(object):
+
+    """Implementation of the 'TextInputClassify' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        input (Input2): TODO: type description here.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "input": 'input'
+    }
+
+    def __init__(self,
+                 input=None):
+        """Constructor for the TextInputClassify class"""
+
+        # Initialize members of the class
+        self.input = input
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        input = Input2.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+
+        # Return an object of this model
+        return cls(input)
diff --git a/firstlanguage_python/models/text_input_tamil.py b/firstlanguage_python/models/text_input_tamil.py
new file mode 100644
index 0000000..1b29978
--- /dev/null
+++ b/firstlanguage_python/models/text_input_tamil.py
@@ -0,0 +1,56 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+from firstlanguage_python.models.input_4 import Input4
+
+
+class TextInputTamil(object):
+
+    """Implementation of the 'TextInputTamil' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        input (Input4): TODO: type description here.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "input": 'input'
+    }
+
+    def __init__(self,
+                 input=None):
+        """Constructor for the TextInputTamil class"""
+
+        # Initialize members of the class
+        self.input = input
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        input = Input4.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+
+        # Return an object of this model
+        return cls(input)
diff --git a/firstlanguage_python/models/url_input.py b/firstlanguage_python/models/url_input.py
new file mode 100644
index 0000000..de8e3d0
--- /dev/null
+++ b/firstlanguage_python/models/url_input.py
@@ -0,0 +1,57 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+from firstlanguage_python.models.input_1 import Input1
+
+
+class URLInput(object):
+
+    """Implementation of the 'URLInput' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        input (Input1): Text for processing will be read from the given URL.
+            Only HTML pages or text pages will be processed at this time.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "input": 'input'
+    }
+
+    def __init__(self,
+                 input=None):
+        """Constructor for the URLInput class"""
+
+        # Initialize members of the class
+        self.input = input
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        input = Input1.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+
+        # Return an object of this model
+        return cls(input)
diff --git a/firstlanguage_python/models/url_input_classify.py b/firstlanguage_python/models/url_input_classify.py
new file mode 100644
index 0000000..93e3dcc
--- /dev/null
+++ b/firstlanguage_python/models/url_input_classify.py
@@ -0,0 +1,56 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+from firstlanguage_python.models.input_3 import Input3
+
+
+class URLInputClassify(object):
+
+    """Implementation of the 'URLInputClassify' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        input (Input3): TODO: type description here.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "input": 'input'
+    }
+
+    def __init__(self,
+                 input=None):
+        """Constructor for the URLInputClassify class"""
+
+        # Initialize members of the class
+        self.input = input
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        input = Input3.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+
+        # Return an object of this model
+        return cls(input)
diff --git a/firstlanguage_python/utilities/__init__.py b/firstlanguage_python/utilities/__init__.py
new file mode 100644
index 0000000..6ade54b
--- /dev/null
+++ b/firstlanguage_python/utilities/__init__.py
@@ -0,0 +1,3 @@
+__all__ = [
+    'file_wrapper.py',
+]
diff --git a/firstlanguage_python/utilities/__pycache__/__init__.cpython-39.pyc b/firstlanguage_python/utilities/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..bc4d9cb362201f284a9a3787f6a15cf32d22316a
GIT binary patch
diff --git a/firstlanguage_python/utilities/file_wrapper.py b/firstlanguage_python/utilities/file_wrapper.py
new file mode 100644
index 0000000..5e0b30e
--- /dev/null
+++ b/firstlanguage_python/utilities/file_wrapper.py
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+
+class FileWrapper():
+
+    """A wrapper to allow passing in content type for file uploads."""
+
+    def __init__(self, file, content_type='application/octet-stream'):
+        self._file_stream = file
+        self._content_type = content_type
+
+    @property
+    def file_stream(self):
+        return self._file_stream
+
+    @property
+    def content_type(self):
+        return self._content_type
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..8ba3e21
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,5 @@
+jsonpickle~=1.4, >= 1.4.1
+requests~=2.24
+cachecontrol~=0.12.6
+python-dateutil~=2.8.1
+enum34~=1.1, >=1.1.10
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..dcc69ab
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+
+import sys
+from setuptools import setup, find_packages
+
+if sys.version_info[0] < 3:
+    with open('README.md', 'r') as fh:
+        long_description = fh.read()
+else:
+    with open('README.md', 'r', encoding='utf-8') as fh:
+        long_description = fh.read()
+
+setup(
+    name='firstlanguageapi',
+    version='1.0.0',
+    description='Python client library for FirstLanguage API',
+    long_description=long_description,
+    long_description_content_type="text/markdown",
+    author='Us',
+    author_email='info@firstlanguage.in',
+    url='https://dev.firstlanguage.in/contactus',
+    packages=find_packages(),
+    install_requires=[
+        'jsonpickle~=1.4, >= 1.4.1',
+        'requests~=2.24',
+        'cachecontrol~=0.12.6',
+        'python-dateutil~=2.8.1',
+        'enum34~=1.1, >=1.1.10'
+    ],
+    tests_require=[
+        'nose>=1.3.7'
+    ],
+    test_suite = 'nose.collector'
+)
\ No newline at end of file
diff --git a/test-requirements.txt b/test-requirements.txt
new file mode 100644
index 0000000..5fe0fd7
--- /dev/null
+++ b/test-requirements.txt
@@ -0,0 +1 @@
+nose>=1.3.7
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/tests/__pycache__/__init__.cpython-39.pyc b/tests/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..fea20326ad94262bf2478a6d1ef9e76ee9a37e40
GIT binary patch
diff --git a/tests/__pycache__/http_response_catcher.cpython-39.pyc b/tests/__pycache__/http_response_catcher.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..a98fb4ce47a8c30837ed5e4f1f415b6f52a840b5
GIT binary patch
diff --git a/tests/__pycache__/test_helper.cpython-39.pyc b/tests/__pycache__/test_helper.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..63f05adba657203dbd03352fc6ad045779b4645d
GIT binary patch
diff --git a/tests/controllers/__init__.py b/tests/controllers/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/tests/controllers/__pycache__/__init__.cpython-39.pyc b/tests/controllers/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..778ee6250c9611ca556d0df5615a8098272a82d7
GIT binary patch
diff --git a/tests/controllers/__pycache__/controller_test_base.cpython-39.pyc b/tests/controllers/__pycache__/controller_test_base.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..483b2bddd325b946ed06dc0ec9cde19fe59db0e8
GIT binary patch
diff --git a/tests/controllers/__pycache__/test_advanced_ap_is_controller.cpython-39.pyc b/tests/controllers/__pycache__/test_advanced_ap_is_controller.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..65ff94a1dcb945c87cf8063f9397f9b61db2669b
GIT binary patch
diff --git a/tests/controllers/controller_test_base.py b/tests/controllers/controller_test_base.py
new file mode 100644
index 0000000..83d197c
--- /dev/null
+++ b/tests/controllers/controller_test_base.py
@@ -0,0 +1,32 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+import unittest
+
+from firstlanguage_python.configuration import Configuration
+from firstlanguage_python.configuration import Environment
+from firstlanguage_python.firstlanguage_client import Client
+
+
+class ControllerTestBase(unittest.TestCase):
+
+    """All test classes inherit from this base class. It abstracts out
+    common functionality and configuration variables set up."""
+
+    @classmethod
+    def setUpClass(cls):
+        """Class method called once before running tests in a test class."""
+        cls.request_timeout = 30
+        cls.assert_precision = 0.01
+        cls.config = ControllerTestBase.create_configuration()
+        cls.client = Client()
+
+    @staticmethod
+    def create_configuration():
+        return Configuration()
diff --git a/tests/controllers/test_advanced_ap_is_controller.py b/tests/controllers/test_advanced_ap_is_controller.py
new file mode 100644
index 0000000..93984fc
--- /dev/null
+++ b/tests/controllers/test_advanced_ap_is_controller.py
@@ -0,0 +1,91 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+import json
+import dateutil.parser
+import jsonpickle
+
+from tests.controllers.controller_test_base import ControllerTestBase
+from tests.test_helper import TestHelper
+from tests.http_response_catcher import HttpResponseCatcher
+from firstlanguage_python.api_helper import APIHelper
+from firstlanguage_python.controllers.advanced_api_controller import AdvancedAPIsController
+
+
+class AdvancedAPIsControllerTests(ControllerTestBase):
+
+    @classmethod
+    def setUpClass(cls):
+        super(AdvancedAPIsControllerTests, cls).setUpClass()
+        cls.response_catcher = HttpResponseCatcher()
+        cls.controller = AdvancedAPIsController(cls.config, cls.response_catcher)
+
+    # # Stemmer : Defintion and it's usage
+    #
+    ## Languages covered:
+    def test_get_qa(self):
+        # Parameters for the API call
+        reqbody='{ "input":{ "question":"எவை மூன்றும் எப்போதும் ஒன்றாகவே இருக்கும்?", "lang":"ta", "context": "உப்பு, புளி, மிளகாய் மூன்றும் எப்போதும் ஒன்றாகவே இருக்கும். ஒருநாள், “குழம்பிற்கு யார் முக்கியம்? நீயா! நானா!” என்று சண்டை போட்டன. மூன்று பேரும் தனிதனியாகச் சென்று குழம்பில் சேரலாம் என்று முடிவு செய்தன. முதல் நாள், உப்பு மட்டும் குழம்பில் சேர்ந்து கொண்டது. “ஆ! ஒரே உப்பு! வாயில் வைக்க முடியவில்லை!” என்று எல்லோரும் கத்தினார்கள்" } }'
+
+        body = jsonpickle.decode(reqbody)
+        #body = None
+
+        # Perform the API call through the SDK function
+        result = self.controller.get_qa(body)
+
+        # Test response code
+        self.assertEquals(self.response_catcher.response.status_code, 200)
+
+        # Test headers
+        expected_headers = {}
+        expected_headers['content-type'] = 'application/json; charset=utf-8'
+
+        self.assertTrue(TestHelper.match_headers(expected_headers, self.response_catcher.response.headers))
+
+        
+        # Test whether the captured response is as we expected
+        self.assertIsNotNone(result)
+        expected_body = APIHelper.json_deserialize('{"score":0.028566665947437286,"start":0,"end":20,"answer":"உப்பு, '
+            'புளி, மிளகாய்"}')
+        received_body = APIHelper.json_deserialize(self.response_catcher.response.text)
+        self.assertTrue(TestHelper.match_body(expected_body, received_body))
+
+
+    # # NER : Defintion and it's usage
+    #
+    ## Languages covered:
+    def test_get_ner(self):
+        # Parameters for the API call
+        
+        reqbody='{  "input":{ "lang":"ar", "text": "إسمي محمد وأسكن في برلين" }}'
+
+        body = jsonpickle.decode(reqbody)
+        #body = None
+
+        # Perform the API call through the SDK function
+        result = self.controller.get_ner(body)
+        
+        # Test response code
+        self.assertEquals(self.response_catcher.response.status_code, 200)
+
+        # Test headers
+        expected_headers = {}
+        expected_headers['content-type'] = 'application/json; charset=utf-8'
+
+        self.assertTrue(TestHelper.match_headers(expected_headers, self.response_catcher.response.headers))
+
+        
+        # Test whether the captured response is as we expected
+        self.assertIsNotNone(result)
+        expected_body = APIHelper.json_deserialize('[{"entity_group":"PER","word":"محمد","start":"4","end":"9"},{"enti'
+            'ty_group":"LOC","word":"برلين","start":"18","end":"24"}]')
+        received_body = APIHelper.json_deserialize(self.response_catcher.response.text)
+        self.assertTrue(TestHelper.match_body(expected_body, received_body))
+
+
diff --git a/tests/http_response_catcher.py b/tests/http_response_catcher.py
new file mode 100644
index 0000000..7c257f6
--- /dev/null
+++ b/tests/http_response_catcher.py
@@ -0,0 +1,28 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+from firstlanguage_python.http.http_call_back import HttpCallBack
+
+class HttpResponseCatcher(HttpCallBack):
+
+    """A class used for catching the HttpResponse object from controllers.
+    
+    This class inherits HttpCallBack and implements the on_after_response
+    method to catch the HttpResponse object as returned by the HttpClient
+    after a request is executed.
+
+    """
+    def on_before_request(self, request):
+        pass
+
+    def on_after_response(self, response):
+        self.response = response
+
+
+
diff --git a/tests/test_helper.py b/tests/test_helper.py
new file mode 100644
index 0000000..6bbdc71
--- /dev/null
+++ b/tests/test_helper.py
@@ -0,0 +1,127 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+import os, tempfile, requests
+
+class TestHelper(object):
+
+    """A Helper Class for various functions associated with API testing.
+    
+    This class contains static and class methods for operations that need to be
+    performed during API testing. All of the methods inside this class are
+    static or class methods, there is no need to ever initialise an instance of this
+    class.    
+
+    Attributes:
+        cache (Set): Class variable which stores hashes of file URLs so we don't 
+            download the same file twice in a test session.
+
+    """
+
+    cache = {}
+
+    @staticmethod
+    def match_headers(expected_headers, 
+                      received_headers, 
+                      allow_extra=True):
+        """Static method to compare the received headers with the expected headers.
+        
+        Args:
+            expected_headers (dict): A dictionary of expected headers (keys in lower case).
+            received_headers (dict): A dictionary of headers received.
+            allow_extra (Boolean, optional): A flag which determines if we
+                allow extra headers.
+        Returns:
+            Boolean: True if headers match, False otherwise.
+ 
+        """
+        if ((len(received_headers) < len(expected_headers)) or
+           ((allow_extra == False) and (len(expected_headers) != len(received_headers)))):
+            return False
+
+        received_headers = {k.lower(): v for k, v in received_headers.items()}
+        for e_key in expected_headers:
+            if e_key not in received_headers:
+                return False
+            if((expected_headers[e_key] != None) and
+               (expected_headers[e_key] != received_headers[e_key])):                
+                return False
+
+        return True
+
+    @staticmethod
+    def match_body(expected_body,
+                   received_body,
+                   check_values=False,
+                   check_order=False,
+                   check_count=False):
+        """Static method to compare the received body with the expected body.
+        
+        Args:
+            expected_body (dynamic): The expected body.
+            received_body (dynamic): The received body.
+            check_values (Boolean, optional): A flag which determines if we
+                check values in dictionaries.
+            check_order (Boolean, optional): A flag which determines if we
+                check the order of array elements.
+            check_count (Boolean, optional): A flag which determines if we
+                check the count of array elements.
+        Returns:
+            Boolean: True if bodies match, False otherwise.
+ 
+        """
+        if type(expected_body) == dict:
+            if type(received_body) != dict:
+                return False
+            for key in expected_body:
+                if key not in received_body:
+                    return False
+                if check_values or type(expected_body[key]) == dict:
+                    if TestHelper.match_body(expected_body[key], received_body[key], 
+                                             check_values, check_order, check_count) == False:
+                        return False
+        elif type(expected_body) == list: 
+            if type(received_body) != list:
+                return False
+            if check_count == True and (len(expected_body) != len(received_body)):
+                return False
+            else:
+                previous_matches = []
+                for i, expected_element in enumerate(expected_body):
+                    matches = [j for j, received_element 
+                               in enumerate(received_body) 
+                               if TestHelper.match_body(expected_element, received_element, 
+                                                        check_values, check_order, check_count)]
+                    if len(matches) == 0:
+                        return False
+                    if check_order == True:
+                        if i != 0 and all([all(y > x for y in previous_matches) for x in matches]):
+                            return False
+                        previous_matches = matches
+        elif expected_body != received_body:
+            return False            
+        return True
+
+    @classmethod
+    def get_file(cls, url):
+        """Class method which takes a URL, downloads the file (if not 
+        already downloaded for this test session) and returns a file object for 
+        the file in read-binary mode.
+        
+        Args:
+            url (string): The URL of the required file.
+        Returns:
+            FileObject: The file object of the required file (opened with "rb").
+ 
+        """
+        if url not in cls.cache:
+            cls.cache[url] = tempfile.NamedTemporaryFile()
+            cls.cache[url].write(requests.get(url).content)
+        cls.cache[url].seek(0)
+        return cls.cache[url]
\ No newline at end of file
diff --git a/tox.ini b/tox.ini
new file mode 100644
index 0000000..1e5bd96
--- /dev/null
+++ b/tox.ini
@@ -0,0 +1,7 @@
+[tox]
+envlist = py35
+
+[testenv]
+commands = nosetests
+deps =
+    nose

From b74b20d06c08644136b5815a44fb296c5f1f54f1 Mon Sep 17 00:00:00 2001
From: Subalalitha <subalalitha@firstlanguage.in>
Date: Fri, 19 Nov 2021 13:10:27 +0530
Subject: [PATCH 22/34] Package files

---
 setup.cfg | 3 +++
 setup.py  | 8 +++++---
 2 files changed, 8 insertions(+), 3 deletions(-)
 create mode 100644 setup.cfg

diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..9d5f797
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,3 @@
+# Inside of setup.cfg
+[metadata]
+description-file = README.md
\ No newline at end of file
diff --git a/setup.py b/setup.py
index dcc69ab..fd13199 100644
--- a/setup.py
+++ b/setup.py
@@ -11,14 +11,16 @@
         long_description = fh.read()
 
 setup(
-    name='firstlanguageapi',
+    name='firstlanguage_python',
     version='1.0.0',
     description='Python client library for FirstLanguage API',
     long_description=long_description,
     long_description_content_type="text/markdown",
-    author='Us',
+    author='FirstLanguage',
     author_email='info@firstlanguage.in',
-    url='https://dev.firstlanguage.in/contactus',
+    url='https://firstlanguage.in/contactus',
+    download_url = 'https://github.com/FirstLanguage/firstlanguage_python/archive/refs/tags/v_01.tar.gz',
+    keywords = ['FirstLanguage API', 'NLP', 'SDK', 'Python', 'Natural Language Processing'],  
     packages=find_packages(),
     install_requires=[
         'jsonpickle~=1.4, >= 1.4.1',

From b4f22641e76b29aca61835e0b69bd853410081b5 Mon Sep 17 00:00:00 2001
From: Subalalitha <subalalitha@firstlanguage.in>
Date: Fri, 19 Nov 2021 13:21:24 +0530
Subject: [PATCH 23/34] Change Example

---
 dist/firstlanguage_python-1.0.0.tar.gz        | Bin 0 -> 27383 bytes
 examples/example_Stemmer.py                   |   4 +-
 firstlanguage_python.egg-info/PKG-INFO        | 145 ++++++++++++++++++
 firstlanguage_python.egg-info/SOURCES.txt     |  65 ++++++++
 .../dependency_links.txt                      |   1 +
 firstlanguage_python.egg-info/requires.txt    |   5 +
 firstlanguage_python.egg-info/top_level.txt   |   2 +
 7 files changed, 220 insertions(+), 2 deletions(-)
 create mode 100644 dist/firstlanguage_python-1.0.0.tar.gz
 create mode 100644 firstlanguage_python.egg-info/PKG-INFO
 create mode 100644 firstlanguage_python.egg-info/SOURCES.txt
 create mode 100644 firstlanguage_python.egg-info/dependency_links.txt
 create mode 100644 firstlanguage_python.egg-info/requires.txt
 create mode 100644 firstlanguage_python.egg-info/top_level.txt

diff --git a/dist/firstlanguage_python-1.0.0.tar.gz b/dist/firstlanguage_python-1.0.0.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..9b658bf35678f73b6fca3f810d0ee12aa9de2c66
GIT binary patch
diff --git a/examples/example_Stemmer.py b/examples/example_Stemmer.py
index a26fde7..fdad43a 100644
--- a/examples/example_Stemmer.py
+++ b/examples/example_Stemmer.py
@@ -1,5 +1,5 @@
-from firstlanguage.firstlanguage_client import Client
-from firstlanguage.configuration import Environment
+from firstlanguage_python.firstlanguage_client import Client
+from firstlanguage_python.configuration import Environment
 import jsonpickle
 
 
diff --git a/firstlanguage_python.egg-info/PKG-INFO b/firstlanguage_python.egg-info/PKG-INFO
new file mode 100644
index 0000000..0878929
--- /dev/null
+++ b/firstlanguage_python.egg-info/PKG-INFO
@@ -0,0 +1,145 @@
+Metadata-Version: 2.1
+Name: firstlanguage-python
+Version: 1.0.0
+Summary: Python client library for FirstLanguage API
+Home-page: https://firstlanguage.in/contactus
+Author: FirstLanguage
+Author-email: info@firstlanguage.in
+License: UNKNOWN
+Download-URL: https://github.com/FirstLanguage/firstlanguage_python/archive/refs/tags/v_01.tar.gz
+Description: 
+        # Getting Started with FirstLanguage API
+        
+        ## Introduction
+        
+        Collection of NLP APIs to help developers. We have grouped the APIs under Basic and Advanced. Basic APIs cover all basic text operations like POSTag, Stemmer etc and Advanced cover all the APIs like QA, translation etc.
+        
+        ### OpenAPI Specification
+        
+        This API is documented in **OpenAPI v3.0 format**.
+        In addition to standard
+        OpenAPI syntax we use a few [vendor extensions](https://github.com/Redocly/redoc/blob/master/docs/redoc-vendor-extensions.md).
+        
+        ## Building
+        
+        Download the FirstLanguage Python SDK from <a href="FirstLanguage_PythonSDK.zip">here</a>
+        
+        You must have Python `3 >=3.7, <= 3.9` installed on your system to install and run this SDK. This SDK package depends on other Python packages like nose, jsonpickle etc. These dependencies are defined in the `requirements.txt` file that comes with the SDK. To resolve these dependencies, you can use the PIP Dependency manager. Install it by following steps at [https://pip.pypa.io/en/stable/installing/](https://pip.pypa.io/en/stable/installing/).
+        
+        Python and PIP executables should be defined in your PATH. Open command prompt and type `pip --version`. This should display the version of the PIP Dependency Manager installed if your installation was successful and the paths are properly defined.
+        
+        * Using command line, navigate to the directory containing the generated files (including `requirements.txt`) for the SDK.
+        * Run the command `pip install -r requirements.txt`. This should install all the required dependencies.
+        
+        ![Building SDK - Step 1](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&step=installDependencies)
+        
+        ## Installation
+        
+        The following section explains how to use the firstlanguageapi library in a new project.
+        
+        ### 1. Open Project in an IDE
+        
+        Open up a Python IDE like PyCharm. The basic workflow presented here is also applicable if you prefer using a different editor or IDE.
+        
+        ![Open project in PyCharm - Step 1](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&step=pyCharm)
+        
+        Click on `Open` in PyCharm to browse to your generated SDK directory and then click `OK`.
+        
+        ![Open project in PyCharm - Step 2](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&step=openProject0)
+        
+        The project files will be displayed in the side bar as follows:
+        
+        ![Open project in PyCharm - Step 3](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&step=openProject1)
+        
+        ### 2. Add a new Test Project
+        
+        Create a new directory by right clicking on the solution name as shown below:
+        
+        ![Add a new project in PyCharm - Step 1](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&step=createDirectory)
+        
+        Name the directory as "test".
+        
+        ![Add a new project in PyCharm - Step 2](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&step=nameDirectory)
+        
+        Add a python file to this project.
+        
+        ![Add a new project in PyCharm - Step 3](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&step=createFile)
+        
+        Name it "testSDK".
+        
+        ![Add a new project in PyCharm - Step 4](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&step=nameFile)
+        
+        In your python file you will be required to import the generated python library using the following code lines
+        
+        ```python
+        from firstlanguageapi.firstlanguageapi_client import FirstlanguageapiClient
+        ```
+        
+        ![Add a new project in PyCharm - Step 5](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&libraryName=firstlanguageapi.firstlanguageapi_client&className=FirstlanguageapiClient&step=projectFiles)
+        
+        After this you can write code to instantiate an API client object, get a controller object and  make API calls. Sample code is given in the subsequent sections.
+        
+        ### 3. Run the Test Project
+        
+        To run the file within your test project, right click on your Python file inside your Test project and click on `Run`
+        
+        ![Run Test Project - Step 1](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&libraryName=firstlanguageapi.firstlanguageapi_client&className=FirstlanguageapiClient&step=runProject)
+        
+        ## Test the SDK
+        
+        You can test the generated SDK and the server with test cases. `unittest` is used as the testing framework and `nose` is used as the test runner. You can run the tests as follows:
+        
+        Navigate to the root directory of the SDK and run the following commands
+        
+        ```
+        pip install -r test-requirements.txt
+        nosetests
+        ```
+        
+        ## Initialize the API Client
+        
+        **_Note:_** Documentation for the client can be found [here.](/doc/client.md)
+        
+        The following parameters are configurable for the API Client:
+        
+        | Parameter | Type | Description |
+        |  --- | --- | --- |
+        | `apikey` | `string` | API Key can be copied from your dashboard |
+        | `http_client_instance` | `HttpClient` | The Http Client passed from the sdk user for making requests |
+        | `override_http_client_configuration` | `bool` | The value which determines to override properties of the passed Http Client from the sdk user |
+        | `timeout` | `float` | The value to use for connection timeout. <br> **Default: 60** |
+        | `max_retries` | `int` | The number of times to retry an endpoint call if it fails. <br> **Default: 0** |
+        | `backoff_factor` | `float` | A backoff factor to apply between attempts after the second try. <br> **Default: 2** |
+        | `retry_statuses` | `Array of int` | The http statuses on which retry is to be done. <br> **Default: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524]** |
+        | `retry_methods` | `Array of string` | The http methods on which retry is to be done. <br> **Default: ['GET', 'PUT']** |
+        
+        The API client can be initialized as follows:
+        
+        ```python
+        from firstlanguageapi.firstlanguageapi_client import FirstlanguageapiClient
+        from firstlanguageapi.configuration import Environment
+        
+        client = FirstlanguageapiClient(
+            apikey='apikey',
+            environment=Environment.PRODUCTION,)
+        ```
+        
+        ## Authorization
+        
+        This API uses `Custom Header Signature`.
+        
+        ## List of APIs
+        
+        * [Basic AP Is](/doc/controllers/basic-api.md)
+        * [Advanced AP Is](/doc/controllers/advanced-api.md)
+        
+        ## Classes Documentation
+        
+        * [Utility Classes](/doc/utility-classes.md)
+        * [HttpResponse](/doc/http-response.md)
+        * [HttpRequest](/doc/http-request.md)
+        
+        
+Keywords: FirstLanguage API,NLP,SDK,Python,Natural Language Processing
+Platform: UNKNOWN
+Description-Content-Type: text/markdown
diff --git a/firstlanguage_python.egg-info/SOURCES.txt b/firstlanguage_python.egg-info/SOURCES.txt
new file mode 100644
index 0000000..90a625e
--- /dev/null
+++ b/firstlanguage_python.egg-info/SOURCES.txt
@@ -0,0 +1,65 @@
+LICENSE
+MANIFEST.in
+README.md
+setup.cfg
+setup.py
+firstlanguage_python/__init__.py
+firstlanguage_python/api_helper.py
+firstlanguage_python/configuration.py
+firstlanguage_python/decorators.py
+firstlanguage_python/firstlanguage_client.py
+firstlanguage_python.egg-info/PKG-INFO
+firstlanguage_python.egg-info/SOURCES.txt
+firstlanguage_python.egg-info/dependency_links.txt
+firstlanguage_python.egg-info/requires.txt
+firstlanguage_python.egg-info/top_level.txt
+firstlanguage_python/controllers/__init__.py
+firstlanguage_python/controllers/advanced_api_controller.py
+firstlanguage_python/controllers/base_controller.py
+firstlanguage_python/controllers/basic_api_controller.py
+firstlanguage_python/exceptions/__init__.py
+firstlanguage_python/exceptions/api_classify_426_error_exception.py
+firstlanguage_python/exceptions/api_exception.py
+firstlanguage_python/exceptions/api_lemmatize_426_error_exception.py
+firstlanguage_python/exceptions/api_morph_426_error_exception.py
+firstlanguage_python/exceptions/api_postag_426_error_exception.py
+firstlanguage_python/exceptions/api_stemmer_426_error_exception.py
+firstlanguage_python/exceptions/errors_exception.py
+firstlanguage_python/exceptions/m_426_error_exception.py
+firstlanguage_python/http/__init__.py
+firstlanguage_python/http/http_call_back.py
+firstlanguage_python/http/http_client.py
+firstlanguage_python/http/http_method_enum.py
+firstlanguage_python/http/http_request.py
+firstlanguage_python/http/http_response.py
+firstlanguage_python/http/requests_client.py
+firstlanguage_python/http/auth/__init__.py
+firstlanguage_python/http/auth/custom_header_auth.py
+firstlanguage_python/models/__init__.py
+firstlanguage_python/models/api_ner_response.py
+firstlanguage_python/models/api_qa_response.py
+firstlanguage_python/models/errors_1.py
+firstlanguage_python/models/input.py
+firstlanguage_python/models/input_1.py
+firstlanguage_python/models/input_2.py
+firstlanguage_python/models/input_3.py
+firstlanguage_python/models/input_4.py
+firstlanguage_python/models/orignal_string.py
+firstlanguage_python/models/responseclassify.py
+firstlanguage_python/models/responselemma.py
+firstlanguage_python/models/responsemorph.py
+firstlanguage_python/models/responsepo.py
+firstlanguage_python/models/responsestem.py
+firstlanguage_python/models/text_input.py
+firstlanguage_python/models/text_input_classify.py
+firstlanguage_python/models/text_input_tamil.py
+firstlanguage_python/models/url_input.py
+firstlanguage_python/models/url_input_classify.py
+firstlanguage_python/utilities/__init__.py
+firstlanguage_python/utilities/file_wrapper.py
+tests/__init__.py
+tests/http_response_catcher.py
+tests/test_helper.py
+tests/controllers/__init__.py
+tests/controllers/controller_test_base.py
+tests/controllers/test_advanced_ap_is_controller.py
\ No newline at end of file
diff --git a/firstlanguage_python.egg-info/dependency_links.txt b/firstlanguage_python.egg-info/dependency_links.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/firstlanguage_python.egg-info/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/firstlanguage_python.egg-info/requires.txt b/firstlanguage_python.egg-info/requires.txt
new file mode 100644
index 0000000..5b039f2
--- /dev/null
+++ b/firstlanguage_python.egg-info/requires.txt
@@ -0,0 +1,5 @@
+cachecontrol~=0.12.6
+enum34>=1.1.10,~=1.1
+jsonpickle>=1.4.1,~=1.4
+python-dateutil~=2.8.1
+requests~=2.24
diff --git a/firstlanguage_python.egg-info/top_level.txt b/firstlanguage_python.egg-info/top_level.txt
new file mode 100644
index 0000000..fe9efa4
--- /dev/null
+++ b/firstlanguage_python.egg-info/top_level.txt
@@ -0,0 +1,2 @@
+firstlanguage_python
+tests

From 9fbe856f9aa4ef26d737545f250ce17f7a48ceab Mon Sep 17 00:00:00 2001
From: Subalalitha <subalalitha@firstlanguage.in>
Date: Sun, 5 Dec 2021 18:48:49 +0530
Subject: [PATCH 24/34] Updated MD files

---
 README.md | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
 index.md  | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 112 insertions(+), 4 deletions(-)

diff --git a/README.md b/README.md
index 04c0d50..036265e 100644
--- a/README.md
+++ b/README.md
@@ -13,7 +13,61 @@ OpenAPI syntax we use a few [vendor extensions](https://github.com/Redocly/redoc
 
 ## Building
 
-Download the FirstLanguage Python SDK from <a href="FirstLanguage_PythonSDK.zip">here</a>
+You can use the SDK either from source by cloning from GitHub using our [repo](https://github.com/FirstLanguage/firstlanguage_python.git)
+
+Or you can use PIP to install our package directly by using the command.
+
+```
+pip install firstlanguage-python
+```
+
+## Follow below steps if you want to use SDK from our PIP published package
+
+Once the package is installed you can directly use our package in your code. Below is a working example. Replace <Your_API_KEY> with your API Key from the dashboard.
+
+```
+from firstlanguage_python.firstlanguage_client import Client
+from firstlanguage_python.configuration import Environment
+import jsonpickle
+
+
+client = Client(
+    apikey='<Your_API_KEY>',
+    environment=Environment.PRODUCTION,)
+
+reqbody='{"input":{"text":"அவள் வேகமாக ஓடினாள்","lang":"ta"} }'
+
+body = jsonpickle.decode(reqbody)
+basic_api_controller = client.basic_api
+
+result = basic_api_controller.get_stemmer(body)
+
+for res in result:
+  print("Original Text passed: "+res.orginal_text)
+  print("Stemmed result: "+res.stem)
+
+
+```
+
+Save the above file as test.py and run it using the below command
+
+```
+python3 test.py
+```
+
+You will get an output like below
+
+```
+200
+Original Text passed: அவள்
+Stemmed result: அவள்
+Original Text passed: வேகமாக
+Stemmed result: வேகம்
+Original Text passed: ஓடினாள்
+Stemmed result: ஓடி
+```
+
+## Follow below steps if you want to use SDK from source
 
 You must have Python `3 >=3.7, <= 3.9` installed on your system to install and run this SDK. This SDK package depends on other Python packages like nose, jsonpickle etc. These dependencies are defined in the `requirements.txt` file that comes with the SDK. To resolve these dependencies, you can use the PIP Dependency manager. Install it by following steps at [https://pip.pypa.io/en/stable/installing/](https://pip.pypa.io/en/stable/installing/).
 
@@ -121,8 +175,8 @@ This API uses `Custom Header Signature`.
 
 ## List of APIs
 
-* [Basic AP Is](/doc/controllers/basic-api.md)
-* [Advanced AP Is](/doc/controllers/advanced-api.md)
+* [Basic APIs](/doc/controllers/basic-api.md)
+* [Advanced APIs](/doc/controllers/advanced-api.md)
 
 ## Classes Documentation
 
diff --git a/index.md b/index.md
index 7f45bee..96e22b4 100644
--- a/index.md
+++ b/index.md
@@ -13,7 +13,61 @@ OpenAPI syntax we use a few [vendor extensions](https://github.com/Redocly/redoc
 
 ## Building
 
-Download the FirstLanguage Python SDK from <a href="FirstLanguage_PythonSDK.zip">here</a>
+You can use the SDK either from source by cloning from GitHub using our [repo](https://github.com/FirstLanguage/firstlanguage_python.git)
+
+Or you can use PIP to install our package directly by using the command.
+
+```
+pip install firstlanguage-python
+```
+
+## Follow below steps if you want to use SDK from our PIP published package
+
+Once the package is installed you can directly use our package in your code. Below is a working example. Replace <Your_API_KEY> with your API Key from the dashboard.
+
+```
+from firstlanguage_python.firstlanguage_client import Client
+from firstlanguage_python.configuration import Environment
+import jsonpickle
+
+
+client = Client(
+    apikey='<Your_API_KEY>',
+    environment=Environment.PRODUCTION,)
+
+reqbody='{"input":{"text":"அவள் வேகமாக ஓடினாள்","lang":"ta"} }'
+
+body = jsonpickle.decode(reqbody)
+basic_api_controller = client.basic_api
+
+result = basic_api_controller.get_stemmer(body)
+
+for res in result:
+  print("Original Text passed: "+res.orginal_text)
+  print("Stemmed result: "+res.stem)
+
+
+```
+
+Save the above file as test.py and run it using the below command
+
+```
+python3 test.py
+```
+
+You will get an output like below
+
+```
+200
+Original Text passed: அவள்
+Stemmed result: அவள்
+Original Text passed: வேகமாக
+Stemmed result: வேகம்
+Original Text passed: ஓடினாள்
+Stemmed result: ஓடி
+```
+
+## Follow below steps if you want to use SDK from source
 
 You must have Python `3 >=3.7, <= 3.9` installed on your system to install and run this SDK. This SDK package depends on other Python packages like nose, jsonpickle etc. These dependencies are defined in the `requirements.txt` file that comes with the SDK. To resolve these dependencies, you can use the PIP Dependency manager. Install it by following steps at [https://pip.pypa.io/en/stable/installing/](https://pip.pypa.io/en/stable/installing/).
 

From 7296fa5e915d43291f74ff0c4bc737b108989c85 Mon Sep 17 00:00:00 2001
From: Subalalitha <subalalitha@firstlanguage.in>
Date: Tue, 14 Dec 2021 14:27:05 +0530
Subject: [PATCH 25/34] API changes

---
 doc/controllers/advanced-api.md               | 274 ++++++++++++-
 doc/controllers/basic-api.md                  | 387 +++++++++++++++---
 doc/models/api-ner-request-1.md               |  25 ++
 doc/models/api-ner-request.md                 |  24 ++
 doc/models/api-ner-response.md                |   8 +-
 doc/models/api-qa-request-1.md                |  26 ++
 doc/models/api-qa-request.md                  |  25 ++
 doc/models/api-summary-request-1.md           |  25 ++
 doc/models/api-summary-request.md             |  24 ++
 doc/models/api-summary-response.md            |  21 +
 doc/models/api-translate-request-1.md         |  25 ++
 doc/models/api-translate-request.md           |  24 ++
 doc/models/api-translate-response.md          |  21 +
 doc/models/input-1.md                         |  12 +-
 doc/models/input-10.md                        |  25 ++
 doc/models/input-11.md                        |  23 ++
 doc/models/input-12.md                        |  25 ++
 doc/models/input-3.md                         |  19 +-
 doc/models/input-5.md                         |  25 ++
 doc/models/input-6.md                         |  27 ++
 doc/models/input-7.md                         |  23 ++
 doc/models/input-8.md                         |  25 ++
 doc/models/input-9.md                         |  23 ++
 doc/models/text-input-classify.md             |  11 +-
 doc/models/text-input-tamil.md                |   7 +-
 doc/models/text-input.md                      |   7 +-
 doc/models/url-input-classify.md              |  12 +-
 doc/models/url-input.md                       |   8 +-
 examples/example_Stemmer.py                   |   2 +-
 .../__pycache__/api_helper.cpython-39.pyc     | Bin 13198 -> 14053 bytes
 firstlanguage_python/api_helper.py            |  33 ++
 .../advanced_api_controller.cpython-39.pyc    | Bin 5173 -> 16388 bytes
 .../base_controller.cpython-39.pyc            | Bin 3371 -> 3649 bytes
 .../basic_api_controller.cpython-39.pyc       | Bin 8968 -> 12108 bytes
 .../controllers/advanced_api_controller.py    | 279 ++++++++++++-
 .../controllers/base_controller.py            |  11 +-
 .../controllers/basic_api_controller.py       | 174 +++++---
 firstlanguage_python/models/__init__.py       |  18 +
 .../__pycache__/__init__.cpython-39.pyc       | Bin 467 -> 733 bytes
 .../api_ner_response.cpython-39.pyc           | Bin 1823 -> 2480 bytes
 .../api_qa_response.cpython-39.pyc            | Bin 1816 -> 2472 bytes
 .../api_summary_response.cpython-39.pyc       | Bin 0 -> 2140 bytes
 .../api_translate_response.cpython-39.pyc     | Bin 0 -> 2168 bytes
 .../__pycache__/errors_1.cpython-39.pyc       | Bin 1637 -> 2287 bytes
 .../__pycache__/orignal_string.cpython-39.pyc | Bin 1457 -> 2113 bytes
 .../responseclassify.cpython-39.pyc           | Bin 1593 -> 2252 bytes
 .../__pycache__/responselemma.cpython-39.pyc  | Bin 1588 -> 2244 bytes
 .../__pycache__/responsemorph.cpython-39.pyc  | Bin 1600 -> 2244 bytes
 .../__pycache__/responsepo.cpython-39.pyc     | Bin 1562 -> 2215 bytes
 .../__pycache__/responsestem.cpython-39.pyc   | Bin 1570 -> 2225 bytes
 .../models/api_ner_request.py                 |  73 ++++
 .../models/api_ner_request_1.py               |  73 ++++
 .../models/api_ner_response.py                |  17 +
 firstlanguage_python/models/api_qa_request.py |  73 ++++
 .../models/api_qa_request_1.py                |  73 ++++
 .../models/api_qa_response.py                 |  17 +
 .../models/api_summary_request.py             |  73 ++++
 .../models/api_summary_request_1.py           |  73 ++++
 .../models/api_summary_response.py            |  72 ++++
 .../models/api_translate_request.py           |  73 ++++
 .../models/api_translate_request_1.py         |  73 ++++
 .../models/api_translate_response.py          |  72 ++++
 firstlanguage_python/models/errors_1.py       |  17 +
 firstlanguage_python/models/input.py          |  17 +
 firstlanguage_python/models/input_1.py        |  17 +
 firstlanguage_python/models/input_10.py       |  87 ++++
 firstlanguage_python/models/input_11.py       |  79 ++++
 firstlanguage_python/models/input_12.py       |  88 ++++
 firstlanguage_python/models/input_2.py        |  17 +
 firstlanguage_python/models/input_3.py        |  17 +
 firstlanguage_python/models/input_4.py        |  17 +
 firstlanguage_python/models/input_5.py        |  88 ++++
 firstlanguage_python/models/input_6.py        |  95 +++++
 firstlanguage_python/models/input_7.py        |  80 ++++
 firstlanguage_python/models/input_8.py        |  87 ++++
 firstlanguage_python/models/input_9.py        |  79 ++++
 firstlanguage_python/models/orignal_string.py |  17 +
 .../models/responseclassify.py                |  17 +
 firstlanguage_python/models/responselemma.py  |  17 +
 firstlanguage_python/models/responsemorph.py  |  17 +
 firstlanguage_python/models/responsepo.py     |  17 +
 firstlanguage_python/models/responsestem.py   |  17 +
 firstlanguage_python/models/text_input.py     |  17 +
 .../models/text_input_classify.py             |  17 +
 .../models/text_input_tamil.py                |  17 +
 firstlanguage_python/models/url_input.py      |  17 +
 .../models/url_input_classify.py              |  17 +
 .../schemas/api_ner_request.json              |  13 +
 .../schemas/api_ner_request_1.json            |  13 +
 .../schemas/api_ner_response.json             |  29 ++
 .../schemas/api_qa_request.json               |  13 +
 .../schemas/api_qa_request_1.json             |  13 +
 .../schemas/api_qa_response.json              |  30 ++
 .../schemas/api_summary_request.json          |  13 +
 .../schemas/api_summary_request_1.json        |  13 +
 .../schemas/api_summary_response.json         |  10 +
 .../schemas/api_translate_request.json        |  13 +
 .../schemas/api_translate_request_1.json      |  13 +
 .../schemas/api_translate_response.json       |  10 +
 firstlanguage_python/schemas/errors_1.json    |  16 +
 firstlanguage_python/schemas/input.json       |  22 +
 firstlanguage_python/schemas/input_1.json     |  28 ++
 firstlanguage_python/schemas/input_10.json    |  24 ++
 firstlanguage_python/schemas/input_11.json    |  19 +
 firstlanguage_python/schemas/input_12.json    |  24 ++
 firstlanguage_python/schemas/input_2.json     |  33 ++
 firstlanguage_python/schemas/input_3.json     |  39 ++
 firstlanguage_python/schemas/input_4.json     |  21 +
 firstlanguage_python/schemas/input_5.json     |  24 ++
 firstlanguage_python/schemas/input_6.json     |  29 ++
 firstlanguage_python/schemas/input_7.json     |  19 +
 firstlanguage_python/schemas/input_8.json     |  24 ++
 firstlanguage_python/schemas/input_9.json     |  19 +
 .../schemas/orignal_string.json               |  14 +
 .../schemas/responseclassify.json             |  21 +
 .../schemas/responselemma.json                |  13 +
 .../schemas/responsemorph.json                |  10 +
 firstlanguage_python/schemas/responsepo.json  |  13 +
 .../schemas/responsestem.json                 |  13 +
 firstlanguage_python/schemas/text_input.json  |  13 +
 .../schemas/text_input_classify.json          |  13 +
 .../schemas/text_input_tamil.json             |  13 +
 firstlanguage_python/schemas/url_input.json   |  13 +
 .../schemas/url_input_classify.json           |  13 +
 .../schema_validator_wrapper.cpython-39.pyc   | Bin 0 -> 916 bytes
 .../utilities/schema_validator_wrapper.py     |  21 +
 requirements.txt                              |   1 +
 127 files changed, 3985 insertions(+), 142 deletions(-)
 create mode 100644 doc/models/api-ner-request-1.md
 create mode 100644 doc/models/api-ner-request.md
 create mode 100644 doc/models/api-qa-request-1.md
 create mode 100644 doc/models/api-qa-request.md
 create mode 100644 doc/models/api-summary-request-1.md
 create mode 100644 doc/models/api-summary-request.md
 create mode 100644 doc/models/api-summary-response.md
 create mode 100644 doc/models/api-translate-request-1.md
 create mode 100644 doc/models/api-translate-request.md
 create mode 100644 doc/models/api-translate-response.md
 create mode 100644 doc/models/input-10.md
 create mode 100644 doc/models/input-11.md
 create mode 100644 doc/models/input-12.md
 create mode 100644 doc/models/input-5.md
 create mode 100644 doc/models/input-6.md
 create mode 100644 doc/models/input-7.md
 create mode 100644 doc/models/input-8.md
 create mode 100644 doc/models/input-9.md
 create mode 100644 firstlanguage_python/models/__pycache__/api_summary_response.cpython-39.pyc
 create mode 100644 firstlanguage_python/models/__pycache__/api_translate_response.cpython-39.pyc
 create mode 100644 firstlanguage_python/models/api_ner_request.py
 create mode 100644 firstlanguage_python/models/api_ner_request_1.py
 create mode 100644 firstlanguage_python/models/api_qa_request.py
 create mode 100644 firstlanguage_python/models/api_qa_request_1.py
 create mode 100644 firstlanguage_python/models/api_summary_request.py
 create mode 100644 firstlanguage_python/models/api_summary_request_1.py
 create mode 100644 firstlanguage_python/models/api_summary_response.py
 create mode 100644 firstlanguage_python/models/api_translate_request.py
 create mode 100644 firstlanguage_python/models/api_translate_request_1.py
 create mode 100644 firstlanguage_python/models/api_translate_response.py
 create mode 100644 firstlanguage_python/models/input_10.py
 create mode 100644 firstlanguage_python/models/input_11.py
 create mode 100644 firstlanguage_python/models/input_12.py
 create mode 100644 firstlanguage_python/models/input_5.py
 create mode 100644 firstlanguage_python/models/input_6.py
 create mode 100644 firstlanguage_python/models/input_7.py
 create mode 100644 firstlanguage_python/models/input_8.py
 create mode 100644 firstlanguage_python/models/input_9.py
 create mode 100644 firstlanguage_python/schemas/api_ner_request.json
 create mode 100644 firstlanguage_python/schemas/api_ner_request_1.json
 create mode 100644 firstlanguage_python/schemas/api_ner_response.json
 create mode 100644 firstlanguage_python/schemas/api_qa_request.json
 create mode 100644 firstlanguage_python/schemas/api_qa_request_1.json
 create mode 100644 firstlanguage_python/schemas/api_qa_response.json
 create mode 100644 firstlanguage_python/schemas/api_summary_request.json
 create mode 100644 firstlanguage_python/schemas/api_summary_request_1.json
 create mode 100644 firstlanguage_python/schemas/api_summary_response.json
 create mode 100644 firstlanguage_python/schemas/api_translate_request.json
 create mode 100644 firstlanguage_python/schemas/api_translate_request_1.json
 create mode 100644 firstlanguage_python/schemas/api_translate_response.json
 create mode 100644 firstlanguage_python/schemas/errors_1.json
 create mode 100644 firstlanguage_python/schemas/input.json
 create mode 100644 firstlanguage_python/schemas/input_1.json
 create mode 100644 firstlanguage_python/schemas/input_10.json
 create mode 100644 firstlanguage_python/schemas/input_11.json
 create mode 100644 firstlanguage_python/schemas/input_12.json
 create mode 100644 firstlanguage_python/schemas/input_2.json
 create mode 100644 firstlanguage_python/schemas/input_3.json
 create mode 100644 firstlanguage_python/schemas/input_4.json
 create mode 100644 firstlanguage_python/schemas/input_5.json
 create mode 100644 firstlanguage_python/schemas/input_6.json
 create mode 100644 firstlanguage_python/schemas/input_7.json
 create mode 100644 firstlanguage_python/schemas/input_8.json
 create mode 100644 firstlanguage_python/schemas/input_9.json
 create mode 100644 firstlanguage_python/schemas/orignal_string.json
 create mode 100644 firstlanguage_python/schemas/responseclassify.json
 create mode 100644 firstlanguage_python/schemas/responselemma.json
 create mode 100644 firstlanguage_python/schemas/responsemorph.json
 create mode 100644 firstlanguage_python/schemas/responsepo.json
 create mode 100644 firstlanguage_python/schemas/responsestem.json
 create mode 100644 firstlanguage_python/schemas/text_input.json
 create mode 100644 firstlanguage_python/schemas/text_input_classify.json
 create mode 100644 firstlanguage_python/schemas/text_input_tamil.json
 create mode 100644 firstlanguage_python/schemas/url_input.json
 create mode 100644 firstlanguage_python/schemas/url_input_classify.json
 create mode 100644 firstlanguage_python/utilities/__pycache__/schema_validator_wrapper.cpython-39.pyc
 create mode 100644 firstlanguage_python/utilities/schema_validator_wrapper.py

diff --git a/doc/controllers/advanced-api.md b/doc/controllers/advanced-api.md
index a0cdcd0..000476f 100644
--- a/doc/controllers/advanced-api.md
+++ b/doc/controllers/advanced-api.md
@@ -15,14 +15,36 @@ advanced_api_controller = client.advanced_api
 * [Get Classification](/fl-python/doc/controllers/advanced-api.md#get-classification)
 * [Get QA](/fl-python/doc/controllers/advanced-api.md#get-qa)
 * [Get NER](/fl-python/doc/controllers/advanced-api.md#get-ner)
+* [Get Summary](/fl-python/doc/controllers/advanced-api.md#get-summary)
+* [Get Translate](/fl-python/doc/controllers/advanced-api.md#get-translate)
 
 
 # Get Classification
 
-# Stemmer : Defintion and it's usage
+# Text Classification  : Defintion and it's usage
+
+A text classifier identifies the categories of the text given as input. Classifying the texts is one of the powerful preprocessing technique in topic identification and sentiment classification (product reviews, movie reviews etc)and indexing the texts while building a search system.
 
 # Languages covered:
 
+| Languages  | ISO Code |
+|------------|----------|
+| Arabic     | ar       |
+| Bulgarian  | bg       |
+| Chinese    | zh       |
+| English    | en       |
+| French     | fr       |
+| German     | de       |
+| Greek      | el       |
+| Hindi      | hi       |
+| Russian    | ru       |
+| Spanish    | es       |
+| Swahili    | sw       |
+| Thai       | th       |
+| Turkish    | tr       |
+| Urdu       | ur       |
+| Vietnamese | vi       |
+
 ```python
 def get_classification(self,
                       body)
@@ -41,24 +63,42 @@ def get_classification(self,
 ## Example Usage
 
 ```python
-body = jsonpickle.decode('{"key1":"val1","key2":"val2"}')
+body = jsonpickle.decode('{"$$__case":0,"value":{"input":{"context":"context4","lang":"lang4","labels":[{"key1":"val1","key2":"val2"}]}}}')
 
 result = advanced_api_controller.get_classification(body)
 ```
 
+## Example Response *(as JSON)*
+
+```json
+{
+  "labels": [
+    "positive",
+    "negative"
+  ],
+  "scores": [
+    0.9966060519218445,
+    0.0033939925488084555
+  ]
+}
+```
+
 ## Errors
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
 | 400 | Error output | [`ErrorsException`](/fl-python/doc/models/errors-exception.md) |
 | 426 | Please use HTTPS protocol | [`ApiClassify426ErrorException`](/fl-python/doc/models/api-classify-426-error-exception.md) |
+| 429 | Too Many Requests | `APIException` |
 
 
 # Get QA
 
-# Stemmer : Defintion and it's usage
+# QA : Defintion and it's usage
 
-# Languages covered:
+A Question Answering System retrieves the answer relevant to the question given by the user. A question answering system can be used for building a text based chatbots, search engines etc. Our question answering system  is mutilingual and supports 100 + languages. Please use ISO 639-2 2 digit language code  to get results. For example, use 'en' for English, 'ta' for Tamil, 'hi' for Hindi, 'fr' for French etc.
+
+For ISO code reference, please check the link https://www.loc.gov/standards/iso639-2/php/code_list.php
 
 ```python
 def get_qa(self,
@@ -78,7 +118,8 @@ def get_qa(self,
 ## Example Usage
 
 ```python
-result = advanced_api_controller.get_qa()
+body = jsonpickle.decode('{"$$__case":0,"value":{"input":{"question":"எவை மூன்றும் எப்போதும் ஒன்றாகவே இருக்கும்?","lang":"ta","context":"உப்பு, புளி, மிளகாய் மூன்றும் எப்போதும் ஒன்றாகவே இருக்கும். ஒருநாள், “குழம்பிற்கு யார் முக்கியம்? நீயா! நானா!” என்று சண்டை போட்டன. மூன்று பேரும் தனிதனியாகச் சென்று குழம்பில் சேரலாம் என்று முடிவு செய்தன. முதல் நாள், உப்பு மட்டும் குழம்பில் சேர்ந்து கொண்டது. “ஆ! ஒரே உப்பு! வாயில் வைக்க முடியவில்லை!” என்று எல்லோரும் கத்தினார்கள்"}}}')
+result = advanced_api_controller.get_qa(body)
 ```
 
 ## Example Response *(as JSON)*
@@ -98,14 +139,33 @@ result = advanced_api_controller.get_qa()
 |  --- | --- | --- |
 | 400 | Bad Request | [`ErrorsException`](/fl-python/doc/models/errors-exception.md) |
 | 426 | Please use HTTPS protocol | [`M426ErrorException`](/fl-python/doc/models/m426-error-exception.md) |
+| 429 | Too Many Requests | `APIException` |
 
 
 # Get NER
 
-# Stemmer : Defintion and it's usage
+# Named Entity Recognition : Defintion and it's usage
+
+Named Entity Recognitiion  (NER) is extracting the specific Nouns such as, Person Names, Location names, Organization Names, Currency , Dates. It is a classification task. NER can be used as a sub-task in applications such as Search Systems, Chatbots, Question Answering systems, Text Summarization etc.
 
 # Languages covered:
 
+| Languages          | ISO Code |
+|--------------------|----------|
+| Arabic             | ar       |
+| Chinese            | zh       |
+| Dutch              | nl       |
+| English            | en       |
+| French             | fr       |
+| German             | de       |
+| Italian            | it       |
+| Latvian            | lv       |
+| Portuguese         | pt       |
+| Spanish            | es       |
+
+For other languages we cannot guarantee results but you can try with ISO code.
+For ISO code reference, please check the link https://www.loc.gov/standards/iso639-2/php/code_list.php
+
 ```python
 def get_ner(self,
            body=None)
@@ -124,7 +184,8 @@ def get_ner(self,
 ## Example Usage
 
 ```python
-result = advanced_api_controller.get_ner()
+body = jsonpickle.decode('{"$$__case":0,"value":{"input":{"text":"إسمي محمد وأسكن في برلين","lang":"ar"}}}')
+result = advanced_api_controller.get_ner(body)
 ```
 
 ## Example Response *(as JSON)*
@@ -152,4 +213,203 @@ result = advanced_api_controller.get_ner()
 |  --- | --- | --- |
 | 400 | Bad Request | [`ErrorsException`](/fl-python/doc/models/errors-exception.md) |
 | 426 | Please use HTTPS protocol | [`M426ErrorException`](/fl-python/doc/models/m426-error-exception.md) |
+| 429 | Too Many Requests | `APIException` |
+
+
+# Get Summary
+
+# Summarization : Defintion and it's usage
+
+Summarization generates a crisp content of the large input text which is highly coherent.
+
+| Languages               | ISO Code |
+|-------------------------|----------|
+| Amharic                 | am       |
+| Arabic                  |  ar      |
+| Azerbaijani             |  az      |
+| Bengali                 |  bn      |
+| Burmese                 |  my      |
+| Chinese                 |  zh      |
+| English                 |  en      |
+| French                  |  fr      |
+| Gaelic; Scottish Gaelic | gd       |
+| Gujarati                |  gu      |
+| Hausa                   |  ha      |
+| Hindi                   |  hi      |
+| Igbo                    |  ig      |
+| Indonesian              |  id      |
+| Japanese                |  ja      |
+| Kirghiz; Kyrgyz         | ky       |
+| Korean                  |  ko      |
+| Marathi                 |  mr      |
+| Nepali                  |  ne      |
+| Oromo                   | om       |
+| Persian                 | fa       |
+| Portuguese              |  pt      |
+| Punjabi                 |  pa      |
+| Pushto; Pashto          | ps       |
+| Rundi                   | rn       |
+| Russian                 | ru       |
+| Serbian                 |  sr      |
+| Sinhala; Sinhalese      |  si      |
+| Somali                  |  so      |
+| Spanish; Castilian      |  es      |
+| Swahili                 |  sw      |
+| Tamil                   |  ta      |
+| Telugu                  |  te      |
+| Thai                    |  th      |
+| Tigrinya                |  ti      |
+| Turkish                 |  tr      |
+| Ukrainian               |  uk      |
+| Urdu                    |  ur      |
+| Uzbek                   |  uz      |
+| Vietnamese              |  vi      |
+| Welsh                   |  cy      |
+| Yoruba                  |  yo      |
+
+```python
+def get_summary(self,
+               body=None)
+```
+
+## Parameters
+
+| Parameter | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `body` | `object` | Body, Optional | Add a JSON Input as per the schema defined below |
+
+## Response Type
+
+[`ApiSummaryResponse`](/doc/models/api-summary-response.md)
+
+## Example Usage
+
+```python
+body = jsonpickle.decode('{"input":{"text":"Videos that say approved vaccines are dangerous and cause autism, cancer or infertility are among those that will be taken down, the company said. The policy includes the termination of accounts of anti-vaccine influencers. Tech giants have been criticised for not doing more to counter false health information on their sites. In July, US President Joe Biden said social media platforms were largely responsible for people\'s scepticism in getting vaccinated by spreading misinformation, and appealed for them to address the issue. YouTube, which is owned by Google, said 130,000 videos were removed from its platform since last year, when it implemented a ban on content spreading misinformation about Covid vaccines. In a blog post, the company said it had seen false claims about Covid jabs spill over into misinformation about vaccines in general. The new policy covers long-approved vaccines, such as those against measles or hepatitis B. We\'re expanding our medical misinformation policies on YouTube with new guidelines on currently administered vaccines that are approved and confirmed to be safe and effective by local health authorities and the WHO, the post said, referring to the World Health Organization.","lang":"en"}}')
+
+result = advanced_ap_is_controller.get_summary(body)
+```
+
+## Example Response *(as JSON)*
+
+```json
+{
+  "summary": "YouTube has announced a ban on videos spreading misinformation about Covid vaccines."
+}
+```
+
+## Errors
+
+| HTTP Status Code | Error Description | Exception Class |
+|  --- | --- | --- |
+| 400 | Bad Request | [`ErrorsException`](/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`M426ErrorException`](/doc/models/m426-error-exception.md) |
+| 429 | Too Many Requests | `APIException` |
+
+
+# Get Translate
+
+# Translation : Defintion and it's usage
+
+Machine Translation is translating the text automatically from  one language to another langauge.
+
+# Languages covered:
+
+| Languages                             | ISO Code   |
+|---------------------------------------|------------|
+|  Abkhazian                            |   ab       |
+|  Afrikaans                            |   af       |
+|  Amharic                              |   am       |
+|  Bashkir                              |   ba       |
+|  Catalan; Valencian                   |   ca       |
+|  Chechen                              |   ce       |
+|  Corsican                             |   co       |
+|  Chuvash                              |   cv       |
+|  Ewe                                  |   ee       |
+|  English                              |   en       |
+|  Basque                               |   eu       |
+|  Fijian                               |   fj       |
+|  French                               |   fr       |
+|  Galician                             |   gl       |
+|  Gujarati                             |   gu       |
+|  Manx                                 |   gv       |
+|  Hebrew                               |   he       |
+|  Haitian; Haitian Creole              |   ht       |
+|  Armenian                             |   hy       |
+|  Indonesian                           |   id       |
+|  Igbo                                 |   ig       |
+|  Icelandic                            |   is       |
+|  Japanese                             |   ja       |
+|  Kalaallisut; Greenlandic             |   kl       |
+|  Ganda                                |   lg       |
+|  Lingala                              |   ln       |
+|  Malagasy                             |   mg       |
+|  Marshallese                          |   mh       |
+|  Macedonian                           |   mk       |
+|  Mongolian                            |   mn       |
+|  Nauru                                |   na       |
+|  Bokmål, Norwegian; Norwegian Bokmål  |   nb       |
+|  Chichewa; Chewa; Nyanja              |   ny       |
+|  Ossetian; Ossetic                    |   os       |
+|  Pushto; Pashto                       |   ps       |
+|  Romansh                              |   rm       |
+|  Rundi                                |   rn       |
+|  Sango                                |   sg       |
+|  Samoan                               |   sm       |
+|  Shona                                |   sn       |
+|  Somali                               |   so       |
+|  Albanian                             |   sq       |
+|  Tamil                                |   ta       |
+|  Tigrinya                             |   ti       |
+|  Turkmen                              |   tk       |
+|  Tonga                                |   to       |
+|  Turkish                              |   tr       |
+|  Tsonga                               |   ts       |
+|  Tatar                                |   tt       |
+|  Tahitian                             |   ty       |
+|  Ukrainian                            |   uk       |
+|  Vietnamese                           |   vi       |
+|  Walloon                              |   wa       |
+|  Xhosa                                |   xh       |
+|  Yoruba                               |   yo       |
+|  Zulu                                 |   zu       |
+
+```python
+def get_translate(self,
+                 body=None)
+```
+
+## Parameters
+
+| Parameter | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `body` | `object` | Body, Optional | Add a JSON Input as per the schema defined below |
+
+## Response Type
+
+[`ApiTranslateResponse`](/doc/models/api-translate-response.md)
+
+## Example Usage
+
+```python
+body = '{"input":{"text":"அவள் வேகமாக ஓடினாள்","lang":"ta"} }'
+
+result = advanced_ap_is_controller.get_translate(body)
+```
+
+## Example Response *(as JSON)*
+
+```json
+{
+  "generated_text": "இன்று நல்ல நாள்."
+}
+```
+
+## Errors
+
+| HTTP Status Code | Error Description | Exception Class |
+|  --- | --- | --- |
+| 400 | Bad Request | [`ErrorsException`](/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`M426ErrorException`](/doc/models/m426-error-exception.md) |
+| 429 | Too Many Requests | `APIException` |
 
diff --git a/doc/controllers/basic-api.md b/doc/controllers/basic-api.md
index f6707a9..adc7cf9 100644
--- a/doc/controllers/basic-api.md
+++ b/doc/controllers/basic-api.md
@@ -26,34 +26,36 @@ A word takes different inflectional forms. For instance, the word, "Compute" can
 
 # Languages covered:
 
-Our stemmer works for the following  26 languages. Our stemmer works using the snowball stemmer algorithm which is also known as Porter 2 Stemming algorithm.
-
-1. Tamil
-2. Hindi
-3. English
-4. Arabic
-5. Basque
-6. Catalan
-7. Danish
-8. Dutch
-9. Finnish
-10. French
-11. German
-12. Greek
-13. Hungarian
-14. Indonesian
-15. Irish
-16. Italian
-17. Lithuanian
-18. Nepali
-19. Norwegian
-20. Portuguese
-21. Romanian
-22. Russian
-23. Serbian
-24. Spanish
-25. Swedish
-26. Turkish
+Our stemmer works for the following  26 languages.
+
+| Languages    | ISO Code   |
+|--------------|------------|
+|  Arabic      |  ar        |
+|  Catalan     |  ca        |
+|  Danish      |  da        |
+|  German      |  de        |
+|  Greek       |  el        |
+|  English     |  en        |
+|  Spanish     |  es        |
+|  Basque      |  eu        |
+|  Finnish     |  fi        |
+|  French      |  fr        |
+|  Irish       |  ga        |
+|  Hindi       |  hi        |
+|  Hungarian   |  hu        |
+|  Indonesian  |  id        |
+|  Italian     |  it        |
+|  Lithuanian  |  lt        |
+|  Nepali      |  ne        |
+|  Dutch       |  nl        |
+|  Norwegian   |  no        |
+|  Portuguese  |  pt        |
+|  Romanian    |  ro        |
+|  Russian     |  ru        |
+|  Serbian     |  sr        |
+|  Swedish     |  sv        |
+|  Tamil       |  ta        |
+|  Turkish     |  tr        |
 
 ```python
 def get_stemmer(self,
@@ -73,25 +75,66 @@ def get_stemmer(self,
 ## Example Usage
 
 ```python
-body = jsonpickle.decode('{"key1":"val1","key2":"val2"}')
+body = jsonpickle.decode('{"$$__case":0,"value":{"input":{"text":"அவள் வேகமாக ஓடினாள்","lang":"ta"}}}')
 
 result = basic_api_controller.get_stemmer(body)
 ```
 
+## Example Response *(as JSON)*
+
+```json
+[
+  {
+    "orginalText": "அவள்",
+    "stem": "அவள்"
+  },
+  {
+    "orginalText": "வேகமாக",
+    "stem": "வேகம்"
+  },
+  {
+    "orginalText": "ஓடினாள்",
+    "stem": "ஓடி"
+  }
+]
+```
+
 ## Errors
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
 | 400 | Error output | [`ErrorsException`](/fl-python/doc/models/errors-exception.md) |
 | 426 | Please use HTTPS protocol | [`ApiStemmer426ErrorException`](/fl-python/doc/models/api-stemmer-426-error-exception.md) |
+| 429 | Too Many Requests | `APIException` |
 
 
 # Get Lemma
 
-# Stemmer : Defintion and it's usage
+# Lemmatizer : Defintion and it's usage
+
+Lemmatizer is similar to stemmer that gives the stemmed version of a word but lemmatizer differs from the stemmer in giving a meaningful stem or the lemma. For instance, for the word, "smiling", the stemmer would give, "smil", stemming the suffix, "ing" but the lemmatizer would give the meaningful stem, "smile". lemmatizers can be used in applications such as,  Machine Translation, Search Engines, Text Summarization etc.
 
 # Languages covered:
 
+| Languages          | ISO Code |
+|--------------------|----------|
+| Catalan            | ca       |
+| Danish             | da       |
+| Dutch              | nl       |
+| English            | en       |
+| French             | fr       |
+| German             | de       |
+| Greek              | el       |
+| Italian            | it       |
+| Lithuanian         | lt       |
+| Macedonian         | mk       |
+| Norwegian (Bokmål) | nb       |
+| Polish             | pl       |
+| Portuguese         | pt       |
+| Romanian           | ro       |
+| Russian            | ru       |
+| Spanish            | es       |
+
 ```python
 def get_lemma(self,
              body)
@@ -110,25 +153,70 @@ def get_lemma(self,
 ## Example Usage
 
 ```python
-body = jsonpickle.decode('{"key1":"val1","key2":"val2"}')
+body = jsonpickle.decode('{"$$__case":0,"value":{"input":{"text":"Smiling makes everyone happy","lang":"en"}}}')
 
 result = basic_api_controller.get_lemma(body)
 ```
 
+## Example Response *(as JSON)*
+
+```json
+[
+  {
+    "orginalText": "Smiling",
+    "lemmatized": "smile"
+  },
+  {
+    "orginalText": "makes",
+    "lemmatized": "make"
+  },
+  {
+    "orginalText": "everyone",
+    "lemmatized": "everyone"
+  },
+  {
+    "orginalText": "happy",
+    "lemmatized": "happy"
+  }
+]
+```
+
 ## Errors
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
 | 400 | Error output | [`ErrorsException`](/fl-python/doc/models/errors-exception.md) |
 | 426 | Please use HTTPS protocol | [`ApiLemmatize426ErrorException`](/fl-python/doc/models/api-lemmatize-426-error-exception.md) |
+| 429 | Too Many Requests | `APIException` |
 
 
 # Get Morph
 
-# Stemmer : Defintion and it's usage
+# Morphological Analyzer : Defintion and it's usage
+
+Morphological Analyzer analyzes how a word is formed. It breaks a word into smaller units called, "morphemes" and gives a clue on the pattern of words of a particular langauge.  It can be used for building applications such as,  Machine Translation, Text Summarization, Search systems etc.
 
 # Languages covered:
 
+| Languages          | ISO Code |
+|--------------------|----------|
+| Catalan            | ca       |
+| Danish             | da       |
+| Dutch              | nl       |
+| English            | en       |
+| French             | fr       |
+| German             | de       |
+| Greek              | el       |
+| Italian            | it       |
+| Japanese           | ja       |
+| Lithuanian         | lt       |
+| Macedonian         | mk       |
+| Norwegian (Bokmål) | nb       |
+| Polish             | pl       |
+| Portuguese         | pt       |
+| Russian            | ru       |
+| Spanish            | es       |
+
 ```python
 def get_morph(self,
              body)
@@ -147,36 +235,207 @@ def get_morph(self,
 ## Example Usage
 
 ```python
-body = jsonpickle.decode('{"key1":"val1","key2":"val2"}')
+body = jsonpickle.decode('{"$$__case":0,"value":{"input":{"text":"Let us begin the API development.","lang":"en"}}}')
 
 result = basic_api_controller.get_morph(body)
 ```
 
+## Example Response *(as JSON)*
+
+```json
+{
+  "Let": {
+    "VerbForm": [
+      "Inf"
+    ],
+    "Case": [
+      "Acc"
+    ],
+    "Number": [
+      "Sing"
+    ],
+    "Person": [
+      "1"
+    ],
+    "PronType": [
+      "Art"
+    ],
+    "Definite": [
+      "Def"
+    ],
+    "NounType": [
+      "Prop"
+    ]
+  },
+  "us": {
+    "VerbForm": [
+      "Inf"
+    ],
+    "Case": [
+      "Acc"
+    ],
+    "Number": [
+      "Sing"
+    ],
+    "Person": [
+      "1"
+    ],
+    "PronType": [
+      "Art"
+    ],
+    "Definite": [
+      "Def"
+    ],
+    "NounType": [
+      "Prop"
+    ]
+  },
+  "begin": {
+    "VerbForm": [
+      "Inf"
+    ],
+    "Case": [
+      "Acc"
+    ],
+    "Number": [
+      "Sing"
+    ],
+    "Person": [
+      "1"
+    ],
+    "PronType": [
+      "Art"
+    ],
+    "Definite": [
+      "Def"
+    ],
+    "NounType": [
+      "Prop"
+    ]
+  },
+  "the": {
+    "VerbForm": [
+      "Inf"
+    ],
+    "Case": [
+      "Acc"
+    ],
+    "Number": [
+      "Sing"
+    ],
+    "Person": [
+      "1"
+    ],
+    "PronType": [
+      "Art"
+    ],
+    "Definite": [
+      "Def"
+    ],
+    "NounType": [
+      "Prop"
+    ]
+  },
+  "API": {
+    "VerbForm": [
+      "Inf"
+    ],
+    "Case": [
+      "Acc"
+    ],
+    "Number": [
+      "Sing"
+    ],
+    "Person": [
+      "1"
+    ],
+    "PronType": [
+      "Art"
+    ],
+    "Definite": [
+      "Def"
+    ],
+    "NounType": [
+      "Prop"
+    ]
+  },
+  "development": {
+    "VerbForm": [
+      "Inf"
+    ],
+    "Case": [
+      "Acc"
+    ],
+    "Number": [
+      "Sing"
+    ],
+    "Person": [
+      "1"
+    ],
+    "PronType": [
+      "Art"
+    ],
+    "Definite": [
+      "Def"
+    ],
+    "NounType": [
+      "Prop"
+    ]
+  },
+  ".": {
+    "VerbForm": [
+      "Inf"
+    ],
+    "Case": [
+      "Acc"
+    ],
+    "Number": [
+      "Sing"
+    ],
+    "Person": [
+      "1"
+    ],
+    "PronType": [
+      "Art"
+    ],
+    "Definite": [
+      "Def"
+    ],
+    "NounType": [
+      "Prop"
+    ]
+  }
+}
+```
+
 ## Errors
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
 | 400 | Error output | [`ErrorsException`](/fl-python/doc/models/errors-exception.md) |
 | 426 | Please use HTTPS protocol | [`ApiMorph426ErrorException`](/fl-python/doc/models/api-morph-426-error-exception.md) |
+| 429 | Too Many Requests | `APIException` |
 
 
 # Get Postag
 
-**So, What is a POS Tagger?**
-
-Parts Of Speech Tagger, which is shortly known as POS Tagger is a software that automatically finds the word classes, when a text input is given. The text input can be a word, a sentence or a set of sentences. The word classes are the grammatical categories such as, Noun, Verb, Adverb etc. These category assigned to each word is a tag. A set of tags, each indicating a grammatical category is called, "tagsets". POS tagging is a mandatory pre processing for most of the Natural Language Processing Applications such as, Information Extraction, Information Retreival systems and Summary generation systems.
-
-**Is POS Tagger, a language-independent software?**
-
-No. A POS Tagger is a language-dependent software as the grammar rules will differ for every language. For instance, A word ending with "ing" might indicate a Verb" in English but this will not be applicable for other languages.
+# Parts of Speech Tagger : Defintion and it's usage
 
-**For what languages, our  POS Tagger API will work?**
+Parts of Speech Tagger, which is shortly known as POS Tagger is a software that automatically finds the word classes, when a text input is given. The text input can be a word, a sentence or a set of sentences. The word classes are the grammatical categories such as, Noun, Verb, Adverb etc. The category assigned to each word is called as a tag. A set of tags, each indicating a grammatical category is called, "tagsets". POS tagging is a mandatory pre-processing for most of the Natural Language Processing Applications such as, Information Extraction, Information Retreival systems and Summary generation systems. A POS Tagger is a language-dependent software as the grammar rules will differ for every language. For instance, a word ending with "ing" might indicate a "Verb" in English but this will not be applicable for other languages.
 
-At present, our POS Tagger API works for English and Tami Languages. Soon we will extend the APIs to accomodate more languages.
-
-**How Precise are our POS Tagger API?**
+# Languages covered:
 
-will update accuracy metrics soon .....
+| Languages          | ISO Code |
+|--------------------|----------|
+| Chinese            | zh       |
+| Dutch              | nl       |
+| English            | en       |
+| German             | de       |
+| Italian            | it       |
+| Lithuanian         | lt       |
+| Polish             | pl       |
+| Romanian           | ro       |
+| Tamil              | ta       |
 
 ```python
 def get_postag(self,
@@ -196,15 +455,51 @@ def get_postag(self,
 ## Example Usage
 
 ```python
-body = jsonpickle.decode('{"key1":"val1","key2":"val2"}')
+body = jsonpickle.decode('{"$$__case":0,"value":{"input":{"text":"Let us begin the API development.","lang":"en"}}}')
 
 result = basic_api_controller.get_postag(body)
 ```
 
+## Example Response *(as JSON)*
+
+```json
+[
+  {
+    "orginalText": "Let",
+    "postag": "VERB"
+  },
+  {
+    "orginalText": "us",
+    "postag": "PRON"
+  },
+  {
+    "orginalText": "begin",
+    "postag": "VERB"
+  },
+  {
+    "orginalText": "the",
+    "postag": "DET"
+  },
+  {
+    "orginalText": "API",
+    "postag": "PROPN"
+  },
+  {
+    "orginalText": "development",
+    "postag": "NOUN"
+  },
+  {
+    "orginalText": ".",
+    "postag": "PUNCT"
+  }
+]
+```
+
 ## Errors
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
 | 400 | Error output | [`ErrorsException`](/fl-python/doc/models/errors-exception.md) |
 | 426 | Please use HTTPS protocol | [`ApiPostag426ErrorException`](/fl-python/doc/models/api-postag-426-error-exception.md) |
+| 429 | Too Many Requests | `APIException` |
 
diff --git a/doc/models/api-ner-request-1.md b/doc/models/api-ner-request-1.md
new file mode 100644
index 0000000..69de0f6
--- /dev/null
+++ b/doc/models/api-ner-request-1.md
@@ -0,0 +1,25 @@
+
+# Api Ner Request 1
+
+## Structure
+
+`ApiNerRequest1`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `input` | [`Input8`](/doc/models/input-8.md) | Required | - |
+
+## Example (as JSON)
+
+```json
+{
+  "input": {
+    "lang": "lang0",
+    "contentType": "contentType4",
+    "url": "url2"
+  }
+}
+```
+
diff --git a/doc/models/api-ner-request.md b/doc/models/api-ner-request.md
new file mode 100644
index 0000000..70c0fe4
--- /dev/null
+++ b/doc/models/api-ner-request.md
@@ -0,0 +1,24 @@
+
+# Api Ner Request
+
+## Structure
+
+`ApiNerRequest`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `input` | [`Input7`](/doc/models/input-7.md) | Required | - |
+
+## Example (as JSON)
+
+```json
+{
+  "input": {
+    "text": "text2",
+    "lang": "lang0"
+  }
+}
+```
+
diff --git a/doc/models/api-ner-response.md b/doc/models/api-ner-response.md
index a9a3681..f128c19 100644
--- a/doc/models/api-ner-response.md
+++ b/doc/models/api-ner-response.md
@@ -9,10 +9,10 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `entity_group` | `string` | Required | Entity group inferred.<br>**Constraints**: *Minimum Length*: `1` |
-| `word` | `string` | Required | Corresponding word<br>**Constraints**: *Minimum Length*: `1` |
-| `start` | `string` | Required | Start position of the entity in the given input.<br>**Constraints**: *Minimum Length*: `1` |
-| `end` | `string` | Required | Start position of the entity in the given input.<br>**Constraints**: *Minimum Length*: `1` |
+| `entity_group` | `string` | Required | Entity group inferred. |
+| `word` | `string` | Required | Corresponding word |
+| `start` | `string` | Required | Start position of the entity in the given input. |
+| `end` | `string` | Required | Start position of the entity in the given input. |
 
 ## Example (as JSON)
 
diff --git a/doc/models/api-qa-request-1.md b/doc/models/api-qa-request-1.md
new file mode 100644
index 0000000..b5cf44f
--- /dev/null
+++ b/doc/models/api-qa-request-1.md
@@ -0,0 +1,26 @@
+
+# Api Qa Request 1
+
+## Structure
+
+`ApiQaRequest1`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `input` | [`Input6`](/doc/models/input-6.md) | Required | - |
+
+## Example (as JSON)
+
+```json
+{
+  "input": {
+    "question": "question0",
+    "lang": "lang0",
+    "contentType": "contentType4",
+    "url": "url2"
+  }
+}
+```
+
diff --git a/doc/models/api-qa-request.md b/doc/models/api-qa-request.md
new file mode 100644
index 0000000..e013098
--- /dev/null
+++ b/doc/models/api-qa-request.md
@@ -0,0 +1,25 @@
+
+# Api Qa Request
+
+## Structure
+
+`ApiQaRequest`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `input` | [`Input5`](/doc/models/input-5.md) | Required | - |
+
+## Example (as JSON)
+
+```json
+{
+  "input": {
+    "question": "question0",
+    "lang": "lang0",
+    "context": "context0"
+  }
+}
+```
+
diff --git a/doc/models/api-summary-request-1.md b/doc/models/api-summary-request-1.md
new file mode 100644
index 0000000..f3ed142
--- /dev/null
+++ b/doc/models/api-summary-request-1.md
@@ -0,0 +1,25 @@
+
+# Api Summary Request 1
+
+## Structure
+
+`ApiSummaryRequest1`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `input` | [`Input10`](/doc/models/input-10.md) | Required | - |
+
+## Example (as JSON)
+
+```json
+{
+  "input": {
+    "lang": "lang0",
+    "contentType": "contentType4",
+    "url": "url2"
+  }
+}
+```
+
diff --git a/doc/models/api-summary-request.md b/doc/models/api-summary-request.md
new file mode 100644
index 0000000..02b55bd
--- /dev/null
+++ b/doc/models/api-summary-request.md
@@ -0,0 +1,24 @@
+
+# Api Summary Request
+
+## Structure
+
+`ApiSummaryRequest`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `input` | [`Input9`](/doc/models/input-9.md) | Required | - |
+
+## Example (as JSON)
+
+```json
+{
+  "input": {
+    "text": "text2",
+    "lang": "lang0"
+  }
+}
+```
+
diff --git a/doc/models/api-summary-response.md b/doc/models/api-summary-response.md
new file mode 100644
index 0000000..d10e6f6
--- /dev/null
+++ b/doc/models/api-summary-response.md
@@ -0,0 +1,21 @@
+
+# Api Summary Response
+
+## Structure
+
+`ApiSummaryResponse`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `summary` | `string` | Optional | - |
+
+## Example (as JSON)
+
+```json
+{
+  "summary": null
+}
+```
+
diff --git a/doc/models/api-translate-request-1.md b/doc/models/api-translate-request-1.md
new file mode 100644
index 0000000..954441d
--- /dev/null
+++ b/doc/models/api-translate-request-1.md
@@ -0,0 +1,25 @@
+
+# Api Translate Request 1
+
+## Structure
+
+`ApiTranslateRequest1`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `input` | [`Input12`](/doc/models/input-12.md) | Required | - |
+
+## Example (as JSON)
+
+```json
+{
+  "input": {
+    "lang": "lang0",
+    "contentType": "contentType4",
+    "url": "url2"
+  }
+}
+```
+
diff --git a/doc/models/api-translate-request.md b/doc/models/api-translate-request.md
new file mode 100644
index 0000000..23cbc16
--- /dev/null
+++ b/doc/models/api-translate-request.md
@@ -0,0 +1,24 @@
+
+# Api Translate Request
+
+## Structure
+
+`ApiTranslateRequest`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `input` | [`Input11`](/doc/models/input-11.md) | Required | - |
+
+## Example (as JSON)
+
+```json
+{
+  "input": {
+    "text": "text2",
+    "lang": "lang0"
+  }
+}
+```
+
diff --git a/doc/models/api-translate-response.md b/doc/models/api-translate-response.md
new file mode 100644
index 0000000..325d95a
--- /dev/null
+++ b/doc/models/api-translate-response.md
@@ -0,0 +1,21 @@
+
+# Api Translate Response
+
+## Structure
+
+`ApiTranslateResponse`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `generated_text` | `string` | Optional | - |
+
+## Example (as JSON)
+
+```json
+{
+  "generated_text": null
+}
+```
+
diff --git a/doc/models/input-1.md b/doc/models/input-1.md
index 151f72c..e44d0fb 100644
--- a/doc/models/input-1.md
+++ b/doc/models/input-1.md
@@ -11,17 +11,17 @@ Text for processing will be read from the given URL. Only HTML pages or text pag
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `url` | `string` | Optional | URL where the content is hosted. |
-| `lang` | `string` | Optional | Allowed language code. Refer Allowed languages section. |
-| `content_type` | `string` | Optional | Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing. |
+| `url` | `string` | Required | URL where the content is hosted. |
+| `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
+| `content_type` | `string` | Required | Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing. |
 
 ## Example (as JSON)
 
 ```json
 {
-  "url": null,
-  "lang": null,
-  "contentType": null
+  "url": "http://news.bbc.co.uk/2/hi/health/2284783.stm",
+  "lang": "en",
+  "contentType": "html"
 }
 ```
 
diff --git a/doc/models/input-10.md b/doc/models/input-10.md
new file mode 100644
index 0000000..f6d5ab5
--- /dev/null
+++ b/doc/models/input-10.md
@@ -0,0 +1,25 @@
+
+# Input 10
+
+## Structure
+
+`Input10`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
+| `content_type` | `string` | Required | Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing. |
+| `url` | `string` | Required | Text from this URL will be read and a summary generated |
+
+## Example (as JSON)
+
+```json
+{
+  "lang": "lang2",
+  "contentType": "contentType6",
+  "url": "url4"
+}
+```
+
diff --git a/doc/models/input-11.md b/doc/models/input-11.md
new file mode 100644
index 0000000..96a49c8
--- /dev/null
+++ b/doc/models/input-11.md
@@ -0,0 +1,23 @@
+
+# Input 11
+
+## Structure
+
+`Input11`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `text` | `string` | Required | Text for which translation should be generated |
+| `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
+
+## Example (as JSON)
+
+```json
+{
+  "text": "text0",
+  "lang": "lang2"
+}
+```
+
diff --git a/doc/models/input-12.md b/doc/models/input-12.md
new file mode 100644
index 0000000..6762f7c
--- /dev/null
+++ b/doc/models/input-12.md
@@ -0,0 +1,25 @@
+
+# Input 12
+
+## Structure
+
+`Input12`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
+| `content_type` | `string` | Required | Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing. |
+| `url` | `string` | Required | Text from this URL will be read and a translation generated |
+
+## Example (as JSON)
+
+```json
+{
+  "lang": "lang2",
+  "contentType": "contentType6",
+  "url": "url4"
+}
+```
+
diff --git a/doc/models/input-3.md b/doc/models/input-3.md
index c443b60..3c635c6 100644
--- a/doc/models/input-3.md
+++ b/doc/models/input-3.md
@@ -9,19 +9,22 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `url` | `string` | Optional | URL where the content is hosted. |
-| `lang` | `string` | Optional | Allowed language code. Refer Allowed languages section. |
-| `content_type` | `string` | Optional | Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing. |
-| `labels` | `List of object` | Optional | Labels to classify |
+| `url` | `string` | Required | URL where the content is hosted. |
+| `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
+| `content_type` | `string` | Required | Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing. |
+| `labels` | `List of object` | Required | Labels to classify |
 
 ## Example (as JSON)
 
 ```json
 {
-  "url": null,
-  "lang": null,
-  "contentType": null,
-  "labels": null
+  "url": "http://news.bbc.co.uk/2/hi/health/2284783.stm",
+  "lang": "en",
+  "contentType": "html",
+  "labels": [
+    "good",
+    "bad"
+  ]
 }
 ```
 
diff --git a/doc/models/input-5.md b/doc/models/input-5.md
new file mode 100644
index 0000000..6370f0c
--- /dev/null
+++ b/doc/models/input-5.md
@@ -0,0 +1,25 @@
+
+# Input 5
+
+## Structure
+
+`Input5`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `question` | `string` | Required | Question to be answered from the context given. Only One question can be asked at a time. Special characters will not be stripped. |
+| `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
+| `context` | `string` | Required | Sentence or a paragraph. Special characters will not be stripped. |
+
+## Example (as JSON)
+
+```json
+{
+  "question": "question8",
+  "lang": "lang2",
+  "context": "context2"
+}
+```
+
diff --git a/doc/models/input-6.md b/doc/models/input-6.md
new file mode 100644
index 0000000..9e59852
--- /dev/null
+++ b/doc/models/input-6.md
@@ -0,0 +1,27 @@
+
+# Input 6
+
+## Structure
+
+`Input6`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `question` | `string` | Required | Question to be answered from the context given. Only One question can be asked at a time. Special characters will not be stripped. |
+| `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
+| `content_type` | `string` | Required | Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing. |
+| `url` | `string` | Required | URL where the context for the question is stored. |
+
+## Example (as JSON)
+
+```json
+{
+  "question": "question8",
+  "lang": "lang2",
+  "contentType": "contentType6",
+  "url": "url4"
+}
+```
+
diff --git a/doc/models/input-7.md b/doc/models/input-7.md
new file mode 100644
index 0000000..da92345
--- /dev/null
+++ b/doc/models/input-7.md
@@ -0,0 +1,23 @@
+
+# Input 7
+
+## Structure
+
+`Input7`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `text` | `string` | Required | Named Entities will be marked from this text. Special characters will not be stripped. |
+| `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
+
+## Example (as JSON)
+
+```json
+{
+  "text": "text0",
+  "lang": "lang2"
+}
+```
+
diff --git a/doc/models/input-8.md b/doc/models/input-8.md
new file mode 100644
index 0000000..6200545
--- /dev/null
+++ b/doc/models/input-8.md
@@ -0,0 +1,25 @@
+
+# Input 8
+
+## Structure
+
+`Input8`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
+| `content_type` | `string` | Required | Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing. |
+| `url` | `string` | Required | URL where the text for the NER task is stored. |
+
+## Example (as JSON)
+
+```json
+{
+  "lang": "lang2",
+  "contentType": "contentType6",
+  "url": "url4"
+}
+```
+
diff --git a/doc/models/input-9.md b/doc/models/input-9.md
new file mode 100644
index 0000000..31fcc63
--- /dev/null
+++ b/doc/models/input-9.md
@@ -0,0 +1,23 @@
+
+# Input 9
+
+## Structure
+
+`Input9`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `text` | `string` | Required | Text for which summary should be generated |
+| `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
+
+## Example (as JSON)
+
+```json
+{
+  "text": "text0",
+  "lang": "lang2"
+}
+```
+
diff --git a/doc/models/text-input-classify.md b/doc/models/text-input-classify.md
index 9d9da40..50ebf47 100644
--- a/doc/models/text-input-classify.md
+++ b/doc/models/text-input-classify.md
@@ -9,13 +9,20 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input2`](/fl-python/doc/models/input-2.md) | Optional | - |
+| `input` | [`Input2`](/fl-python/doc/models/input-2.md) | Required | - |
 
 ## Example (as JSON)
 
 ```json
 {
-  "input": null
+  "input": {
+    "context": "Let us begin the API development.",
+    "lang": "en",
+    "labels": [
+      "good",
+      "bad"
+    ]
+  }
 }
 ```
 
diff --git a/doc/models/text-input-tamil.md b/doc/models/text-input-tamil.md
index 9f4cfe7..f215fd5 100644
--- a/doc/models/text-input-tamil.md
+++ b/doc/models/text-input-tamil.md
@@ -9,13 +9,16 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input4`](/fl-python/doc/models/input-4.md) | Optional | - |
+| `input` | [`Input4`](/fl-python/doc/models/input-4.md) | Required | - |
 
 ## Example (as JSON)
 
 ```json
 {
-  "input": null
+  "input": {
+    "text": "அவள் வேகமாக ஓடினாள்",
+    "lang": "ta"
+  }
 }
 ```
 
diff --git a/doc/models/text-input.md b/doc/models/text-input.md
index 0175bc9..d4b2332 100644
--- a/doc/models/text-input.md
+++ b/doc/models/text-input.md
@@ -9,13 +9,16 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input`](/fl-python/doc/models/input.md) | Optional | Direct Text Input |
+| `input` | [`Input`](/fl-python/doc/models/input.md) | Required | Direct Text Input |
 
 ## Example (as JSON)
 
 ```json
 {
-  "input": null
+  "input": {
+    "text": "Let us begin the API development.",
+    "lang": "en"
+  }
 }
 ```
 
diff --git a/doc/models/url-input-classify.md b/doc/models/url-input-classify.md
index d713410..aa6332d 100644
--- a/doc/models/url-input-classify.md
+++ b/doc/models/url-input-classify.md
@@ -9,13 +9,21 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input3`](/fl-python/doc/models/input-3.md) | Optional | - |
+| `input` | [`Input3`](/fl-python/doc/models/input-3.md) | Required | - |
 
 ## Example (as JSON)
 
 ```json
 {
-  "input": null
+  "input": {
+    "url": "http://news.bbc.co.uk/2/hi/health/2284783.stm",
+    "lang": "en",
+    "contentType": "html",
+    "labels": [
+      "good",
+      "bad"
+    ]
+  }
 }
 ```
 
diff --git a/doc/models/url-input.md b/doc/models/url-input.md
index 0d5732c..3bccdb7 100644
--- a/doc/models/url-input.md
+++ b/doc/models/url-input.md
@@ -9,13 +9,17 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input1`](/fl-python/doc/models/input-1.md) | Optional | Text for processing will be read from the given URL. Only HTML pages or text pages will be processed at this time. |
+| `input` | [`Input1`](/fl-python/doc/models/input-1.md) | Required | Text for processing will be read from the given URL. Only HTML pages or text pages will be processed at this time. |
 
 ## Example (as JSON)
 
 ```json
 {
-  "input": null
+  "input": {
+    "url": "http://news.bbc.co.uk/2/hi/health/2284783.stm",
+    "lang": "en",
+    "contentType": "html"
+  }
 }
 ```
 
diff --git a/examples/example_Stemmer.py b/examples/example_Stemmer.py
index fdad43a..bb9473c 100644
--- a/examples/example_Stemmer.py
+++ b/examples/example_Stemmer.py
@@ -4,7 +4,7 @@
 
 
 client = Client(
-    apikey='079cc45f-bbb2-4f01-ac27-63ff9a2d82b5',
+    apikey='63af276e-34fe-4fd5-a474-0c69847f25e1',
     environment=Environment.PRODUCTION,)
 
 reqbody='{"input":{"text":"அவள் வேகமாக ஓடினாள்","lang":"ta"} }'
diff --git a/firstlanguage_python/__pycache__/api_helper.cpython-39.pyc b/firstlanguage_python/__pycache__/api_helper.cpython-39.pyc
index e94a0634b6d72268aa886de2a2e4c853f977a227..f7077785e807f0511c1d5a736127eaf6dd465bb6 100644
GIT binary patch
diff --git a/firstlanguage_python/api_helper.py b/firstlanguage_python/api_helper.py
index 70b416f..62f2596 100644
--- a/firstlanguage_python/api_helper.py
+++ b/firstlanguage_python/api_helper.py
@@ -108,6 +108,39 @@ def json_deserialize(json, unboxing_function=None, as_dict=False):
         else:
             return unboxing_function(decoded)
 
+    @staticmethod
+    def get_content_type(value):
+        """Get content type header for oneof.
+
+        Args:
+            value: The value passed by the user.
+
+        Returns:
+            dict: A dictionary representing the data contained in the
+                JSON serialized string.
+
+        """
+        if value is None:
+            return None
+        primitive = (int, str, bool, float)
+
+        if type(value) in primitive:
+            return 'text/plain; charset=utf-8'
+
+        else:
+            return 'application/json; charset=utf-8'
+
+    @staticmethod
+    def get_schema_path(path):
+        """Return the Schema's path
+
+        Returns:
+            string : returns Correct schema path
+
+        """
+        path = path.replace('\\models', '\\schemas').replace('/models', '/schemas').replace(".py", ".json")
+        return path
+
     @staticmethod
     def serialize_array(key, array, formatting="indexed"):
         """Converts an array parameter to a list of key value tuples.
diff --git a/firstlanguage_python/controllers/__pycache__/advanced_api_controller.cpython-39.pyc b/firstlanguage_python/controllers/__pycache__/advanced_api_controller.cpython-39.pyc
index ade0b51857d5a662fdb2bbc2306efa8d51913644..8496aeeef2b9288b7976c31469d78b0df795dd00 100644
GIT binary patch
diff --git a/firstlanguage_python/controllers/__pycache__/base_controller.cpython-39.pyc b/firstlanguage_python/controllers/__pycache__/base_controller.cpython-39.pyc
index 3ff45bba22b148e4030dcca3f2fbf8be879d3853..7b2f435129e2086a73c217fa1c6c424c2b6052cc 100644
GIT binary patch
diff --git a/firstlanguage_python/controllers/__pycache__/basic_api_controller.cpython-39.pyc b/firstlanguage_python/controllers/__pycache__/basic_api_controller.cpython-39.pyc
index 6cb7beec0bcc015ce276a318d440d74b6823625e..13b72c9b1a47e8ef5fc8ff9aa01bb181e094a598 100644
GIT binary patch
diff --git a/firstlanguage_python/controllers/advanced_api_controller.py b/firstlanguage_python/controllers/advanced_api_controller.py
index f8a36a3..82f7507 100644
--- a/firstlanguage_python/controllers/advanced_api_controller.py
+++ b/firstlanguage_python/controllers/advanced_api_controller.py
@@ -14,8 +14,11 @@
 from firstlanguage_python.models.responseclassify import Responseclassify
 from firstlanguage_python.models.api_qa_response import ApiQaResponse
 from firstlanguage_python.models.api_ner_response import ApiNerResponse
+from firstlanguage_python.models.api_summary_response import ApiSummaryResponse
+from firstlanguage_python.models.api_translate_response import ApiTranslateResponse
 from firstlanguage_python.exceptions.errors_exception import ErrorsException
 from firstlanguage_python.exceptions.api_classify_426_error_exception import ApiClassify426ErrorException
+from firstlanguage_python.exceptions.api_exception import APIException
 from firstlanguage_python.exceptions.m_426_error_exception import M426ErrorException
 
 
@@ -30,8 +33,30 @@ def get_classification(self,
                            body):
         """Does a POST request to /api/classify.
 
-        # Stemmer : Defintion and it's usage
+        # Text Classification  : Defintion and it's usage
+        A text classifier identifies the categories of the text given as
+        input. Classifying the texts is one of the powerful preprocessing
+        technique in topic identification and sentiment classification
+        (product reviews, movie reviews etc)and indexing the texts while
+        building a search system.
         # Languages covered:
+        | Languages  | ISO Code |
+        |------------|----------|
+        | Arabic     | ar       |
+        | Bulgarian  | bg       |
+        | Chinese    | zh       |
+        | English    | en       |
+        | French     | fr       |
+        | German     | de       |
+        | Greek      | el       |
+        | Hindi      | hi       |
+        | Russian    | ru       |
+        | Spanish    | es       |
+        | Swahili    | sw       |
+        | Thai       | th       |
+        | Turkish    | tr       |
+        | Urdu       | ur       |
+        | Vietnamese | vi       |
 
         Args:
             body (object): Add a JSON Input as per the schema defined below
@@ -69,6 +94,8 @@ def get_classification(self,
             raise ErrorsException('Error output', _response)
         elif _response.status_code == 426:
             raise ApiClassify426ErrorException('Please use HTTPS protocol', _response)
+        elif _response.status_code == 429:
+            raise APIException('Too Many Requests', _response)
         self.validate_response(_response)
 
         decoded = APIHelper.json_deserialize(_response.text, Responseclassify.from_dictionary)
@@ -79,8 +106,16 @@ def get_qa(self,
                body=None):
         """Does a POST request to /api/qa.
 
-        # Stemmer : Defintion and it's usage
-        # Languages covered:
+        # QA : Defintion and it's usage
+        A Question Answering System retrieves the answer relevant to the
+        question given by the user. A question answering system can be used
+        for building a text based chatbots, search engines etc. Our question
+        answering system  is mutilingual and supports 100 + languages. Please
+        use ISO 639-2 2 digit language code  to get results. For example, use
+        'en' for English, 'ta' for Tamil, 'hi' for Hindi, 'fr' for French
+        etc.
+        For ISO code reference, please check the link
+        https://www.loc.gov/standards/iso639-2/php/code_list.php
 
         Args:
             body (object, optional): Add a JSON Input as per the schema
@@ -120,6 +155,8 @@ def get_qa(self,
             raise ErrorsException('Bad Request', _response)
         elif _response.status_code == 426:
             raise M426ErrorException('Please use HTTPS protocol', _response)
+        elif _response.status_code == 429:
+            raise APIException('Too Many Requests', _response)
         self.validate_response(_response)
 
         decoded = APIHelper.json_deserialize(_response.text, ApiQaResponse.from_dictionary)
@@ -130,8 +167,29 @@ def get_ner(self,
                 body=None):
         """Does a POST request to /api/ner.
 
-        # Stemmer : Defintion and it's usage
+        # Named Entity Recognition : Defintion and it's usage
+        Named Entity Recognitiion  (NER) is extracting the specific Nouns such
+        as, Person Names, Location names, Organization Names, Currency ,
+        Dates. It is a classification task. NER can be used as a sub-task in
+        applications such as Search Systems, Chatbots, Question Answering
+        systems, Text Summarization etc. 
         # Languages covered:
+        | Languages          | ISO Code |
+        |--------------------|----------|
+        | Arabic             | ar       |
+        | Chinese            | zh       |
+        | Dutch              | nl       |
+        | English            | en       |
+        | French             | fr       |
+        | German             | de       |
+        | Italian            | it       |
+        | Latvian            | lv       |
+        | Portuguese         | pt       |
+        | Spanish            | es       |
+        For other languages we cannot guarantee results but you can try with
+        ISO code. 
+        For ISO code reference, please check the link
+        https://www.loc.gov/standards/iso639-2/php/code_list.php
 
         Args:
             body (object, optional): Add a JSON Input as per the schema
@@ -171,8 +229,221 @@ def get_ner(self,
             raise ErrorsException('Bad Request', _response)
         elif _response.status_code == 426:
             raise M426ErrorException('Please use HTTPS protocol', _response)
+        elif _response.status_code == 429:
+            raise APIException('Too Many Requests', _response)
         self.validate_response(_response)
 
         decoded = APIHelper.json_deserialize(_response.text, ApiNerResponse.from_dictionary)
 
         return decoded
+
+    def get_summary(self,
+                    body=None):
+        """Does a POST request to /api/summary.
+
+        # Summarization : Defintion and it's usage
+        Summarization generates a crisp content of the large input text which
+        is highly coherent. 
+        | Languages               | ISO Code |
+        |-------------------------|----------|
+        | Amharic                 | am       |
+        | Arabic                  |  ar      |
+        | Azerbaijani             |  az      |
+        | Bengali                 |  bn      |
+        | Burmese                 |  my      |
+        | Chinese                 |  zh      |
+        | English                 |  en      |
+        | French                  |  fr      |
+        | Gaelic; Scottish Gaelic | gd       |
+        | Gujarati                |  gu      |
+        | Hausa                   |  ha      |
+        | Hindi                   |  hi      |
+        | Igbo                    |  ig      |
+        | Indonesian              |  id      |
+        | Japanese                |  ja      |
+        | Kirghiz; Kyrgyz         | ky       |
+        | Korean                  |  ko      |
+        | Marathi                 |  mr      |
+        | Nepali                  |  ne      |
+        | Oromo                   | om       |
+        | Persian                 | fa       |
+        | Portuguese              |  pt      |
+        | Punjabi                 |  pa      |
+        | Pushto; Pashto          | ps       |
+        | Rundi                   | rn       |
+        | Russian                 | ru       |
+        | Serbian                 |  sr      |
+        | Sinhala; Sinhalese      |  si      |
+        | Somali                  |  so      |
+        | Spanish; Castilian      |  es      |
+        | Swahili                 |  sw      |
+        | Tamil                   |  ta      |
+        | Telugu                  |  te      |
+        | Thai                    |  th      |
+        | Tigrinya                |  ti      |
+        | Turkish                 |  tr      |
+        | Ukrainian               |  uk      |
+        | Urdu                    |  ur      |
+        | Uzbek                   |  uz      |
+        | Vietnamese              |  vi      |
+        | Welsh                   |  cy      |
+        | Yoruba                  |  yo      |
+
+        Args:
+            body (object, optional): Add a JSON Input as per the schema
+                defined below
+
+        Returns:
+            ApiSummaryResponse: Response from the API. JSON Object with
+                summary of the text given
+
+        Raises:
+            APIException: When an error occurs while fetching the data from
+                the remote API. This exception includes the HTTP Response
+                code, an error message, and the HTTP body that was received in
+                the request.
+
+        """
+
+        # Prepare query URL
+        _url_path = '/api/summary'
+        _query_builder = self.config.get_base_uri()
+        _query_builder += _url_path
+        _query_url = APIHelper.clean_url(_query_builder)
+
+        # Prepare headers
+        _headers = {
+            'accept': 'application/json',
+            'Content-Type': 'application/json'
+        }
+
+        # Prepare and execute request
+        _request = self.config.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body))
+        CustomHeaderAuth.apply(self.config, _request)
+        _response = self.execute_request(_request)
+
+        # Endpoint and global error handling using HTTP status codes.
+        if _response.status_code == 400:
+            raise ErrorsException('Bad Request', _response)
+        elif _response.status_code == 426:
+            raise M426ErrorException('Please use HTTPS protocol', _response)
+        elif _response.status_code == 429:
+            raise APIException('Too Many Requests', _response)
+        self.validate_response(_response)
+
+        decoded = APIHelper.json_deserialize(_response.text, ApiSummaryResponse.from_dictionary)
+
+        return decoded
+
+    def get_translate(self,
+                      body=None):
+        """Does a POST request to /api/translate.
+
+        # Translation : Defintion and it's usage
+        Machine Translation is translating the text automatically from  one
+        language to another langauge.
+        # Languages covered:
+        | Languages                             | ISO Code   |
+        |---------------------------------------|------------|
+        |  Abkhazian                            |   ab       |
+        |  Afrikaans                            |   af       |
+        |  Amharic                              |   am       |
+        |  Bashkir                              |   ba       |
+        |  Catalan; Valencian                   |   ca       |
+        |  Chechen                              |   ce       |
+        |  Corsican                             |   co       |
+        |  Chuvash                              |   cv       |
+        |  Ewe                                  |   ee       |
+        |  English                              |   en       |
+        |  Basque                               |   eu       |
+        |  Fijian                               |   fj       |
+        |  French                               |   fr       |
+        |  Galician                             |   gl       |
+        |  Gujarati                             |   gu       |
+        |  Manx                                 |   gv       |
+        |  Hebrew                               |   he       |
+        |  Haitian; Haitian Creole              |   ht       |
+        |  Armenian                             |   hy       |
+        |  Indonesian                           |   id       |
+        |  Igbo                                 |   ig       |
+        |  Icelandic                            |   is       |
+        |  Japanese                             |   ja       |
+        |  Kalaallisut; Greenlandic             |   kl       |
+        |  Ganda                                |   lg       |
+        |  Lingala                              |   ln       |
+        |  Malagasy                             |   mg       |
+        |  Marshallese                          |   mh       |
+        |  Macedonian                           |   mk       |
+        |  Mongolian                            |   mn       |
+        |  Nauru                                |   na       |
+        |  Bokmål, Norwegian; Norwegian Bokmål  |   nb       |
+        |  Chichewa; Chewa; Nyanja              |   ny       |
+        |  Ossetian; Ossetic                    |   os       |
+        |  Pushto; Pashto                       |   ps       |
+        |  Romansh                              |   rm       |
+        |  Rundi                                |   rn       |
+        |  Sango                                |   sg       |
+        |  Samoan                               |   sm       |
+        |  Shona                                |   sn       |
+        |  Somali                               |   so       |
+        |  Albanian                             |   sq       |
+        |  Tamil                                |   ta       |
+        |  Tigrinya                             |   ti       |
+        |  Turkmen                              |   tk       |
+        |  Tonga                                |   to       |
+        |  Turkish                              |   tr       |
+        |  Tsonga                               |   ts       |
+        |  Tatar                                |   tt       |
+        |  Tahitian                             |   ty       |
+        |  Ukrainian                            |   uk       |
+        |  Vietnamese                           |   vi       |
+        |  Walloon                              |   wa       |
+        |  Xhosa                                |   xh       |
+        |  Yoruba                               |   yo       |
+        |  Zulu                                 |   zu       |
+
+        Args:
+            body (object, optional): Add a JSON Input as per the schema
+                defined below
+
+        Returns:
+            ApiTranslateResponse: Response from the API. JSON Object with
+                translation of the text given
+
+        Raises:
+            APIException: When an error occurs while fetching the data from
+                the remote API. This exception includes the HTTP Response
+                code, an error message, and the HTTP body that was received in
+                the request.
+
+        """
+
+        # Prepare query URL
+        _url_path = '/api/translate'
+        _query_builder = self.config.get_base_uri()
+        _query_builder += _url_path
+        _query_url = APIHelper.clean_url(_query_builder)
+
+        # Prepare headers
+        _headers = {
+            'accept': 'application/json',
+            'Content-Type': 'application/json'
+        }
+
+        # Prepare and execute request
+        _request = self.config.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body))
+        CustomHeaderAuth.apply(self.config, _request)
+        _response = self.execute_request(_request)
+
+        # Endpoint and global error handling using HTTP status codes.
+        if _response.status_code == 400:
+            raise ErrorsException('Bad Request', _response)
+        elif _response.status_code == 426:
+            raise M426ErrorException('Please use HTTPS protocol', _response)
+        elif _response.status_code == 429:
+            raise APIException('Too Many Requests', _response)
+        self.validate_response(_response)
+
+        decoded = APIHelper.json_deserialize(_response.text, ApiTranslateResponse.from_dictionary)
+
+        return decoded
diff --git a/firstlanguage_python/controllers/base_controller.py b/firstlanguage_python/controllers/base_controller.py
index e727514..12d98ca 100644
--- a/firstlanguage_python/controllers/base_controller.py
+++ b/firstlanguage_python/controllers/base_controller.py
@@ -7,6 +7,7 @@
  https://www.apimatic.io ).
 """
 
+import platform
 from firstlanguage_python.api_helper import APIHelper
 from firstlanguage_python.exceptions.api_exception import APIException
 
@@ -29,7 +30,7 @@ class BaseController(object):
 
     def global_headers(self):
         return {
-            'user-agent': 'APIMATIC 3.0'
+            'user-agent': self.get_user_agent() 
         }
 
     def __init__(self, config, call_back=None):
@@ -93,3 +94,11 @@ def validate_response(self, response):
         """
         if (response.status_code < 200) or (response.status_code > 208):  # [200,208] = HTTP OK
             raise APIException('HTTP response not OK.', response)
+
+    def get_user_agent(self):
+        user_agent = 'APIMATIC 3.0'
+        parameters = {
+        }
+
+        agent = APIHelper.append_url_with_template_parameters(user_agent, parameters)
+        return agent.replace('  ', ' ')
diff --git a/firstlanguage_python/controllers/basic_api_controller.py b/firstlanguage_python/controllers/basic_api_controller.py
index f6e8b9a..7934254 100644
--- a/firstlanguage_python/controllers/basic_api_controller.py
+++ b/firstlanguage_python/controllers/basic_api_controller.py
@@ -17,6 +17,7 @@
 from firstlanguage_python.models.responsepo import Responsepo
 from firstlanguage_python.exceptions.errors_exception import ErrorsException
 from firstlanguage_python.exceptions.api_stemmer_426_error_exception import ApiStemmer426ErrorException
+from firstlanguage_python.exceptions.api_exception import APIException
 from firstlanguage_python.exceptions.api_lemmatize_426_error_exception import ApiLemmatize426ErrorException
 from firstlanguage_python.exceptions.api_morph_426_error_exception import ApiMorph426ErrorException
 from firstlanguage_python.exceptions.api_postag_426_error_exception import ApiPostag426ErrorException
@@ -34,44 +35,45 @@ def get_stemmer(self,
         """Does a POST request to /api/stemmer.
 
         # Stemmer : Defintion and it's usage
-         A word takes different inflectional forms. For instance, the word,
-         "Compute" can take the forms, "computing", "computation",  and
-         "computerize". The NLP applications such as Search Engines and
-         Information Extraction would want to store the base or stem of the
-         word, i.e "Compute" instead of accomodating all its inflected forms.
-         This will yield in dimensionality reduction and incerases the
-         efficiency of the system. The stemmer cuts the prefix and suffix of a
-         word. 
+        A word takes different inflectional forms. For instance, the word,
+        "Compute" can take the forms, "computing", "computation",  and
+        "computerize". The NLP applications such as Search Engines and
+        Information Extraction would want to store the base or stem of the
+        word, i.e "Compute" instead of accomodating all its inflected forms.
+        This will yield in dimensionality reduction and incerases the
+        efficiency of the system. The stemmer cuts the prefix and suffix of a
+        word. 
          # Languages covered:
-          Our stemmer works for the following  26 languages. Our stemmer works
-          using the snowball stemmer algorithm which is also known as Porter 2
-          Stemming algorithm. 
-          1. Tamil
-          2. Hindi
-          3. English
-          4. Arabic
-          5. Basque
-          6. Catalan
-          7. Danish
-          8. Dutch
-          9. Finnish
-          10.  French
-          11. German
-          12. Greek
-          13. Hungarian
-          14. Indonesian
-          15. Irish
-          16. Italian
-          17. Lithuanian
-          18. Nepali
-          19. Norwegian
-          20. Portuguese
-          21. Romanian
-          22. Russian
-          23. Serbian
-          24. Spanish
-          25. Swedish
-          26. Turkish
+          Our stemmer works for the following  26 languages. 
+          
+        | Languages    | ISO Code   |
+        |--------------|------------|
+        |  Arabic      |  ar        |
+        |  Catalan     |  ca        |
+        |  Danish      |  da        |
+        |  German      |  de        |
+        |  Greek       |  el        |
+        |  English     |  en        |
+        |  Spanish     |  es        |
+        |  Basque      |  eu        |
+        |  Finnish     |  fi        |
+        |  French      |  fr        |
+        |  Irish       |  ga        |
+        |  Hindi       |  hi        |
+        |  Hungarian   |  hu        |
+        |  Indonesian  |  id        |
+        |  Italian     |  it        |
+        |  Lithuanian  |  lt        |
+        |  Nepali      |  ne        |
+        |  Dutch       |  nl        |
+        |  Norwegian   |  no        |
+        |  Portuguese  |  pt        |
+        |  Romanian    |  ro        |
+        |  Russian     |  ru        |
+        |  Serbian     |  sr        |
+        |  Swedish     |  sv        |
+        |  Tamil       |  ta        |
+        |  Turkish     |  tr        |
 
         Args:
             body (object): Add a JSON Input as per the schema defined below
@@ -109,6 +111,8 @@ def get_stemmer(self,
             raise ErrorsException('Error output', _response)
         elif _response.status_code == 426:
             raise ApiStemmer426ErrorException('Please use HTTPS protocol', _response)
+        elif _response.status_code == 429:
+            raise APIException('Too Many Requests', _response)
         self.validate_response(_response)
 
         decoded = APIHelper.json_deserialize(_response.text, Responsestem.from_dictionary)
@@ -119,8 +123,33 @@ def get_lemma(self,
                   body):
         """Does a POST request to /api/lemmatize.
 
-        # Stemmer : Defintion and it's usage
+        # Lemmatizer : Defintion and it's usage
+        Lemmatizer is similar to stemmer that gives the stemmed version of a
+        word but lemmatizer differs from the stemmer in giving a meaningful
+        stem or the lemma. For instance, for the word, "smiling", the stemmer
+        would give, "smil", stemming the suffix, "ing" but the lemmatizer
+        would give the meaningful stem, "smile". lemmatizers can be used in
+        applications such as,  Machine Translation, Search Engines, Text
+        Summarization etc.
         # Languages covered:
+        | Languages          | ISO Code |
+        |--------------------|----------|
+        | Catalan            | ca       |
+        | Danish             | da       |
+        | Dutch              | nl       |
+        | English            | en       |
+        | French             | fr       |
+        | German             | de       |
+        | Greek              | el       |
+        | Italian            | it       |
+        | Lithuanian         | lt       |
+        | Macedonian         | mk       |
+        | Norwegian (Bokmål) | nb       |
+        | Polish             | pl       |
+        | Portuguese         | pt       |
+        | Romanian           | ro       |
+        | Russian            | ru       |
+        | Spanish            | es       |
 
         Args:
             body (object): Add a JSON Input as per the schema defined below
@@ -158,6 +187,8 @@ def get_lemma(self,
             raise ErrorsException('Error output', _response)
         elif _response.status_code == 426:
             raise ApiLemmatize426ErrorException('Please use HTTPS protocol', _response)
+        elif _response.status_code == 429:
+            raise APIException('Too Many Requests', _response)
         self.validate_response(_response)
 
         decoded = APIHelper.json_deserialize(_response.text, Responselemma.from_dictionary)
@@ -168,8 +199,31 @@ def get_morph(self,
                   body):
         """Does a POST request to /api/morph.
 
-        # Stemmer : Defintion and it's usage
+        # Morphological Analyzer : Defintion and it's usage
+        Morphological Analyzer analyzes how a word is formed. It breaks a word
+        into smaller units called, "morphemes" and gives a clue on the pattern
+        of words of a particular langauge.  It can be used for building
+        applications such as,  Machine Translation, Text Summarization, Search
+        systems etc. 
         # Languages covered:
+        | Languages          | ISO Code |
+        |--------------------|----------|
+        | Catalan            | ca       |
+        | Danish             | da       |
+        | Dutch              | nl       |
+        | English            | en       |
+        | French             | fr       |
+        | German             | de       |
+        | Greek              | el       |
+        | Italian            | it       |
+        | Japanese           | ja       |
+        | Lithuanian         | lt       |
+        | Macedonian         | mk       |
+        | Norwegian (Bokmål) | nb       |
+        | Polish             | pl       |
+        | Portuguese         | pt       |
+        | Russian            | ru       |
+        | Spanish            | es       |
 
         Args:
             body (object): Add a JSON Input as per the schema defined below
@@ -207,6 +261,8 @@ def get_morph(self,
             raise ErrorsException('Error output', _response)
         elif _response.status_code == 426:
             raise ApiMorph426ErrorException('Please use HTTPS protocol', _response)
+        elif _response.status_code == 429:
+            raise APIException('Too Many Requests', _response)
         self.validate_response(_response)
 
         decoded = APIHelper.json_deserialize(_response.text, Responsemorph.from_dictionary)
@@ -217,27 +273,33 @@ def get_postag(self,
                    body):
         """Does a POST request to /api/postag.
 
-         **So, What is a POS Tagger?**
-          Parts Of Speech Tagger, which is shortly known as POS Tagger is a
+         # Parts of Speech Tagger : Defintion and it's usage
+          Parts of Speech Tagger, which is shortly known as POS Tagger is a
           software that automatically finds the word classes, when a text
           input is given. The text input can be a word, a sentence or a set of
           sentences. The word classes are the grammatical categories such as,
-          Noun, Verb, Adverb etc. These category assigned to each word is a
-          tag. A set of tags, each indicating a grammatical category is
-          called, "tagsets". POS tagging is a mandatory pre processing for
+          Noun, Verb, Adverb etc. The category assigned to each word is called
+          as a tag. A set of tags, each indicating a grammatical category is
+          called, "tagsets". POS tagging is a mandatory pre-processing for
           most of the Natural Language Processing Applications such as,
           Information Extraction, Information Retreival systems and Summary
-          generation systems.
-        **Is POS Tagger, a language-independent software?**
-        No. A POS Tagger is a language-dependent software as the grammar rules
-        will differ for every language. For instance, A word ending with "ing"
-        might indicate a Verb" in English but this will not be applicable for
-        other languages.
-        **For what languages, our  POS Tagger API will work?**
-        At present, our POS Tagger API works for English and Tami Languages.
-        Soon we will extend the APIs to accomodate more languages. 
-        **How Precise are our POS Tagger API?**
-        will update accuracy metrics soon .....
+          generation systems. A POS Tagger is a language-dependent software as
+          the grammar rules will differ for every language. For instance, a
+          word ending with "ing" might indicate a "Verb" in English but this
+          will not be applicable for other languages. 
+        # Languages covered:
+        | Languages          | ISO Code |
+        |--------------------|----------|
+        | Chinese            | zh       |
+        | Dutch              | nl       |
+        | English            | en       |
+        | German             | de       |
+        | Italian            | it       |
+        | Lithuanian         | lt       |
+        | Polish             | pl       |
+        | Romanian           | ro       |
+        | Tamil              | ta       |
+         
 
         Args:
             body (object): Add a JSON Input as per the schema defined below
@@ -275,6 +337,8 @@ def get_postag(self,
             raise ErrorsException('Error output', _response)
         elif _response.status_code == 426:
             raise ApiPostag426ErrorException('Please use HTTPS protocol', _response)
+        elif _response.status_code == 429:
+            raise APIException('Too Many Requests', _response)
         self.validate_response(_response)
 
         decoded = APIHelper.json_deserialize(_response.text, Responsepo.from_dictionary)
diff --git a/firstlanguage_python/models/__init__.py b/firstlanguage_python/models/__init__.py
index e5be29f..3df7045 100644
--- a/firstlanguage_python/models/__init__.py
+++ b/firstlanguage_python/models/__init__.py
@@ -6,14 +6,32 @@
     'text_input_tamil',
     'url_input',
     'url_input_classify',
+    'api_ner_request',
+    'api_ner_request_1',
     'api_ner_response',
+    'api_qa_request',
+    'api_qa_request_1',
     'api_qa_response',
+    'api_summary_request',
+    'api_summary_request_1',
+    'api_summary_response',
+    'api_translate_request',
+    'api_translate_request_1',
+    'api_translate_response',
     'errors_1',
     'input',
     'input_1',
     'input_2',
     'input_3',
     'input_4',
+    'input_5',
+    'input_6',
+    'input_7',
+    'input_8',
+    'input_9',
+    'input_10',
+    'input_11',
+    'input_12',
     'orignal_string',
     'responselemma',
     'responsepo',
diff --git a/firstlanguage_python/models/__pycache__/__init__.cpython-39.pyc b/firstlanguage_python/models/__pycache__/__init__.cpython-39.pyc
index b1f1dba3a945054904a5bac659f5870013cf9f0a..481befb9a3930750b53e2d5c493fb47e2e8a1131 100644
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/api_ner_response.cpython-39.pyc b/firstlanguage_python/models/__pycache__/api_ner_response.cpython-39.pyc
index 85bcca45faa0b8fb0f9fffaa27b6ec01803beae2..8e64de2e34409ddef6b04b6b93a777fa531a5feb 100644
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/api_qa_response.cpython-39.pyc b/firstlanguage_python/models/__pycache__/api_qa_response.cpython-39.pyc
index 5671681c9bed275c13c255edc1ef4f948ec2ac1b..0c0f9d7987e3e165221c9bdc10562605bb3a56a6 100644
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/api_summary_response.cpython-39.pyc b/firstlanguage_python/models/__pycache__/api_summary_response.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..e3a7b162c22454cc004678dc7ce4d519779b4ed2
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/api_translate_response.cpython-39.pyc b/firstlanguage_python/models/__pycache__/api_translate_response.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..5d77ff7696b20e0fd2e73c19ed6d0e6c6f7b0cb2
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/errors_1.cpython-39.pyc b/firstlanguage_python/models/__pycache__/errors_1.cpython-39.pyc
index 929ff968399c23a67ec5679552a1992cf598b9fb..3837ae20f35e98909d2f972d010cb92f08ef6ceb 100644
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/orignal_string.cpython-39.pyc b/firstlanguage_python/models/__pycache__/orignal_string.cpython-39.pyc
index 4e9e819346b6dc19b76a9a0916ddd6f7f95af028..bfb3a6b0d19a176b5defc54fe7358623a708752b 100644
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/responseclassify.cpython-39.pyc b/firstlanguage_python/models/__pycache__/responseclassify.cpython-39.pyc
index 5b4790f9a14bcad02840c3fa47469f97f7dce51c..e14584279fa5f3bf2ef2f5d270677a5df64d60f3 100644
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/responselemma.cpython-39.pyc b/firstlanguage_python/models/__pycache__/responselemma.cpython-39.pyc
index 3b54b9141c3fe5ba116084573656e4167dca6be1..8e6109568399337120be1edd20db23c848936a76 100644
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/responsemorph.cpython-39.pyc b/firstlanguage_python/models/__pycache__/responsemorph.cpython-39.pyc
index e86844710acb6e49b04c68c36f2fdef85c105b16..6fc6447126fbeed9dda25992ec63982bc1aa50db 100644
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/responsepo.cpython-39.pyc b/firstlanguage_python/models/__pycache__/responsepo.cpython-39.pyc
index d23c3a15fd7d1c35d44fd3ba88c72e24d779256f..a10ce70f638205cccde953478dd08393642194b2 100644
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/responsestem.cpython-39.pyc b/firstlanguage_python/models/__pycache__/responsestem.cpython-39.pyc
index f034300e8c9b327878d128e9309e03e93a62cf17..5dc1a8598aed585ac8d6513566d76b78ed9a8f6f 100644
GIT binary patch
diff --git a/firstlanguage_python/models/api_ner_request.py b/firstlanguage_python/models/api_ner_request.py
new file mode 100644
index 0000000..a64b966
--- /dev/null
+++ b/firstlanguage_python/models/api_ner_request.py
@@ -0,0 +1,73 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguageapi
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+from firstlanguage_python.models.input_7 import Input7
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class ApiNerRequest(object):
+
+    """Implementation of the 'Api Ner Request' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        input (Input7): TODO: type description here.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "input": 'input'
+    }
+
+    def __init__(self,
+                 input=None):
+        """Constructor for the ApiNerRequest class"""
+
+        # Initialize members of the class
+        self.input = input
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        input = Input7.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+
+        # Return an object of this model
+        return cls(input)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/api_ner_request_1.py b/firstlanguage_python/models/api_ner_request_1.py
new file mode 100644
index 0000000..a63c3ff
--- /dev/null
+++ b/firstlanguage_python/models/api_ner_request_1.py
@@ -0,0 +1,73 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguageapi
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+from firstlanguage_python.models.input_8 import Input8
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class ApiNerRequest1(object):
+
+    """Implementation of the 'Api Ner Request1' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        input (Input8): TODO: type description here.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "input": 'input'
+    }
+
+    def __init__(self,
+                 input=None):
+        """Constructor for the ApiNerRequest1 class"""
+
+        # Initialize members of the class
+        self.input = input
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        input = Input8.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+
+        # Return an object of this model
+        return cls(input)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/api_ner_response.py b/firstlanguage_python/models/api_ner_response.py
index 2e412f8..66fcecb 100644
--- a/firstlanguage_python/models/api_ner_response.py
+++ b/firstlanguage_python/models/api_ner_response.py
@@ -6,6 +6,10 @@
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
 
 
 class ApiNerResponse(object):
@@ -71,3 +75,16 @@ def from_dictionary(cls,
                    word,
                    start,
                    end)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/api_qa_request.py b/firstlanguage_python/models/api_qa_request.py
new file mode 100644
index 0000000..5f1d94d
--- /dev/null
+++ b/firstlanguage_python/models/api_qa_request.py
@@ -0,0 +1,73 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguageapi
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+from firstlanguage_python.models.input_5 import Input5
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class ApiQaRequest(object):
+
+    """Implementation of the 'Api Qa Request' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        input (Input5): TODO: type description here.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "input": 'input'
+    }
+
+    def __init__(self,
+                 input=None):
+        """Constructor for the ApiQaRequest class"""
+
+        # Initialize members of the class
+        self.input = input
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        input = Input5.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+
+        # Return an object of this model
+        return cls(input)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/api_qa_request_1.py b/firstlanguage_python/models/api_qa_request_1.py
new file mode 100644
index 0000000..9a2a505
--- /dev/null
+++ b/firstlanguage_python/models/api_qa_request_1.py
@@ -0,0 +1,73 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguageapi
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+from firstlanguage_python.models.input_6 import Input6
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class ApiQaRequest1(object):
+
+    """Implementation of the 'Api Qa Request1' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        input (Input6): TODO: type description here.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "input": 'input'
+    }
+
+    def __init__(self,
+                 input=None):
+        """Constructor for the ApiQaRequest1 class"""
+
+        # Initialize members of the class
+        self.input = input
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        input = Input6.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+
+        # Return an object of this model
+        return cls(input)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/api_qa_response.py b/firstlanguage_python/models/api_qa_response.py
index 7c2b95e..660a772 100644
--- a/firstlanguage_python/models/api_qa_response.py
+++ b/firstlanguage_python/models/api_qa_response.py
@@ -6,6 +6,10 @@
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
 
 
 class ApiQaResponse(object):
@@ -71,3 +75,16 @@ def from_dictionary(cls,
                    start,
                    end,
                    answer)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/api_summary_request.py b/firstlanguage_python/models/api_summary_request.py
new file mode 100644
index 0000000..f681ac9
--- /dev/null
+++ b/firstlanguage_python/models/api_summary_request.py
@@ -0,0 +1,73 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguageapi
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+from firstlanguage_python.models.input_9 import Input9
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class ApiSummaryRequest(object):
+
+    """Implementation of the 'Api Summary Request' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        input (Input9): TODO: type description here.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "input": 'input'
+    }
+
+    def __init__(self,
+                 input=None):
+        """Constructor for the ApiSummaryRequest class"""
+
+        # Initialize members of the class
+        self.input = input
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        input = Input9.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+
+        # Return an object of this model
+        return cls(input)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/api_summary_request_1.py b/firstlanguage_python/models/api_summary_request_1.py
new file mode 100644
index 0000000..db6db5d
--- /dev/null
+++ b/firstlanguage_python/models/api_summary_request_1.py
@@ -0,0 +1,73 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguageapi
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+from firstlanguage_python.models.input_10 import Input10
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class ApiSummaryRequest1(object):
+
+    """Implementation of the 'Api Summary Request1' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        input (Input10): TODO: type description here.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "input": 'input'
+    }
+
+    def __init__(self,
+                 input=None):
+        """Constructor for the ApiSummaryRequest1 class"""
+
+        # Initialize members of the class
+        self.input = input
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        input = Input10.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+
+        # Return an object of this model
+        return cls(input)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/api_summary_response.py b/firstlanguage_python/models/api_summary_response.py
new file mode 100644
index 0000000..6a65aa6
--- /dev/null
+++ b/firstlanguage_python/models/api_summary_response.py
@@ -0,0 +1,72 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguageapi
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class ApiSummaryResponse(object):
+
+    """Implementation of the 'Api Summary Response' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        summary (string): TODO: type description here.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "summary": 'summary'
+    }
+
+    def __init__(self,
+                 summary=None):
+        """Constructor for the ApiSummaryResponse class"""
+
+        # Initialize members of the class
+        self.summary = summary
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        summary = dictionary.get('summary')
+
+        # Return an object of this model
+        return cls(summary)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/api_translate_request.py b/firstlanguage_python/models/api_translate_request.py
new file mode 100644
index 0000000..81a5726
--- /dev/null
+++ b/firstlanguage_python/models/api_translate_request.py
@@ -0,0 +1,73 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguageapi
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+from firstlanguage_python.models.input_11 import Input11
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class ApiTranslateRequest(object):
+
+    """Implementation of the 'Api Translate Request' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        input (Input11): TODO: type description here.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "input": 'input'
+    }
+
+    def __init__(self,
+                 input=None):
+        """Constructor for the ApiTranslateRequest class"""
+
+        # Initialize members of the class
+        self.input = input
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        input = Input11.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+
+        # Return an object of this model
+        return cls(input)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/api_translate_request_1.py b/firstlanguage_python/models/api_translate_request_1.py
new file mode 100644
index 0000000..475f928
--- /dev/null
+++ b/firstlanguage_python/models/api_translate_request_1.py
@@ -0,0 +1,73 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguageapi
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+from firstlanguage_python.models.input_12 import Input12
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class ApiTranslateRequest1(object):
+
+    """Implementation of the 'Api Translate Request1' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        input (Input12): TODO: type description here.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "input": 'input'
+    }
+
+    def __init__(self,
+                 input=None):
+        """Constructor for the ApiTranslateRequest1 class"""
+
+        # Initialize members of the class
+        self.input = input
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        input = Input12.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+
+        # Return an object of this model
+        return cls(input)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/api_translate_response.py b/firstlanguage_python/models/api_translate_response.py
new file mode 100644
index 0000000..61aa7b9
--- /dev/null
+++ b/firstlanguage_python/models/api_translate_response.py
@@ -0,0 +1,72 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguageapi
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class ApiTranslateResponse(object):
+
+    """Implementation of the 'Api Translate Response' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        generated_text (string): TODO: type description here.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "generated_text": 'generated_text'
+    }
+
+    def __init__(self,
+                 generated_text=None):
+        """Constructor for the ApiTranslateResponse class"""
+
+        # Initialize members of the class
+        self.generated_text = generated_text
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        generated_text = dictionary.get('generated_text')
+
+        # Return an object of this model
+        return cls(generated_text)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/errors_1.py b/firstlanguage_python/models/errors_1.py
index 1104e0a..05a1ae2 100644
--- a/firstlanguage_python/models/errors_1.py
+++ b/firstlanguage_python/models/errors_1.py
@@ -6,6 +6,10 @@
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
 
 
 class Errors1(object):
@@ -65,3 +69,16 @@ def from_dictionary(cls,
         return cls(msg,
                    param,
                    location)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/input.py b/firstlanguage_python/models/input.py
index cadc1a0..4904cd2 100644
--- a/firstlanguage_python/models/input.py
+++ b/firstlanguage_python/models/input.py
@@ -6,6 +6,10 @@
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
 
 
 class Input(object):
@@ -61,3 +65,16 @@ def from_dictionary(cls,
         # Return an object of this model
         return cls(text,
                    lang)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/input_1.py b/firstlanguage_python/models/input_1.py
index c539e9a..454d209 100644
--- a/firstlanguage_python/models/input_1.py
+++ b/firstlanguage_python/models/input_1.py
@@ -6,6 +6,10 @@
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
 
 
 class Input1(object):
@@ -69,3 +73,16 @@ def from_dictionary(cls,
         return cls(url,
                    lang,
                    content_type)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/input_10.py b/firstlanguage_python/models/input_10.py
new file mode 100644
index 0000000..8f37f0e
--- /dev/null
+++ b/firstlanguage_python/models/input_10.py
@@ -0,0 +1,87 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguageapi
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class Input10(object):
+
+    """Implementation of the 'Input10' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        lang (string): Allowed language code. Refer Allowed languages
+            section.
+        content_type (string): Allowed values or html or text. If html is
+            specified all html tags and special characters will be stripped
+            before processing.
+        url (string): Text from this URL will be read and a summary generated
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "lang": 'lang',
+        "content_type": 'contentType',
+        "url": 'url'
+    }
+
+    def __init__(self,
+                 lang=None,
+                 content_type=None,
+                 url=None):
+        """Constructor for the Input10 class"""
+
+        # Initialize members of the class
+        self.lang = lang
+        self.content_type = content_type
+        self.url = url
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        lang = dictionary.get('lang')
+        content_type = dictionary.get('contentType')
+        url = dictionary.get('url')
+
+        # Return an object of this model
+        return cls(lang,
+                   content_type,
+                   url)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/input_11.py b/firstlanguage_python/models/input_11.py
new file mode 100644
index 0000000..0129fd6
--- /dev/null
+++ b/firstlanguage_python/models/input_11.py
@@ -0,0 +1,79 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguageapi
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class Input11(object):
+
+    """Implementation of the 'Input11' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        text (string): Text for which translation should be generated
+        lang (string): Allowed language code. Refer Allowed languages
+            section.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "text": 'text',
+        "lang": 'lang'
+    }
+
+    def __init__(self,
+                 text=None,
+                 lang=None):
+        """Constructor for the Input11 class"""
+
+        # Initialize members of the class
+        self.text = text
+        self.lang = lang
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        text = dictionary.get('text')
+        lang = dictionary.get('lang')
+
+        # Return an object of this model
+        return cls(text,
+                   lang)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/input_12.py b/firstlanguage_python/models/input_12.py
new file mode 100644
index 0000000..4947896
--- /dev/null
+++ b/firstlanguage_python/models/input_12.py
@@ -0,0 +1,88 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguageapi
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class Input12(object):
+
+    """Implementation of the 'Input12' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        lang (string): Allowed language code. Refer Allowed languages
+            section.
+        content_type (string): Allowed values or html or text. If html is
+            specified all html tags and special characters will be stripped
+            before processing.
+        url (string): Text from this URL will be read and a translation
+            generated
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "lang": 'lang',
+        "content_type": 'contentType',
+        "url": 'url'
+    }
+
+    def __init__(self,
+                 lang=None,
+                 content_type=None,
+                 url=None):
+        """Constructor for the Input12 class"""
+
+        # Initialize members of the class
+        self.lang = lang
+        self.content_type = content_type
+        self.url = url
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        lang = dictionary.get('lang')
+        content_type = dictionary.get('contentType')
+        url = dictionary.get('url')
+
+        # Return an object of this model
+        return cls(lang,
+                   content_type,
+                   url)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/input_2.py b/firstlanguage_python/models/input_2.py
index b34a25b..cd891cf 100644
--- a/firstlanguage_python/models/input_2.py
+++ b/firstlanguage_python/models/input_2.py
@@ -6,6 +6,10 @@
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
 
 
 class Input2(object):
@@ -67,3 +71,16 @@ def from_dictionary(cls,
         return cls(context,
                    lang,
                    labels)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/input_3.py b/firstlanguage_python/models/input_3.py
index 8bf46be..c72be61 100644
--- a/firstlanguage_python/models/input_3.py
+++ b/firstlanguage_python/models/input_3.py
@@ -6,6 +6,10 @@
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
 
 
 class Input3(object):
@@ -74,3 +78,16 @@ def from_dictionary(cls,
                    lang,
                    content_type,
                    labels)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/input_4.py b/firstlanguage_python/models/input_4.py
index 61749d1..0c03dc9 100644
--- a/firstlanguage_python/models/input_4.py
+++ b/firstlanguage_python/models/input_4.py
@@ -6,6 +6,10 @@
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
 
 
 class Input4(object):
@@ -60,3 +64,16 @@ def from_dictionary(cls,
         # Return an object of this model
         return cls(text,
                    lang)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/input_5.py b/firstlanguage_python/models/input_5.py
new file mode 100644
index 0000000..8c08776
--- /dev/null
+++ b/firstlanguage_python/models/input_5.py
@@ -0,0 +1,88 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguageapi
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class Input5(object):
+
+    """Implementation of the 'Input5' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        question (string): Question to be answered from the context given.
+            Only One question can be asked at a time. Special characters will
+            not be stripped.
+        lang (string): Allowed language code. Refer Allowed languages
+            section.
+        context (string): Sentence or a paragraph. Special characters will not
+            be stripped.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "question": 'question',
+        "lang": 'lang',
+        "context": 'context'
+    }
+
+    def __init__(self,
+                 question=None,
+                 lang=None,
+                 context=None):
+        """Constructor for the Input5 class"""
+
+        # Initialize members of the class
+        self.question = question
+        self.lang = lang
+        self.context = context
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        question = dictionary.get('question')
+        lang = dictionary.get('lang')
+        context = dictionary.get('context')
+
+        # Return an object of this model
+        return cls(question,
+                   lang,
+                   context)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/input_6.py b/firstlanguage_python/models/input_6.py
new file mode 100644
index 0000000..a8f5977
--- /dev/null
+++ b/firstlanguage_python/models/input_6.py
@@ -0,0 +1,95 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguageapi
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class Input6(object):
+
+    """Implementation of the 'Input6' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        question (string): Question to be answered from the context given.
+            Only One question can be asked at a time. Special characters will
+            not be stripped.
+        lang (string): Allowed language code. Refer Allowed languages
+            section.
+        content_type (string): Allowed values or html or text. If html is
+            specified all html tags and special characters will be stripped
+            before processing.
+        url (string): URL where the context for the question is stored.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "question": 'question',
+        "lang": 'lang',
+        "content_type": 'contentType',
+        "url": 'url'
+    }
+
+    def __init__(self,
+                 question=None,
+                 lang=None,
+                 content_type=None,
+                 url=None):
+        """Constructor for the Input6 class"""
+
+        # Initialize members of the class
+        self.question = question
+        self.lang = lang
+        self.content_type = content_type
+        self.url = url
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        question = dictionary.get('question')
+        lang = dictionary.get('lang')
+        content_type = dictionary.get('contentType')
+        url = dictionary.get('url')
+
+        # Return an object of this model
+        return cls(question,
+                   lang,
+                   content_type,
+                   url)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/input_7.py b/firstlanguage_python/models/input_7.py
new file mode 100644
index 0000000..9c9193d
--- /dev/null
+++ b/firstlanguage_python/models/input_7.py
@@ -0,0 +1,80 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguageapi
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class Input7(object):
+
+    """Implementation of the 'Input7' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        text (string): Named Entities will be marked from this text. Special
+            characters will not be stripped.
+        lang (string): Allowed language code. Refer Allowed languages
+            section.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "text": 'text',
+        "lang": 'lang'
+    }
+
+    def __init__(self,
+                 text=None,
+                 lang=None):
+        """Constructor for the Input7 class"""
+
+        # Initialize members of the class
+        self.text = text
+        self.lang = lang
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        text = dictionary.get('text')
+        lang = dictionary.get('lang')
+
+        # Return an object of this model
+        return cls(text,
+                   lang)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/input_8.py b/firstlanguage_python/models/input_8.py
new file mode 100644
index 0000000..c8f442a
--- /dev/null
+++ b/firstlanguage_python/models/input_8.py
@@ -0,0 +1,87 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguageapi
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class Input8(object):
+
+    """Implementation of the 'Input8' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        lang (string): Allowed language code. Refer Allowed languages
+            section.
+        content_type (string): Allowed values or html or text. If html is
+            specified all html tags and special characters will be stripped
+            before processing.
+        url (string): URL where the text for the NER task is stored.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "lang": 'lang',
+        "content_type": 'contentType',
+        "url": 'url'
+    }
+
+    def __init__(self,
+                 lang=None,
+                 content_type=None,
+                 url=None):
+        """Constructor for the Input8 class"""
+
+        # Initialize members of the class
+        self.lang = lang
+        self.content_type = content_type
+        self.url = url
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        lang = dictionary.get('lang')
+        content_type = dictionary.get('contentType')
+        url = dictionary.get('url')
+
+        # Return an object of this model
+        return cls(lang,
+                   content_type,
+                   url)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/input_9.py b/firstlanguage_python/models/input_9.py
new file mode 100644
index 0000000..3f71686
--- /dev/null
+++ b/firstlanguage_python/models/input_9.py
@@ -0,0 +1,79 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguageapi
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class Input9(object):
+
+    """Implementation of the 'Input9' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        text (string): Text for which summary should be generated
+        lang (string): Allowed language code. Refer Allowed languages
+            section.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "text": 'text',
+        "lang": 'lang'
+    }
+
+    def __init__(self,
+                 text=None,
+                 lang=None):
+        """Constructor for the Input9 class"""
+
+        # Initialize members of the class
+        self.text = text
+        self.lang = lang
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        text = dictionary.get('text')
+        lang = dictionary.get('lang')
+
+        # Return an object of this model
+        return cls(text,
+                   lang)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/orignal_string.py b/firstlanguage_python/models/orignal_string.py
index eab0bf8..f38d874 100644
--- a/firstlanguage_python/models/orignal_string.py
+++ b/firstlanguage_python/models/orignal_string.py
@@ -6,6 +6,10 @@
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
 
 
 class OrignalString(object):
@@ -53,3 +57,16 @@ def from_dictionary(cls,
 
         # Return an object of this model
         return cls(morph_attr)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/responseclassify.py b/firstlanguage_python/models/responseclassify.py
index db4b0f4..d7d6d6c 100644
--- a/firstlanguage_python/models/responseclassify.py
+++ b/firstlanguage_python/models/responseclassify.py
@@ -6,6 +6,10 @@
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
 
 
 class Responseclassify(object):
@@ -59,3 +63,16 @@ def from_dictionary(cls,
         # Return an object of this model
         return cls(labels,
                    scores)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/responselemma.py b/firstlanguage_python/models/responselemma.py
index 4a7eb05..801edf6 100644
--- a/firstlanguage_python/models/responselemma.py
+++ b/firstlanguage_python/models/responselemma.py
@@ -6,6 +6,10 @@
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
 
 
 class Responselemma(object):
@@ -59,3 +63,16 @@ def from_dictionary(cls,
         # Return an object of this model
         return cls(orginal_text,
                    lemmatized)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/responsemorph.py b/firstlanguage_python/models/responsemorph.py
index 91f87de..ff8bd7e 100644
--- a/firstlanguage_python/models/responsemorph.py
+++ b/firstlanguage_python/models/responsemorph.py
@@ -7,6 +7,10 @@
  https://www.apimatic.io ).
 """
 from firstlanguage_python.models.orignal_string import OrignalString
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
 
 
 class Responsemorph(object):
@@ -54,3 +58,16 @@ def from_dictionary(cls,
 
         # Return an object of this model
         return cls(orignal_string)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/responsepo.py b/firstlanguage_python/models/responsepo.py
index f205885..affd65d 100644
--- a/firstlanguage_python/models/responsepo.py
+++ b/firstlanguage_python/models/responsepo.py
@@ -6,6 +6,10 @@
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
 
 
 class Responsepo(object):
@@ -59,3 +63,16 @@ def from_dictionary(cls,
         # Return an object of this model
         return cls(orginal_text,
                    postag)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/responsestem.py b/firstlanguage_python/models/responsestem.py
index 3778c9f..d76bcfd 100644
--- a/firstlanguage_python/models/responsestem.py
+++ b/firstlanguage_python/models/responsestem.py
@@ -6,6 +6,10 @@
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
 
 
 class Responsestem(object):
@@ -59,3 +63,16 @@ def from_dictionary(cls,
         # Return an object of this model
         return cls(orginal_text,
                    stem)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/text_input.py b/firstlanguage_python/models/text_input.py
index 8a7629c..572f8a6 100644
--- a/firstlanguage_python/models/text_input.py
+++ b/firstlanguage_python/models/text_input.py
@@ -7,6 +7,10 @@
  https://www.apimatic.io ).
 """
 from firstlanguage_python.models.input import Input
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
 
 
 class TextInput(object):
@@ -54,3 +58,16 @@ def from_dictionary(cls,
 
         # Return an object of this model
         return cls(input)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/text_input_classify.py b/firstlanguage_python/models/text_input_classify.py
index ef4bc44..6e70f3b 100644
--- a/firstlanguage_python/models/text_input_classify.py
+++ b/firstlanguage_python/models/text_input_classify.py
@@ -7,6 +7,10 @@
  https://www.apimatic.io ).
 """
 from firstlanguage_python.models.input_2 import Input2
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
 
 
 class TextInputClassify(object):
@@ -54,3 +58,16 @@ def from_dictionary(cls,
 
         # Return an object of this model
         return cls(input)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/text_input_tamil.py b/firstlanguage_python/models/text_input_tamil.py
index 1b29978..892a1af 100644
--- a/firstlanguage_python/models/text_input_tamil.py
+++ b/firstlanguage_python/models/text_input_tamil.py
@@ -7,6 +7,10 @@
  https://www.apimatic.io ).
 """
 from firstlanguage_python.models.input_4 import Input4
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
 
 
 class TextInputTamil(object):
@@ -54,3 +58,16 @@ def from_dictionary(cls,
 
         # Return an object of this model
         return cls(input)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/url_input.py b/firstlanguage_python/models/url_input.py
index de8e3d0..67c4bc8 100644
--- a/firstlanguage_python/models/url_input.py
+++ b/firstlanguage_python/models/url_input.py
@@ -7,6 +7,10 @@
  https://www.apimatic.io ).
 """
 from firstlanguage_python.models.input_1 import Input1
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
 
 
 class URLInput(object):
@@ -55,3 +59,16 @@ def from_dictionary(cls,
 
         # Return an object of this model
         return cls(input)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/url_input_classify.py b/firstlanguage_python/models/url_input_classify.py
index 93e3dcc..1c87694 100644
--- a/firstlanguage_python/models/url_input_classify.py
+++ b/firstlanguage_python/models/url_input_classify.py
@@ -7,6 +7,10 @@
  https://www.apimatic.io ).
 """
 from firstlanguage_python.models.input_3 import Input3
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
 
 
 class URLInputClassify(object):
@@ -54,3 +58,16 @@ def from_dictionary(cls,
 
         # Return an object of this model
         return cls(input)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/schemas/api_ner_request.json b/firstlanguage_python/schemas/api_ner_request.json
new file mode 100644
index 0000000..a948431
--- /dev/null
+++ b/firstlanguage_python/schemas/api_ner_request.json
@@ -0,0 +1,13 @@
+{
+  "id": "Api Ner Request",
+  "title": "Api Ner Request",
+  "type": "object",
+  "properties": {
+    "input": {
+      "$ref": "Input7"
+    }
+  },
+  "required": [
+    "input"
+  ]
+}
diff --git a/firstlanguage_python/schemas/api_ner_request_1.json b/firstlanguage_python/schemas/api_ner_request_1.json
new file mode 100644
index 0000000..89a203f
--- /dev/null
+++ b/firstlanguage_python/schemas/api_ner_request_1.json
@@ -0,0 +1,13 @@
+{
+  "id": "Api Ner Request1",
+  "title": "Api Ner Request1",
+  "type": "object",
+  "properties": {
+    "input": {
+      "$ref": "Input8"
+    }
+  },
+  "required": [
+    "input"
+  ]
+}
diff --git a/firstlanguage_python/schemas/api_ner_response.json b/firstlanguage_python/schemas/api_ner_response.json
new file mode 100644
index 0000000..5125a64
--- /dev/null
+++ b/firstlanguage_python/schemas/api_ner_response.json
@@ -0,0 +1,29 @@
+{
+  "id": "Api Ner Response",
+  "title": "Api Ner Response",
+  "type": "object",
+  "properties": {
+    "entity_group": {
+      "description": "Entity group inferred.",
+      "type": "string"
+    },
+    "word": {
+      "description": "Corresponding word",
+      "type": "string"
+    },
+    "start": {
+      "description": "Start position of the entity in the given input.",
+      "type": "string"
+    },
+    "end": {
+      "description": "Start position of the entity in the given input.",
+      "type": "string"
+    }
+  },
+  "required": [
+    "entity_group",
+    "word",
+    "start",
+    "end"
+  ]
+}
diff --git a/firstlanguage_python/schemas/api_qa_request.json b/firstlanguage_python/schemas/api_qa_request.json
new file mode 100644
index 0000000..f9a9c4d
--- /dev/null
+++ b/firstlanguage_python/schemas/api_qa_request.json
@@ -0,0 +1,13 @@
+{
+  "id": "Api Qa Request",
+  "title": "Api Qa Request",
+  "type": "object",
+  "properties": {
+    "input": {
+      "$ref": "Input5"
+    }
+  },
+  "required": [
+    "input"
+  ]
+}
diff --git a/firstlanguage_python/schemas/api_qa_request_1.json b/firstlanguage_python/schemas/api_qa_request_1.json
new file mode 100644
index 0000000..bffc4c0
--- /dev/null
+++ b/firstlanguage_python/schemas/api_qa_request_1.json
@@ -0,0 +1,13 @@
+{
+  "id": "Api Qa Request1",
+  "title": "Api Qa Request1",
+  "type": "object",
+  "properties": {
+    "input": {
+      "$ref": "Input6"
+    }
+  },
+  "required": [
+    "input"
+  ]
+}
diff --git a/firstlanguage_python/schemas/api_qa_response.json b/firstlanguage_python/schemas/api_qa_response.json
new file mode 100644
index 0000000..02a44f0
--- /dev/null
+++ b/firstlanguage_python/schemas/api_qa_response.json
@@ -0,0 +1,30 @@
+{
+  "id": "Api Qa Response",
+  "title": "Api Qa Response",
+  "type": "object",
+  "properties": {
+    "score": {
+      "description": "What is the confident score of the answer",
+      "type": "number"
+    },
+    "start": {
+      "description": "Start position of the answer in the context",
+      "type": "number"
+    },
+    "end": {
+      "description": "End position of the answer in the context",
+      "type": "number"
+    },
+    "answer": {
+      "description": "Answer to the question.",
+      "type": "string",
+      "minLength": 1
+    }
+  },
+  "required": [
+    "score",
+    "start",
+    "end",
+    "answer"
+  ]
+}
diff --git a/firstlanguage_python/schemas/api_summary_request.json b/firstlanguage_python/schemas/api_summary_request.json
new file mode 100644
index 0000000..242ea7b
--- /dev/null
+++ b/firstlanguage_python/schemas/api_summary_request.json
@@ -0,0 +1,13 @@
+{
+  "id": "Api Summary Request",
+  "title": "Api Summary Request",
+  "type": "object",
+  "properties": {
+    "input": {
+      "$ref": "Input9"
+    }
+  },
+  "required": [
+    "input"
+  ]
+}
diff --git a/firstlanguage_python/schemas/api_summary_request_1.json b/firstlanguage_python/schemas/api_summary_request_1.json
new file mode 100644
index 0000000..646350c
--- /dev/null
+++ b/firstlanguage_python/schemas/api_summary_request_1.json
@@ -0,0 +1,13 @@
+{
+  "id": "Api Summary Request1",
+  "title": "Api Summary Request1",
+  "type": "object",
+  "properties": {
+    "input": {
+      "$ref": "Input10"
+    }
+  },
+  "required": [
+    "input"
+  ]
+}
diff --git a/firstlanguage_python/schemas/api_summary_response.json b/firstlanguage_python/schemas/api_summary_response.json
new file mode 100644
index 0000000..b2078de
--- /dev/null
+++ b/firstlanguage_python/schemas/api_summary_response.json
@@ -0,0 +1,10 @@
+{
+  "id": "Api Summary Response",
+  "title": "Api Summary Response",
+  "type": "object",
+  "properties": {
+    "summary": {
+      "type": "string"
+    }
+  }
+}
diff --git a/firstlanguage_python/schemas/api_translate_request.json b/firstlanguage_python/schemas/api_translate_request.json
new file mode 100644
index 0000000..86efc41
--- /dev/null
+++ b/firstlanguage_python/schemas/api_translate_request.json
@@ -0,0 +1,13 @@
+{
+  "id": "Api Translate Request",
+  "title": "Api Translate Request",
+  "type": "object",
+  "properties": {
+    "input": {
+      "$ref": "Input11"
+    }
+  },
+  "required": [
+    "input"
+  ]
+}
diff --git a/firstlanguage_python/schemas/api_translate_request_1.json b/firstlanguage_python/schemas/api_translate_request_1.json
new file mode 100644
index 0000000..0c8568c
--- /dev/null
+++ b/firstlanguage_python/schemas/api_translate_request_1.json
@@ -0,0 +1,13 @@
+{
+  "id": "Api Translate Request1",
+  "title": "Api Translate Request1",
+  "type": "object",
+  "properties": {
+    "input": {
+      "$ref": "Input12"
+    }
+  },
+  "required": [
+    "input"
+  ]
+}
diff --git a/firstlanguage_python/schemas/api_translate_response.json b/firstlanguage_python/schemas/api_translate_response.json
new file mode 100644
index 0000000..6118231
--- /dev/null
+++ b/firstlanguage_python/schemas/api_translate_response.json
@@ -0,0 +1,10 @@
+{
+  "id": "Api Translate Response",
+  "title": "Api Translate Response",
+  "type": "object",
+  "properties": {
+    "generated_text": {
+      "type": "string"
+    }
+  }
+}
diff --git a/firstlanguage_python/schemas/errors_1.json b/firstlanguage_python/schemas/errors_1.json
new file mode 100644
index 0000000..95124ab
--- /dev/null
+++ b/firstlanguage_python/schemas/errors_1.json
@@ -0,0 +1,16 @@
+{
+  "id": "Errors1",
+  "title": "Errors1",
+  "type": "object",
+  "properties": {
+    "msg": {
+      "type": "string"
+    },
+    "param": {
+      "type": "string"
+    },
+    "location": {
+      "type": "string"
+    }
+  }
+}
diff --git a/firstlanguage_python/schemas/input.json b/firstlanguage_python/schemas/input.json
new file mode 100644
index 0000000..0e44e26
--- /dev/null
+++ b/firstlanguage_python/schemas/input.json
@@ -0,0 +1,22 @@
+{
+  "id": "Input",
+  "title": "Input",
+  "description": "Direct Text Input",
+  "type": "object",
+  "properties": {
+    "text": {
+      "description": "Word or sentence or a paragraph. Special characters will not be stripped.",
+      "example": "Let us begin the API development.",
+      "type": "string"
+    },
+    "lang": {
+      "description": "Allowed language code. Refer Allowed languages section.",
+      "example": "en",
+      "type": "string"
+    }
+  },
+  "required": [
+    "text",
+    "lang"
+  ]
+}
diff --git a/firstlanguage_python/schemas/input_1.json b/firstlanguage_python/schemas/input_1.json
new file mode 100644
index 0000000..b80a4f8
--- /dev/null
+++ b/firstlanguage_python/schemas/input_1.json
@@ -0,0 +1,28 @@
+{
+  "id": "Input1",
+  "title": "Input1",
+  "description": "Text for processing will be read from the given URL. Only HTML pages or text pages will be processed at this time.",
+  "type": "object",
+  "properties": {
+    "url": {
+      "description": "URL where the content is hosted.",
+      "example": "http://news.bbc.co.uk/2/hi/health/2284783.stm",
+      "type": "string"
+    },
+    "lang": {
+      "description": "Allowed language code. Refer Allowed languages section.",
+      "example": "en",
+      "type": "string"
+    },
+    "contentType": {
+      "description": "Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing.",
+      "example": "html",
+      "type": "string"
+    }
+  },
+  "required": [
+    "url",
+    "lang",
+    "contentType"
+  ]
+}
diff --git a/firstlanguage_python/schemas/input_10.json b/firstlanguage_python/schemas/input_10.json
new file mode 100644
index 0000000..7770493
--- /dev/null
+++ b/firstlanguage_python/schemas/input_10.json
@@ -0,0 +1,24 @@
+{
+  "id": "Input10",
+  "title": "Input10",
+  "type": "object",
+  "properties": {
+    "lang": {
+      "description": "Allowed language code. Refer Allowed languages section.",
+      "type": "string"
+    },
+    "contentType": {
+      "description": "Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing.",
+      "type": "string"
+    },
+    "url": {
+      "description": "Text from this URL will be read and a summary generated",
+      "type": "string"
+    }
+  },
+  "required": [
+    "lang",
+    "contentType",
+    "url"
+  ]
+}
diff --git a/firstlanguage_python/schemas/input_11.json b/firstlanguage_python/schemas/input_11.json
new file mode 100644
index 0000000..bf46c17
--- /dev/null
+++ b/firstlanguage_python/schemas/input_11.json
@@ -0,0 +1,19 @@
+{
+  "id": "Input11",
+  "title": "Input11",
+  "type": "object",
+  "properties": {
+    "text": {
+      "description": "Text for which translation should be generated",
+      "type": "string"
+    },
+    "lang": {
+      "description": "Allowed language code. Refer Allowed languages section.",
+      "type": "string"
+    }
+  },
+  "required": [
+    "text",
+    "lang"
+  ]
+}
diff --git a/firstlanguage_python/schemas/input_12.json b/firstlanguage_python/schemas/input_12.json
new file mode 100644
index 0000000..5ebe442
--- /dev/null
+++ b/firstlanguage_python/schemas/input_12.json
@@ -0,0 +1,24 @@
+{
+  "id": "Input12",
+  "title": "Input12",
+  "type": "object",
+  "properties": {
+    "lang": {
+      "description": "Allowed language code. Refer Allowed languages section.",
+      "type": "string"
+    },
+    "contentType": {
+      "description": "Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing.",
+      "type": "string"
+    },
+    "url": {
+      "description": "Text from this URL will be read and a translation generated",
+      "type": "string"
+    }
+  },
+  "required": [
+    "lang",
+    "contentType",
+    "url"
+  ]
+}
diff --git a/firstlanguage_python/schemas/input_2.json b/firstlanguage_python/schemas/input_2.json
new file mode 100644
index 0000000..cac05ea
--- /dev/null
+++ b/firstlanguage_python/schemas/input_2.json
@@ -0,0 +1,33 @@
+{
+  "id": "Input2",
+  "title": "Input2",
+  "type": "object",
+  "properties": {
+    "context": {
+      "description": "Word or sentence or a paragraph. Special characters will not be stripped.",
+      "example": "Let us begin the API development.",
+      "type": "string"
+    },
+    "lang": {
+      "description": "Allowed language code. Refer Allowed languages section.",
+      "example": "en",
+      "type": "string"
+    },
+    "labels": {
+      "description": "Labels to classify",
+      "example": [
+        "good",
+        "bad"
+      ],
+      "type": "array",
+      "items": {
+        "type": "object"
+      }
+    }
+  },
+  "required": [
+    "context",
+    "lang",
+    "labels"
+  ]
+}
diff --git a/firstlanguage_python/schemas/input_3.json b/firstlanguage_python/schemas/input_3.json
new file mode 100644
index 0000000..647b035
--- /dev/null
+++ b/firstlanguage_python/schemas/input_3.json
@@ -0,0 +1,39 @@
+{
+  "id": "Input3",
+  "title": "Input3",
+  "type": "object",
+  "properties": {
+    "url": {
+      "description": "URL where the content is hosted.",
+      "example": "http://news.bbc.co.uk/2/hi/health/2284783.stm",
+      "type": "string"
+    },
+    "lang": {
+      "description": "Allowed language code. Refer Allowed languages section.",
+      "example": "en",
+      "type": "string"
+    },
+    "contentType": {
+      "description": "Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing.",
+      "example": "html",
+      "type": "string"
+    },
+    "labels": {
+      "description": "Labels to classify",
+      "example": [
+        "good",
+        "bad"
+      ],
+      "type": "array",
+      "items": {
+        "type": "object"
+      }
+    }
+  },
+  "required": [
+    "url",
+    "lang",
+    "contentType",
+    "labels"
+  ]
+}
diff --git a/firstlanguage_python/schemas/input_4.json b/firstlanguage_python/schemas/input_4.json
new file mode 100644
index 0000000..c720f57
--- /dev/null
+++ b/firstlanguage_python/schemas/input_4.json
@@ -0,0 +1,21 @@
+{
+  "id": "Input4",
+  "title": "Input4",
+  "type": "object",
+  "properties": {
+    "text": {
+      "description": "Word or sentence or a paragraph. Special characters will not be stripped.",
+      "example": "அவள் வேகமாக ஓடினாள்",
+      "type": "string"
+    },
+    "lang": {
+      "description": "Allowed ISO language code. Refer languages section.",
+      "example": "ta",
+      "type": "string"
+    }
+  },
+  "required": [
+    "text",
+    "lang"
+  ]
+}
diff --git a/firstlanguage_python/schemas/input_5.json b/firstlanguage_python/schemas/input_5.json
new file mode 100644
index 0000000..6967df1
--- /dev/null
+++ b/firstlanguage_python/schemas/input_5.json
@@ -0,0 +1,24 @@
+{
+  "id": "Input5",
+  "title": "Input5",
+  "type": "object",
+  "properties": {
+    "question": {
+      "description": "Question to be answered from the context given. Only One question can be asked at a time. Special characters will not be stripped.",
+      "type": "string"
+    },
+    "lang": {
+      "description": "Allowed language code. Refer Allowed languages section.",
+      "type": "string"
+    },
+    "context": {
+      "description": "Sentence or a paragraph. Special characters will not be stripped.",
+      "type": "string"
+    }
+  },
+  "required": [
+    "question",
+    "lang",
+    "context"
+  ]
+}
diff --git a/firstlanguage_python/schemas/input_6.json b/firstlanguage_python/schemas/input_6.json
new file mode 100644
index 0000000..d6f115d
--- /dev/null
+++ b/firstlanguage_python/schemas/input_6.json
@@ -0,0 +1,29 @@
+{
+  "id": "Input6",
+  "title": "Input6",
+  "type": "object",
+  "properties": {
+    "question": {
+      "description": "Question to be answered from the context given. Only One question can be asked at a time. Special characters will not be stripped.",
+      "type": "string"
+    },
+    "lang": {
+      "description": "Allowed language code. Refer Allowed languages section.",
+      "type": "string"
+    },
+    "contentType": {
+      "description": "Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing.",
+      "type": "string"
+    },
+    "url": {
+      "description": "URL where the context for the question is stored.",
+      "type": "string"
+    }
+  },
+  "required": [
+    "question",
+    "lang",
+    "contentType",
+    "url"
+  ]
+}
diff --git a/firstlanguage_python/schemas/input_7.json b/firstlanguage_python/schemas/input_7.json
new file mode 100644
index 0000000..e4ca95e
--- /dev/null
+++ b/firstlanguage_python/schemas/input_7.json
@@ -0,0 +1,19 @@
+{
+  "id": "Input7",
+  "title": "Input7",
+  "type": "object",
+  "properties": {
+    "text": {
+      "description": "Named Entities will be marked from this text. Special characters will not be stripped.",
+      "type": "string"
+    },
+    "lang": {
+      "description": "Allowed language code. Refer Allowed languages section.",
+      "type": "string"
+    }
+  },
+  "required": [
+    "text",
+    "lang"
+  ]
+}
diff --git a/firstlanguage_python/schemas/input_8.json b/firstlanguage_python/schemas/input_8.json
new file mode 100644
index 0000000..852085c
--- /dev/null
+++ b/firstlanguage_python/schemas/input_8.json
@@ -0,0 +1,24 @@
+{
+  "id": "Input8",
+  "title": "Input8",
+  "type": "object",
+  "properties": {
+    "lang": {
+      "description": "Allowed language code. Refer Allowed languages section.",
+      "type": "string"
+    },
+    "contentType": {
+      "description": "Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing.",
+      "type": "string"
+    },
+    "url": {
+      "description": "URL where the text for the NER task is stored.",
+      "type": "string"
+    }
+  },
+  "required": [
+    "lang",
+    "contentType",
+    "url"
+  ]
+}
diff --git a/firstlanguage_python/schemas/input_9.json b/firstlanguage_python/schemas/input_9.json
new file mode 100644
index 0000000..96035df
--- /dev/null
+++ b/firstlanguage_python/schemas/input_9.json
@@ -0,0 +1,19 @@
+{
+  "id": "Input9",
+  "title": "Input9",
+  "type": "object",
+  "properties": {
+    "text": {
+      "description": "Text for which summary should be generated",
+      "type": "string"
+    },
+    "lang": {
+      "description": "Allowed language code. Refer Allowed languages section.",
+      "type": "string"
+    }
+  },
+  "required": [
+    "text",
+    "lang"
+  ]
+}
diff --git a/firstlanguage_python/schemas/orignal_string.json b/firstlanguage_python/schemas/orignal_string.json
new file mode 100644
index 0000000..bd281be
--- /dev/null
+++ b/firstlanguage_python/schemas/orignal_string.json
@@ -0,0 +1,14 @@
+{
+  "id": "OrignalString",
+  "title": "OrignalString",
+  "type": "object",
+  "properties": {
+    "morph_attr": {
+      "description": "",
+      "type": "array",
+      "items": {
+        "type": "string"
+      }
+    }
+  }
+}
diff --git a/firstlanguage_python/schemas/responseclassify.json b/firstlanguage_python/schemas/responseclassify.json
new file mode 100644
index 0000000..49e19b5
--- /dev/null
+++ b/firstlanguage_python/schemas/responseclassify.json
@@ -0,0 +1,21 @@
+{
+  "id": "responseclassify",
+  "title": "responseclassify",
+  "type": "object",
+  "properties": {
+    "labels": {
+      "description": "",
+      "type": "array",
+      "items": {
+        "type": "string"
+      }
+    },
+    "scores": {
+      "description": "",
+      "type": "array",
+      "items": {
+        "type": "number"
+      }
+    }
+  }
+}
diff --git a/firstlanguage_python/schemas/responselemma.json b/firstlanguage_python/schemas/responselemma.json
new file mode 100644
index 0000000..ff4663f
--- /dev/null
+++ b/firstlanguage_python/schemas/responselemma.json
@@ -0,0 +1,13 @@
+{
+  "id": "responselemma",
+  "title": "responselemma",
+  "type": "object",
+  "properties": {
+    "orginalText": {
+      "type": "string"
+    },
+    "lemmatized": {
+      "type": "string"
+    }
+  }
+}
diff --git a/firstlanguage_python/schemas/responsemorph.json b/firstlanguage_python/schemas/responsemorph.json
new file mode 100644
index 0000000..c63a53c
--- /dev/null
+++ b/firstlanguage_python/schemas/responsemorph.json
@@ -0,0 +1,10 @@
+{
+  "id": "responsemorph",
+  "title": "responsemorph",
+  "type": "object",
+  "properties": {
+    "orignalString": {
+      "$ref": "OrignalString.json"
+    }
+  }
+}
diff --git a/firstlanguage_python/schemas/responsepo.json b/firstlanguage_python/schemas/responsepo.json
new file mode 100644
index 0000000..931edac
--- /dev/null
+++ b/firstlanguage_python/schemas/responsepo.json
@@ -0,0 +1,13 @@
+{
+  "id": "responsepo",
+  "title": "responsepo",
+  "type": "object",
+  "properties": {
+    "orginalText": {
+      "type": "string"
+    },
+    "postag": {
+      "type": "string"
+    }
+  }
+}
diff --git a/firstlanguage_python/schemas/responsestem.json b/firstlanguage_python/schemas/responsestem.json
new file mode 100644
index 0000000..454bd62
--- /dev/null
+++ b/firstlanguage_python/schemas/responsestem.json
@@ -0,0 +1,13 @@
+{
+  "id": "responsestem",
+  "title": "responsestem",
+  "type": "object",
+  "properties": {
+    "orginalText": {
+      "type": "string"
+    },
+    "stem": {
+      "type": "string"
+    }
+  }
+}
diff --git a/firstlanguage_python/schemas/text_input.json b/firstlanguage_python/schemas/text_input.json
new file mode 100644
index 0000000..5adfee6
--- /dev/null
+++ b/firstlanguage_python/schemas/text_input.json
@@ -0,0 +1,13 @@
+{
+  "id": "TextInput",
+  "title": "TextInput",
+  "type": "object",
+  "properties": {
+    "input": {
+      "$ref": "Input.json"
+    }
+  },
+  "required": [
+    "input"
+  ]
+}
diff --git a/firstlanguage_python/schemas/text_input_classify.json b/firstlanguage_python/schemas/text_input_classify.json
new file mode 100644
index 0000000..7e3da18
--- /dev/null
+++ b/firstlanguage_python/schemas/text_input_classify.json
@@ -0,0 +1,13 @@
+{
+  "id": "TextInputClassify",
+  "title": "TextInputClassify",
+  "type": "object",
+  "properties": {
+    "input": {
+      "$ref": "Input2"
+    }
+  },
+  "required": [
+    "input"
+  ]
+}
diff --git a/firstlanguage_python/schemas/text_input_tamil.json b/firstlanguage_python/schemas/text_input_tamil.json
new file mode 100644
index 0000000..2a781c1
--- /dev/null
+++ b/firstlanguage_python/schemas/text_input_tamil.json
@@ -0,0 +1,13 @@
+{
+  "id": "TextInputTamil",
+  "title": "TextInputTamil",
+  "type": "object",
+  "properties": {
+    "input": {
+      "$ref": "Input4"
+    }
+  },
+  "required": [
+    "input"
+  ]
+}
diff --git a/firstlanguage_python/schemas/url_input.json b/firstlanguage_python/schemas/url_input.json
new file mode 100644
index 0000000..f5ce13a
--- /dev/null
+++ b/firstlanguage_python/schemas/url_input.json
@@ -0,0 +1,13 @@
+{
+  "id": "URLInput",
+  "title": "URLInput",
+  "type": "object",
+  "properties": {
+    "input": {
+      "$ref": "Input1"
+    }
+  },
+  "required": [
+    "input"
+  ]
+}
diff --git a/firstlanguage_python/schemas/url_input_classify.json b/firstlanguage_python/schemas/url_input_classify.json
new file mode 100644
index 0000000..b91dab1
--- /dev/null
+++ b/firstlanguage_python/schemas/url_input_classify.json
@@ -0,0 +1,13 @@
+{
+  "id": "URLInputClassify",
+  "title": "URLInputClassify",
+  "type": "object",
+  "properties": {
+    "input": {
+      "$ref": "Input3"
+    }
+  },
+  "required": [
+    "input"
+  ]
+}
diff --git a/firstlanguage_python/utilities/__pycache__/schema_validator_wrapper.cpython-39.pyc b/firstlanguage_python/utilities/__pycache__/schema_validator_wrapper.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..92985b60fc739e9921c357a9cb93a44cc59fae61
GIT binary patch
diff --git a/firstlanguage_python/utilities/schema_validator_wrapper.py b/firstlanguage_python/utilities/schema_validator_wrapper.py
new file mode 100644
index 0000000..64cb3e3
--- /dev/null
+++ b/firstlanguage_python/utilities/schema_validator_wrapper.py
@@ -0,0 +1,21 @@
+
+import json
+import os
+from jsonschema import RefResolver, Draft4Validator
+
+
+class SchemaValidatorWrapper(object):
+    cache = dict()
+
+    @staticmethod
+    def getValidator(fileName):
+        if fileName in SchemaValidatorWrapper.cache:
+            schema = SchemaValidatorWrapper.cache[fileName]
+        else:
+            schema = json.load(open(fileName))
+            SchemaValidatorWrapper.cache[fileName] = schema
+
+        schema_path = 'file:///{0}/'.format(
+            os.path.dirname(os.path.abspath(fileName)).replace("\\", "/"))
+        resolver = RefResolver(schema_path, schema)
+        return Draft4Validator(schema=schema, resolver=resolver)
diff --git a/requirements.txt b/requirements.txt
index 8ba3e21..42785d1 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -3,3 +3,4 @@ requests~=2.24
 cachecontrol~=0.12.6
 python-dateutil~=2.8.1
 enum34~=1.1, >=1.1.10
+jsonschema~=3.2.0

From ac2c57edcc132fed5f07e82a75ac89ca008efca6 Mon Sep 17 00:00:00 2001
From: Subalalitha <subalalitha@firstlanguage.in>
Date: Tue, 14 Dec 2021 14:45:25 +0530
Subject: [PATCH 26/34] Doc changes

---
 MANIFEST.in                                |   2 +-
 README.md                                  |  14 ++--
 dist/firstlanguage_python-1.0.1.tar.gz     | Bin 0 -> 33843 bytes
 doc/controllers/advanced-api.md            |  40 +++++------
 doc/controllers/basic-api.md               |  32 ++++-----
 doc/models/api-ner-request-1.md            |   2 +-
 doc/models/api-ner-request.md              |   2 +-
 doc/models/api-qa-request-1.md             |   2 +-
 doc/models/api-qa-request.md               |   2 +-
 doc/models/api-summary-request-1.md        |   2 +-
 doc/models/api-summary-request.md          |   2 +-
 doc/models/api-translate-request-1.md      |   2 +-
 doc/models/api-translate-request.md        |   2 +-
 doc/models/errors-exception.md             |   2 +-
 doc/models/responsemorph.md                |   2 +-
 doc/models/text-input-classify.md          |   2 +-
 doc/models/text-input-tamil.md             |   2 +-
 doc/models/text-input.md                   |   2 +-
 doc/models/url-input-classify.md           |   2 +-
 doc/models/url-input.md                    |   2 +-
 firstlanguage_python.egg-info/PKG-INFO     |  76 ++++++++++++++++++---
 firstlanguage_python.egg-info/SOURCES.txt  |  21 +++++-
 firstlanguage_python.egg-info/requires.txt |   1 +
 index.md                                   |  14 ++--
 setup.cfg                                  |   2 +-
 setup.py                                   |  13 ++--
 26 files changed, 160 insertions(+), 85 deletions(-)
 create mode 100644 dist/firstlanguage_python-1.0.1.tar.gz

diff --git a/MANIFEST.in b/MANIFEST.in
index 64aa22e..f58a951 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,2 +1,2 @@
 include LICENSE
-include README.md
+include README.html
diff --git a/README.md b/README.md
index 036265e..286ef15 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@ Collection of NLP APIs to help developers. We have grouped the APIs under Basic
 
 This API is documented in **OpenAPI v3.0 format**.
 In addition to standard
-OpenAPI syntax we use a few [vendor extensions](https://github.com/Redocly/redoc/blob/master/docs/redoc-vendor-extensions.md).
+OpenAPI syntax we use a few [vendor extensions](https://github.com/Redocly/redoc/blob/master/docs/redoc-vendor-extensions.html).
 
 ## Building
 
@@ -143,7 +143,7 @@ nosetests
 
 ## Initialize the API Client
 
-**_Note:_** Documentation for the client can be found [here.](/doc/client.md)
+**_Note:_** Documentation for the client can be found [here.](/doc/client.html)
 
 The following parameters are configurable for the API Client:
 
@@ -175,12 +175,12 @@ This API uses `Custom Header Signature`.
 
 ## List of APIs
 
-* [Basic APIs](/doc/controllers/basic-api.md)
-* [Advanced APIs](/doc/controllers/advanced-api.md)
+* [Basic APIs](/doc/controllers/basic-api.html)
+* [Advanced APIs](/doc/controllers/advanced-api.html)
 
 ## Classes Documentation
 
-* [Utility Classes](/doc/utility-classes.md)
-* [HttpResponse](/doc/http-response.md)
-* [HttpRequest](/doc/http-request.md)
+* [Utility Classes](/doc/utility-classes.html)
+* [HttpResponse](/doc/http-response.html)
+* [HttpRequest](/doc/http-request.html)
 
diff --git a/dist/firstlanguage_python-1.0.1.tar.gz b/dist/firstlanguage_python-1.0.1.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..7955d3a6f6e3ecd9eef8881170c3f21368c9e9c8
GIT binary patch
diff --git a/doc/controllers/advanced-api.md b/doc/controllers/advanced-api.md
index 000476f..11909da 100644
--- a/doc/controllers/advanced-api.md
+++ b/doc/controllers/advanced-api.md
@@ -12,11 +12,11 @@ advanced_api_controller = client.advanced_api
 
 ## Methods
 
-* [Get Classification](/fl-python/doc/controllers/advanced-api.md#get-classification)
-* [Get QA](/fl-python/doc/controllers/advanced-api.md#get-qa)
-* [Get NER](/fl-python/doc/controllers/advanced-api.md#get-ner)
-* [Get Summary](/fl-python/doc/controllers/advanced-api.md#get-summary)
-* [Get Translate](/fl-python/doc/controllers/advanced-api.md#get-translate)
+* [Get Classification](/firstlanguage_python/doc/controllers/advanced-api.html#get-classification)
+* [Get QA](/firstlanguage_python/doc/controllers/advanced-api.html#get-qa)
+* [Get NER](/firstlanguage_python/doc/controllers/advanced-api.html#get-ner)
+* [Get Summary](/firstlanguage_python/doc/controllers/advanced-api.html#get-summary)
+* [Get Translate](/firstlanguage_python/doc/controllers/advanced-api.html#get-translate)
 
 
 # Get Classification
@@ -58,7 +58,7 @@ def get_classification(self,
 
 ## Response Type
 
-[`Responseclassify`](/fl-python/doc/models/responseclassify.md)
+[`Responseclassify`](/firstlanguage_python/doc/models/responseclassify.html)
 
 ## Example Usage
 
@@ -87,8 +87,8 @@ result = advanced_api_controller.get_classification(body)
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Error output | [`ErrorsException`](/fl-python/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`ApiClassify426ErrorException`](/fl-python/doc/models/api-classify-426-error-exception.md) |
+| 400 | Error output | [`ErrorsException`](/firstlanguage_python/doc/models/errors-exception.html) |
+| 426 | Please use HTTPS protocol | [`ApiClassify426ErrorException`](/firstlanguage_python/doc/models/api-classify-426-error-exception.html) |
 | 429 | Too Many Requests | `APIException` |
 
 
@@ -113,7 +113,7 @@ def get_qa(self,
 
 ## Response Type
 
-[`ApiQaResponse`](/fl-python/doc/models/api-qa-response.md)
+[`ApiQaResponse`](/firstlanguage_python/doc/models/api-qa-response.html)
 
 ## Example Usage
 
@@ -137,8 +137,8 @@ result = advanced_api_controller.get_qa(body)
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Bad Request | [`ErrorsException`](/fl-python/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`M426ErrorException`](/fl-python/doc/models/m426-error-exception.md) |
+| 400 | Bad Request | [`ErrorsException`](/firstlanguage_python/doc/models/errors-exception.html) |
+| 426 | Please use HTTPS protocol | [`M426ErrorException`](/firstlanguage_python/doc/models/m426-error-exception.html) |
 | 429 | Too Many Requests | `APIException` |
 
 
@@ -179,7 +179,7 @@ def get_ner(self,
 
 ## Response Type
 
-[`List of ApiNerResponse`](/fl-python/doc/models/api-ner-response.md)
+[`List of ApiNerResponse`](/firstlanguage_python/doc/models/api-ner-response.html)
 
 ## Example Usage
 
@@ -211,8 +211,8 @@ result = advanced_api_controller.get_ner(body)
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Bad Request | [`ErrorsException`](/fl-python/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`M426ErrorException`](/fl-python/doc/models/m426-error-exception.md) |
+| 400 | Bad Request | [`ErrorsException`](/firstlanguage_python/doc/models/errors-exception.html) |
+| 426 | Please use HTTPS protocol | [`M426ErrorException`](/firstlanguage_python/doc/models/m426-error-exception.html) |
 | 429 | Too Many Requests | `APIException` |
 
 
@@ -280,7 +280,7 @@ def get_summary(self,
 
 ## Response Type
 
-[`ApiSummaryResponse`](/doc/models/api-summary-response.md)
+[`ApiSummaryResponse`](/doc/models/api-summary-response.html)
 
 ## Example Usage
 
@@ -302,8 +302,8 @@ result = advanced_ap_is_controller.get_summary(body)
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Bad Request | [`ErrorsException`](/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`M426ErrorException`](/doc/models/m426-error-exception.md) |
+| 400 | Bad Request | [`ErrorsException`](/doc/models/errors-exception.html) |
+| 426 | Please use HTTPS protocol | [`M426ErrorException`](/doc/models/m426-error-exception.html) |
 | 429 | Too Many Requests | `APIException` |
 
 
@@ -387,7 +387,7 @@ def get_translate(self,
 
 ## Response Type
 
-[`ApiTranslateResponse`](/doc/models/api-translate-response.md)
+[`ApiTranslateResponse`](/doc/models/api-translate-response.html)
 
 ## Example Usage
 
@@ -409,7 +409,7 @@ result = advanced_ap_is_controller.get_translate(body)
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Bad Request | [`ErrorsException`](/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`M426ErrorException`](/doc/models/m426-error-exception.md) |
+| 400 | Bad Request | [`ErrorsException`](/doc/models/errors-exception.html) |
+| 426 | Please use HTTPS protocol | [`M426ErrorException`](/doc/models/m426-error-exception.html) |
 | 429 | Too Many Requests | `APIException` |
 
diff --git a/doc/controllers/basic-api.md b/doc/controllers/basic-api.md
index adc7cf9..d0e2d43 100644
--- a/doc/controllers/basic-api.md
+++ b/doc/controllers/basic-api.md
@@ -12,10 +12,10 @@ basic_api_controller = client.basic_api
 
 ## Methods
 
-* [Get Stemmer](/fl-python/doc/controllers/basic-api.md#get-stemmer)
-* [Get Lemma](/fl-python/doc/controllers/basic-api.md#get-lemma)
-* [Get Morph](/fl-python/doc/controllers/basic-api.md#get-morph)
-* [Get Postag](/fl-python/doc/controllers/basic-api.md#get-postag)
+* [Get Stemmer](/firstlanguage_python/doc/controllers/basic-api.html#get-stemmer)
+* [Get Lemma](/firstlanguage_python/doc/controllers/basic-api.html#get-lemma)
+* [Get Morph](/firstlanguage_python/doc/controllers/basic-api.html#get-morph)
+* [Get Postag](/firstlanguage_python/doc/controllers/basic-api.html#get-postag)
 
 
 # Get Stemmer
@@ -70,7 +70,7 @@ def get_stemmer(self,
 
 ## Response Type
 
-[`List of Responsestem`](/fl-python/doc/models/responsestem.md)
+[`List of Responsestem`](/firstlanguage_python/doc/models/responsestem.html)
 
 ## Example Usage
 
@@ -103,8 +103,8 @@ result = basic_api_controller.get_stemmer(body)
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Error output | [`ErrorsException`](/fl-python/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`ApiStemmer426ErrorException`](/fl-python/doc/models/api-stemmer-426-error-exception.md) |
+| 400 | Error output | [`ErrorsException`](/firstlanguage_python/doc/models/errors-exception.html) |
+| 426 | Please use HTTPS protocol | [`ApiStemmer426ErrorException`](/firstlanguage_python/doc/models/api-stemmer-426-error-exception.html) |
 | 429 | Too Many Requests | `APIException` |
 
 
@@ -148,7 +148,7 @@ def get_lemma(self,
 
 ## Response Type
 
-[`List of Responselemma`](/fl-python/doc/models/responselemma.md)
+[`List of Responselemma`](/firstlanguage_python/doc/models/responselemma.html)
 
 ## Example Usage
 
@@ -185,8 +185,8 @@ result = basic_api_controller.get_lemma(body)
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Error output | [`ErrorsException`](/fl-python/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`ApiLemmatize426ErrorException`](/fl-python/doc/models/api-lemmatize-426-error-exception.md) |
+| 400 | Error output | [`ErrorsException`](/firstlanguage_python/doc/models/errors-exception.html) |
+| 426 | Please use HTTPS protocol | [`ApiLemmatize426ErrorException`](/firstlanguage_python/doc/models/api-lemmatize-426-error-exception.html) |
 | 429 | Too Many Requests | `APIException` |
 
 
@@ -230,7 +230,7 @@ def get_morph(self,
 
 ## Response Type
 
-[`Responsemorph`](/fl-python/doc/models/responsemorph.md)
+[`Responsemorph`](/firstlanguage_python/doc/models/responsemorph.html)
 
 ## Example Usage
 
@@ -412,8 +412,8 @@ result = basic_api_controller.get_morph(body)
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Error output | [`ErrorsException`](/fl-python/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`ApiMorph426ErrorException`](/fl-python/doc/models/api-morph-426-error-exception.md) |
+| 400 | Error output | [`ErrorsException`](/firstlanguage_python/doc/models/errors-exception.html) |
+| 426 | Please use HTTPS protocol | [`ApiMorph426ErrorException`](/firstlanguage_python/doc/models/api-morph-426-error-exception.html) |
 | 429 | Too Many Requests | `APIException` |
 
 
@@ -450,7 +450,7 @@ def get_postag(self,
 
 ## Response Type
 
-[`List of Responsepo`](/fl-python/doc/models/responsepo.md)
+[`List of Responsepo`](/firstlanguage_python/doc/models/responsepo.html)
 
 ## Example Usage
 
@@ -499,7 +499,7 @@ result = basic_api_controller.get_postag(body)
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Error output | [`ErrorsException`](/fl-python/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`ApiPostag426ErrorException`](/fl-python/doc/models/api-postag-426-error-exception.md) |
+| 400 | Error output | [`ErrorsException`](/firstlanguage_python/doc/models/errors-exception.html) |
+| 426 | Please use HTTPS protocol | [`ApiPostag426ErrorException`](/firstlanguage_python/doc/models/api-postag-426-error-exception.html) |
 | 429 | Too Many Requests | `APIException` |
 
diff --git a/doc/models/api-ner-request-1.md b/doc/models/api-ner-request-1.md
index 69de0f6..15024cc 100644
--- a/doc/models/api-ner-request-1.md
+++ b/doc/models/api-ner-request-1.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input8`](/doc/models/input-8.md) | Required | - |
+| `input` | [`Input8`](/doc/models/input-8.html) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/api-ner-request.md b/doc/models/api-ner-request.md
index 70c0fe4..de30f25 100644
--- a/doc/models/api-ner-request.md
+++ b/doc/models/api-ner-request.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input7`](/doc/models/input-7.md) | Required | - |
+| `input` | [`Input7`](/doc/models/input-7.html) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/api-qa-request-1.md b/doc/models/api-qa-request-1.md
index b5cf44f..3ccd12e 100644
--- a/doc/models/api-qa-request-1.md
+++ b/doc/models/api-qa-request-1.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input6`](/doc/models/input-6.md) | Required | - |
+| `input` | [`Input6`](/doc/models/input-6.html) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/api-qa-request.md b/doc/models/api-qa-request.md
index e013098..98e0b31 100644
--- a/doc/models/api-qa-request.md
+++ b/doc/models/api-qa-request.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input5`](/doc/models/input-5.md) | Required | - |
+| `input` | [`Input5`](/doc/models/input-5.html) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/api-summary-request-1.md b/doc/models/api-summary-request-1.md
index f3ed142..26cde83 100644
--- a/doc/models/api-summary-request-1.md
+++ b/doc/models/api-summary-request-1.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input10`](/doc/models/input-10.md) | Required | - |
+| `input` | [`Input10`](/doc/models/input-10.html) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/api-summary-request.md b/doc/models/api-summary-request.md
index 02b55bd..6bee164 100644
--- a/doc/models/api-summary-request.md
+++ b/doc/models/api-summary-request.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input9`](/doc/models/input-9.md) | Required | - |
+| `input` | [`Input9`](/doc/models/input-9.html) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/api-translate-request-1.md b/doc/models/api-translate-request-1.md
index 954441d..c7a37cc 100644
--- a/doc/models/api-translate-request-1.md
+++ b/doc/models/api-translate-request-1.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input12`](/doc/models/input-12.md) | Required | - |
+| `input` | [`Input12`](/doc/models/input-12.html) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/api-translate-request.md b/doc/models/api-translate-request.md
index 23cbc16..6ee6022 100644
--- a/doc/models/api-translate-request.md
+++ b/doc/models/api-translate-request.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input11`](/doc/models/input-11.md) | Required | - |
+| `input` | [`Input11`](/doc/models/input-11.html) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/errors-exception.md b/doc/models/errors-exception.md
index 0739360..b3c2e92 100644
--- a/doc/models/errors-exception.md
+++ b/doc/models/errors-exception.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `errors` | [`List of Errors1`](/fl-python/doc/models/errors-1.md) | Optional | - |
+| `errors` | [`List of Errors1`](/firstlanguage_python/doc/models/errors-1.html) | Optional | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/responsemorph.md b/doc/models/responsemorph.md
index dfca796..c660902 100644
--- a/doc/models/responsemorph.md
+++ b/doc/models/responsemorph.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `orignal_string` | [`OrignalString`](/fl-python/doc/models/orignal-string.md) | Optional | - |
+| `orignal_string` | [`OrignalString`](/firstlanguage_python/doc/models/orignal-string.html) | Optional | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/text-input-classify.md b/doc/models/text-input-classify.md
index 50ebf47..9eb9655 100644
--- a/doc/models/text-input-classify.md
+++ b/doc/models/text-input-classify.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input2`](/fl-python/doc/models/input-2.md) | Required | - |
+| `input` | [`Input2`](/firstlanguage_python/doc/models/input-2.html) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/text-input-tamil.md b/doc/models/text-input-tamil.md
index f215fd5..2ec52e9 100644
--- a/doc/models/text-input-tamil.md
+++ b/doc/models/text-input-tamil.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input4`](/fl-python/doc/models/input-4.md) | Required | - |
+| `input` | [`Input4`](/firstlanguage_python/doc/models/input-4.html) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/text-input.md b/doc/models/text-input.md
index d4b2332..618ec7f 100644
--- a/doc/models/text-input.md
+++ b/doc/models/text-input.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input`](/fl-python/doc/models/input.md) | Required | Direct Text Input |
+| `input` | [`Input`](/firstlanguage_python/doc/models/input.html) | Required | Direct Text Input |
 
 ## Example (as JSON)
 
diff --git a/doc/models/url-input-classify.md b/doc/models/url-input-classify.md
index aa6332d..68640ed 100644
--- a/doc/models/url-input-classify.md
+++ b/doc/models/url-input-classify.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input3`](/fl-python/doc/models/input-3.md) | Required | - |
+| `input` | [`Input3`](/firstlanguage_python/doc/models/input-3.html) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/url-input.md b/doc/models/url-input.md
index 3bccdb7..aa17ca7 100644
--- a/doc/models/url-input.md
+++ b/doc/models/url-input.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input1`](/fl-python/doc/models/input-1.md) | Required | Text for processing will be read from the given URL. Only HTML pages or text pages will be processed at this time. |
+| `input` | [`Input1`](/firstlanguage_python/doc/models/input-1.html) | Required | Text for processing will be read from the given URL. Only HTML pages or text pages will be processed at this time. |
 
 ## Example (as JSON)
 
diff --git a/firstlanguage_python.egg-info/PKG-INFO b/firstlanguage_python.egg-info/PKG-INFO
index 0878929..4c8b662 100644
--- a/firstlanguage_python.egg-info/PKG-INFO
+++ b/firstlanguage_python.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 2.1
 Name: firstlanguage-python
-Version: 1.0.0
+Version: 1.0.1
 Summary: Python client library for FirstLanguage API
-Home-page: https://firstlanguage.in/contactus
+Home-page: https://www.firstlanguage.in/contactus
 Author: FirstLanguage
 Author-email: info@firstlanguage.in
 License: UNKNOWN
-Download-URL: https://github.com/FirstLanguage/firstlanguage_python/archive/refs/tags/v_01.tar.gz
+Download-URL: https://github.com/FirstLanguage/firstlanguage_python/archive/refs/tags/v_1.tar.gz
 Description: 
         # Getting Started with FirstLanguage API
         
@@ -18,11 +18,65 @@ Description:
         
         This API is documented in **OpenAPI v3.0 format**.
         In addition to standard
-        OpenAPI syntax we use a few [vendor extensions](https://github.com/Redocly/redoc/blob/master/docs/redoc-vendor-extensions.md).
+        OpenAPI syntax we use a few [vendor extensions](https://github.com/Redocly/redoc/blob/master/docs/redoc-vendor-extensions.html).
         
         ## Building
         
-        Download the FirstLanguage Python SDK from <a href="FirstLanguage_PythonSDK.zip">here</a>
+        You can use the SDK either from source by cloning from GitHub using our [repo](https://github.com/FirstLanguage/firstlanguage_python.git)
+        
+        Or you can use PIP to install our package directly by using the command.
+        
+        ```
+        pip install firstlanguage-python
+        ```
+        
+        ## Follow below steps if you want to use SDK from our PIP published package
+        
+        Once the package is installed you can directly use our package in your code. Below is a working example. Replace <Your_API_KEY> with your API Key from the dashboard.
+        
+        ```
+        from firstlanguage_python.firstlanguage_client import Client
+        from firstlanguage_python.configuration import Environment
+        import jsonpickle
+        
+        
+        client = Client(
+            apikey='<Your_API_KEY>',
+            environment=Environment.PRODUCTION,)
+        
+        reqbody='{"input":{"text":"அவள் வேகமாக ஓடினாள்","lang":"ta"} }'
+        
+        body = jsonpickle.decode(reqbody)
+        basic_api_controller = client.basic_api
+        
+        result = basic_api_controller.get_stemmer(body)
+        
+        for res in result:
+          print("Original Text passed: "+res.orginal_text)
+          print("Stemmed result: "+res.stem)
+        
+        
+        ```
+        
+        Save the above file as test.py and run it using the below command
+        
+        ```
+        python3 test.py
+        ```
+        
+        You will get an output like below
+        
+        ```
+        200
+        Original Text passed: அவள்
+        Stemmed result: அவள்
+        Original Text passed: வேகமாக
+        Stemmed result: வேகம்
+        Original Text passed: ஓடினாள்
+        Stemmed result: ஓடி
+        ```
+        
+        ## Follow below steps if you want to use SDK from source
         
         You must have Python `3 >=3.7, <= 3.9` installed on your system to install and run this SDK. This SDK package depends on other Python packages like nose, jsonpickle etc. These dependencies are defined in the `requirements.txt` file that comes with the SDK. To resolve these dependencies, you can use the PIP Dependency manager. Install it by following steps at [https://pip.pypa.io/en/stable/installing/](https://pip.pypa.io/en/stable/installing/).
         
@@ -98,7 +152,7 @@ Description:
         
         ## Initialize the API Client
         
-        **_Note:_** Documentation for the client can be found [here.](/doc/client.md)
+        **_Note:_** Documentation for the client can be found [here.](/doc/client.html)
         
         The following parameters are configurable for the API Client:
         
@@ -130,14 +184,14 @@ Description:
         
         ## List of APIs
         
-        * [Basic AP Is](/doc/controllers/basic-api.md)
-        * [Advanced AP Is](/doc/controllers/advanced-api.md)
+        * [Basic APIs](/doc/controllers/basic-api.html)
+        * [Advanced APIs](/doc/controllers/advanced-api.html)
         
         ## Classes Documentation
         
-        * [Utility Classes](/doc/utility-classes.md)
-        * [HttpResponse](/doc/http-response.md)
-        * [HttpRequest](/doc/http-request.md)
+        * [Utility Classes](/doc/utility-classes.html)
+        * [HttpResponse](/doc/http-response.html)
+        * [HttpRequest](/doc/http-request.html)
         
         
 Keywords: FirstLanguage API,NLP,SDK,Python,Natural Language Processing
diff --git a/firstlanguage_python.egg-info/SOURCES.txt b/firstlanguage_python.egg-info/SOURCES.txt
index 90a625e..db68ebc 100644
--- a/firstlanguage_python.egg-info/SOURCES.txt
+++ b/firstlanguage_python.egg-info/SOURCES.txt
@@ -1,6 +1,6 @@
 LICENSE
 MANIFEST.in
-README.md
+README.html
 setup.cfg
 setup.py
 firstlanguage_python/__init__.py
@@ -36,14 +36,32 @@ firstlanguage_python/http/requests_client.py
 firstlanguage_python/http/auth/__init__.py
 firstlanguage_python/http/auth/custom_header_auth.py
 firstlanguage_python/models/__init__.py
+firstlanguage_python/models/api_ner_request.py
+firstlanguage_python/models/api_ner_request_1.py
 firstlanguage_python/models/api_ner_response.py
+firstlanguage_python/models/api_qa_request.py
+firstlanguage_python/models/api_qa_request_1.py
 firstlanguage_python/models/api_qa_response.py
+firstlanguage_python/models/api_summary_request.py
+firstlanguage_python/models/api_summary_request_1.py
+firstlanguage_python/models/api_summary_response.py
+firstlanguage_python/models/api_translate_request.py
+firstlanguage_python/models/api_translate_request_1.py
+firstlanguage_python/models/api_translate_response.py
 firstlanguage_python/models/errors_1.py
 firstlanguage_python/models/input.py
 firstlanguage_python/models/input_1.py
+firstlanguage_python/models/input_10.py
+firstlanguage_python/models/input_11.py
+firstlanguage_python/models/input_12.py
 firstlanguage_python/models/input_2.py
 firstlanguage_python/models/input_3.py
 firstlanguage_python/models/input_4.py
+firstlanguage_python/models/input_5.py
+firstlanguage_python/models/input_6.py
+firstlanguage_python/models/input_7.py
+firstlanguage_python/models/input_8.py
+firstlanguage_python/models/input_9.py
 firstlanguage_python/models/orignal_string.py
 firstlanguage_python/models/responseclassify.py
 firstlanguage_python/models/responselemma.py
@@ -57,6 +75,7 @@ firstlanguage_python/models/url_input.py
 firstlanguage_python/models/url_input_classify.py
 firstlanguage_python/utilities/__init__.py
 firstlanguage_python/utilities/file_wrapper.py
+firstlanguage_python/utilities/schema_validator_wrapper.py
 tests/__init__.py
 tests/http_response_catcher.py
 tests/test_helper.py
diff --git a/firstlanguage_python.egg-info/requires.txt b/firstlanguage_python.egg-info/requires.txt
index 5b039f2..970bfb9 100644
--- a/firstlanguage_python.egg-info/requires.txt
+++ b/firstlanguage_python.egg-info/requires.txt
@@ -1,5 +1,6 @@
 cachecontrol~=0.12.6
 enum34>=1.1.10,~=1.1
 jsonpickle>=1.4.1,~=1.4
+jsonschema~=3.2.0
 python-dateutil~=2.8.1
 requests~=2.24
diff --git a/index.md b/index.md
index 96e22b4..c8347b7 100644
--- a/index.md
+++ b/index.md
@@ -9,7 +9,7 @@ Collection of NLP APIs to help developers. We have grouped the APIs under Basic
 
 This API is documented in **OpenAPI v3.0 format**.
 In addition to standard
-OpenAPI syntax we use a few [vendor extensions](https://github.com/Redocly/redoc/blob/master/docs/redoc-vendor-extensions.md).
+OpenAPI syntax we use a few [vendor extensions](https://github.com/Redocly/redoc/blob/master/docs/redoc-vendor-extensions.html).
 
 ## Building
 
@@ -143,7 +143,7 @@ nosetests
 
 ## Initialize the API Client
 
-**_Note:_** Documentation for the client can be found [here.](/doc/client.md)
+**_Note:_** Documentation for the client can be found [here.](/doc/client.html)
 
 The following parameters are configurable for the API Client:
 
@@ -175,12 +175,12 @@ This API uses `Custom Header Signature`.
 
 ## List of APIs
 
-* [Basic APIs](/doc/controllers/basic-api.md)
-* [Advanced APIs](/doc/controllers/advanced-api.md)
+* [Basic APIs](/doc/controllers/basic-api.html)
+* [Advanced APIs](/doc/controllers/advanced-api.html)
 
 ## Classes Documentation
 
-* [Utility Classes](/doc/utility-classes.md)
-* [HttpResponse](/doc/http-response.md)
-* [HttpRequest](/doc/http-request.md)
+* [Utility Classes](/doc/utility-classes.html)
+* [HttpResponse](/doc/http-response.html)
+* [HttpRequest](/doc/http-request.html)
 
diff --git a/setup.cfg b/setup.cfg
index 9d5f797..8b0659b 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,3 +1,3 @@
 # Inside of setup.cfg
 [metadata]
-description-file = README.md
\ No newline at end of file
+description-file = README.html
\ No newline at end of file
diff --git a/setup.py b/setup.py
index fd13199..0a8de4e 100644
--- a/setup.py
+++ b/setup.py
@@ -4,22 +4,22 @@
 from setuptools import setup, find_packages
 
 if sys.version_info[0] < 3:
-    with open('README.md', 'r') as fh:
+    with open('README.html', 'r') as fh:
         long_description = fh.read()
 else:
-    with open('README.md', 'r', encoding='utf-8') as fh:
+    with open('README.html', 'r', encoding='utf-8') as fh:
         long_description = fh.read()
 
 setup(
     name='firstlanguage_python',
-    version='1.0.0',
+    version='1.0.1',
     description='Python client library for FirstLanguage API',
     long_description=long_description,
     long_description_content_type="text/markdown",
     author='FirstLanguage',
     author_email='info@firstlanguage.in',
-    url='https://firstlanguage.in/contactus',
-    download_url = 'https://github.com/FirstLanguage/firstlanguage_python/archive/refs/tags/v_01.tar.gz',
+    url='https://www.firstlanguage.in/contactus',
+    download_url = 'https://github.com/FirstLanguage/firstlanguage_python/archive/refs/tags/v_1.tar.gz',
     keywords = ['FirstLanguage API', 'NLP', 'SDK', 'Python', 'Natural Language Processing'],  
     packages=find_packages(),
     install_requires=[
@@ -27,7 +27,8 @@
         'requests~=2.24',
         'cachecontrol~=0.12.6',
         'python-dateutil~=2.8.1',
-        'enum34~=1.1, >=1.1.10'
+        'enum34~=1.1, >=1.1.10',
+        'jsonschema~=3.2.0'
     ],
     tests_require=[
         'nose>=1.3.7'

From aff8e2379a0be90f718fe3c9841944c13a163187 Mon Sep 17 00:00:00 2001
From: Subalalitha <subalalitha@firstlanguage.in>
Date: Fri, 17 Dec 2021 14:50:16 +0530
Subject: [PATCH 27/34] CSS Changes

---
 assets/css/style.scss | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)
 create mode 100644 assets/css/style.scss

diff --git a/assets/css/style.scss b/assets/css/style.scss
new file mode 100644
index 0000000..9124954
--- /dev/null
+++ b/assets/css/style.scss
@@ -0,0 +1,36 @@
+---
+---
+
+@import 'jekyll-theme-cayman';
+
+.page-header {
+    background-color: #0f222d;
+    background-image: linear-gradient(#0f222d, #0f222d);
+    h1,
+    h2,
+    h3,
+    h4,
+    h5,
+    h6 {
+      color: #fff5d0;
+    }
+  }
+
+  .main-content {    
+    h1,
+    h2,
+    h3,
+    h4,
+    h5,
+    h6 {
+      color: #0f222d;
+    }          
+  }
+
+  .main-content pre>code {
+    color: #fff5d0;
+  }
+  .main-content .highlight pre, .main-content pre {
+    background-color: #0f222d;
+    color: #fff5d0;
+  }

From 3ab83e9f785e41797f55821dfcf9f459e4ad0c0e Mon Sep 17 00:00:00 2001
From: Subalalitha <subalalitha@firstlanguage.in>
Date: Thu, 24 Feb 2022 13:43:56 +0530
Subject: [PATCH 28/34] TableQA changes

---
 .gitignore                                    |   1 +
 example_Stemmer.py                            |  29 ++
 examples/example_Stemmer.py                   |  10 +
 .../__pycache__/api_helper.cpython-39.pyc     | Bin 14053 -> 14128 bytes
 .../__pycache__/configuration.cpython-39.pyc  | Bin 4245 -> 4228 bytes
 .../__pycache__/decorators.cpython-39.pyc     | Bin 868 -> 877 bytes
 .../firstlanguage_client.cpython-39.pyc       | Bin 1694 -> 2497 bytes
 firstlanguage_python/api_helper.py            |  68 +++--
 firstlanguage_python/configuration.py         |   6 +-
 firstlanguage_python/controllers/__init__.py  |   1 +
 .../__pycache__/__init__.cpython-39.pyc       | Bin 280 -> 291 bytes
 .../advanced_api_controller.cpython-39.pyc    | Bin 16388 -> 18980 bytes
 .../base_controller.cpython-39.pyc            | Bin 3649 -> 4625 bytes
 .../basic_api_controller.cpython-39.pyc       | Bin 12108 -> 12038 bytes
 .../controllers/advanced_api_controller.py    | 118 +++++++-
 .../controllers/base_controller.py            |  32 ++-
 .../controllers/basic_api_controller.py       |  28 +-
 .../controllers/enterprise_only_controller.py |  86 ++++++
 firstlanguage_python/decorators.py            |   2 +-
 ...lassify_426_error_exception.cpython-39.pyc | Bin 1780 -> 1782 bytes
 .../__pycache__/api_exception.cpython-39.pyc  | Bin 1201 -> 1210 bytes
 ...mmatize_426_error_exception.cpython-39.pyc | Bin 1785 -> 1787 bytes
 ...i_morph_426_error_exception.cpython-39.pyc | Bin 1762 -> 1764 bytes
 ..._postag_426_error_exception.cpython-39.pyc | Bin 1767 -> 1769 bytes
 ...stemmer_426_error_exception.cpython-39.pyc | Bin 1775 -> 1777 bytes
 .../errors_exception.cpython-39.pyc           | Bin 1979 -> 1981 bytes
 .../m_426_error_exception.cpython-39.pyc      | Bin 1726 -> 1728 bytes
 .../api_classify_426_error_exception.py       |   2 +-
 .../exceptions/api_exception.py               |   2 +-
 .../api_lemmatize_426_error_exception.py      |   2 +-
 .../api_morph_426_error_exception.py          |   2 +-
 .../api_postag_426_error_exception.py         |   2 +-
 .../api_stemmer_426_error_exception.py        |   2 +-
 .../exceptions/errors_exception.py            |   2 +-
 .../exceptions/m_426_error_exception.py       |   2 +-
 firstlanguage_python/firstlanguage_client.py  |  19 +-
 .../http/__pycache__/__init__.cpython-39.pyc  | Bin 304 -> 287 bytes
 .../__pycache__/http_client.cpython-39.pyc    | Bin 6385 -> 6387 bytes
 .../http_method_enum.cpython-39.pyc           | Bin 1280 -> 1289 bytes
 .../__pycache__/http_request.cpython-39.pyc   | Bin 3004 -> 3006 bytes
 .../__pycache__/http_response.cpython-39.pyc  | Bin 1649 -> 1658 bytes
 .../requests_client.cpython-39.pyc            | Bin 3821 -> 3823 bytes
 firstlanguage_python/http/auth/__init__.py    |   2 +-
 .../auth/__pycache__/__init__.cpython-39.pyc  | Bin 228 -> 221 bytes
 .../http/auth/custom_header_auth.py           |  37 ---
 .../http/auth/custom_header_authentication.py |  36 +++
 firstlanguage_python/http/http_call_back.py   |   2 +-
 firstlanguage_python/http/http_client.py      |   2 +-
 firstlanguage_python/http/http_method_enum.py |   2 +-
 firstlanguage_python/http/http_request.py     |   2 +-
 firstlanguage_python/http/http_response.py    |   2 +-
 firstlanguage_python/http/requests_client.py  |   2 +-
 firstlanguage_python/models/__init__.py       |  44 +--
 .../__pycache__/__init__.cpython-39.pyc       | Bin 733 -> 874 bytes
 .../api_ner_response.cpython-39.pyc           | Bin 2480 -> 2487 bytes
 .../api_qa_response.cpython-39.pyc            | Bin 2472 -> 2479 bytes
 .../api_summary_response.cpython-39.pyc       | Bin 2140 -> 2144 bytes
 .../api_translate_response.cpython-39.pyc     | Bin 2168 -> 2172 bytes
 .../__pycache__/errors_1.cpython-39.pyc       | Bin 2287 -> 2294 bytes
 .../__pycache__/orignal_string.cpython-39.pyc | Bin 2113 -> 2120 bytes
 .../responseclassify.cpython-39.pyc           | Bin 2252 -> 2259 bytes
 .../__pycache__/responselemma.cpython-39.pyc  | Bin 2244 -> 2251 bytes
 .../__pycache__/responsemorph.cpython-39.pyc  | Bin 2244 -> 2251 bytes
 .../__pycache__/responsepo.cpython-39.pyc     | Bin 2215 -> 2222 bytes
 .../__pycache__/responsestem.cpython-39.pyc   | Bin 2225 -> 2232 bytes
 .../models/api_ner_request.py                 |   8 +-
 .../models/api_ner_request_1.py               |   8 +-
 .../models/api_ner_response.py                |   2 +-
 firstlanguage_python/models/api_qa_request.py |   2 +-
 .../models/api_qa_request_1.py                |   2 +-
 .../models/api_qa_response.py                 |   2 +-
 .../models/api_question_request.py            |  73 +++++
 .../models/api_question_response.py           |  72 +++++
 .../models/api_summary_request.py             |   8 +-
 .../models/api_summary_request_1.py           |   8 +-
 .../models/api_summary_response.py            |   2 +-
 .../models/api_tableqa_request.py             |  73 +++++
 .../models/api_tableqa_request_1.py           |  73 +++++
 .../models/api_tableqa_response.py            |  84 ++++++
 .../models/api_translate_request.py           |   8 +-
 .../models/api_translate_request_1.py         |   8 +-
 .../models/api_translate_response.py          |   2 +-
 firstlanguage_python/models/errors_1.py       |   2 +-
 firstlanguage_python/models/input.py          |   2 +-
 firstlanguage_python/models/input_1.py        |   2 +-
 firstlanguage_python/models/input_10.py       |  29 +-
 firstlanguage_python/models/input_11.py       |  28 +-
 firstlanguage_python/models/input_12.py       |  29 +-
 firstlanguage_python/models/input_13.py       |  87 ++++++
 firstlanguage_python/models/input_14.py       |  79 ++++++
 firstlanguage_python/models/input_15.py       |  88 ++++++
 firstlanguage_python/models/input_2.py        |   2 +-
 firstlanguage_python/models/input_3.py        |   2 +-
 firstlanguage_python/models/input_4.py        |   2 +-
 firstlanguage_python/models/input_5.py        |   4 +-
 firstlanguage_python/models/input_6.py        |   2 +-
 firstlanguage_python/models/input_7.py        |  35 ++-
 firstlanguage_python/models/input_8.py        |  38 ++-
 firstlanguage_python/models/input_9.py        |  18 +-
 firstlanguage_python/models/orignal_string.py |   2 +-
 .../models/responseclassify.py                |   2 +-
 firstlanguage_python/models/responselemma.py  |   2 +-
 firstlanguage_python/models/responsemorph.py  |   2 +-
 firstlanguage_python/models/responsepo.py     |   2 +-
 firstlanguage_python/models/responsestem.py   |   2 +-
 firstlanguage_python/models/text_input.py     |   2 +-
 .../models/text_input_classify.py             |   2 +-
 .../models/text_input_tamil.py                |   2 +-
 firstlanguage_python/models/url_input.py      |   2 +-
 .../models/url_input_classify.py              |   2 +-
 .../schemas/api_ner_request.json              |   2 +-
 .../schemas/api_ner_request_1.json            |   2 +-
 .../schemas/api_qa_response.json              |  10 +
 .../schemas/api_question_request.json         |  23 ++
 .../schemas/api_question_response.json        |  24 ++
 .../schemas/api_summary_request.json          |   2 +-
 .../schemas/api_summary_request_1.json        |   2 +-
 .../schemas/api_summary_response.json         |  18 ++
 .../schemas/api_tableqa_request.json          |  13 +
 .../schemas/api_tableqa_request_1.json        |  13 +
 .../schemas/api_tableqa_response.json         |  25 ++
 .../schemas/api_translate_request.json        |   2 +-
 .../schemas/api_translate_request_1.json      |   2 +-
 .../schemas/api_translate_response.json       |  18 ++
 firstlanguage_python/schemas/input_10.json    |  17 +-
 firstlanguage_python/schemas/input_11.json    |  17 +-
 firstlanguage_python/schemas/input_12.json    |  17 +-
 firstlanguage_python/schemas/input_13.json    |  24 ++
 firstlanguage_python/schemas/input_14.json    |  19 ++
 firstlanguage_python/schemas/input_15.json    |  24 ++
 firstlanguage_python/schemas/input_5.json     |   2 +-
 firstlanguage_python/schemas/input_7.json     |  24 +-
 firstlanguage_python/schemas/input_8.json     |  25 +-
 firstlanguage_python/schemas/input_9.json     |   8 +-
 .../schemas/responseclassify.json             |   3 +
 .../schemas/responsemorph.json                |   3 +
 firstlanguage_python/schemas/text_input.json  |   3 +
 .../schemas/text_input_classify.json          |   3 +
 .../schemas/text_input_tamil.json             |  11 +
 firstlanguage_python/schemas/url_input.json   |  12 +
 .../schemas/url_input_classify.json           |   3 +
 .../__pycache__/__init__.cpython-39.pyc       | Bin 225 -> 208 bytes
 .../schema_validator_wrapper.cpython-39.pyc   | Bin 916 -> 916 bytes
 .../utilities/file_wrapper.py                 |   2 +-
 requirements.txt                              |   2 +-
 setup.py                                      |   4 +-
 tests/controllers/controller_test_base.py     |   5 +-
 .../test_advanced_ap_is_controller.py         | 264 +++++++++++++++++-
 .../test_basic_ap_is_controller.py            | 249 +++++++++++++++++
 .../test_enterprise_only_controller.py        |  55 ++++
 150 files changed, 2050 insertions(+), 355 deletions(-)
 create mode 100644 .gitignore
 create mode 100644 example_Stemmer.py
 create mode 100644 firstlanguage_python/controllers/enterprise_only_controller.py
 delete mode 100644 firstlanguage_python/http/auth/custom_header_auth.py
 create mode 100644 firstlanguage_python/http/auth/custom_header_authentication.py
 create mode 100644 firstlanguage_python/models/api_question_request.py
 create mode 100644 firstlanguage_python/models/api_question_response.py
 create mode 100644 firstlanguage_python/models/api_tableqa_request.py
 create mode 100644 firstlanguage_python/models/api_tableqa_request_1.py
 create mode 100644 firstlanguage_python/models/api_tableqa_response.py
 create mode 100644 firstlanguage_python/models/input_13.py
 create mode 100644 firstlanguage_python/models/input_14.py
 create mode 100644 firstlanguage_python/models/input_15.py
 create mode 100644 firstlanguage_python/schemas/api_question_request.json
 create mode 100644 firstlanguage_python/schemas/api_question_response.json
 create mode 100644 firstlanguage_python/schemas/api_tableqa_request.json
 create mode 100644 firstlanguage_python/schemas/api_tableqa_request_1.json
 create mode 100644 firstlanguage_python/schemas/api_tableqa_response.json
 create mode 100644 firstlanguage_python/schemas/input_13.json
 create mode 100644 firstlanguage_python/schemas/input_14.json
 create mode 100644 firstlanguage_python/schemas/input_15.json
 create mode 100644 tests/controllers/test_basic_ap_is_controller.py
 create mode 100644 tests/controllers/test_enterprise_only_controller.py

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..94487b9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+*.pyc
diff --git a/example_Stemmer.py b/example_Stemmer.py
new file mode 100644
index 0000000..06d62da
--- /dev/null
+++ b/example_Stemmer.py
@@ -0,0 +1,29 @@
+from firstlanguage_python.firstlanguage_client import Client
+from firstlanguage_python.configuration import Environment
+import jsonpickle
+
+
+client = Client(
+    apikey='63af276e-34fe-4fd5-a474-0c69847f25e1',
+    environment=Environment.PRODUCTION,)
+
+reqbody='{"input":{"text":"அவள் வேகமாக ஓடினாள்","lang":"ta"} }'
+
+body = jsonpickle.decode(reqbody)
+basic_api_controller = client.basic_api
+
+advanced_api_controller = client.advanced_api
+
+result = basic_api_controller.get_stemmer(body)
+
+for res in result:
+  print("Original Text passed: "+res.orginal_text)
+  print("Stemmed result: "+res.stem)
+
+reqbody='{"input":{"text":"Welcome to Google and FirstLanguage","lang":"en"} }'
+
+body = jsonpickle.decode(reqbody)
+
+result = advanced_api_controller.get_translate(body)
+
+print(result)
diff --git a/examples/example_Stemmer.py b/examples/example_Stemmer.py
index bb9473c..3371c5d 100644
--- a/examples/example_Stemmer.py
+++ b/examples/example_Stemmer.py
@@ -12,8 +12,18 @@
 body = jsonpickle.decode(reqbody)
 basic_api_controller = client.basic_api
 
+advanced_api_controller = client.advanced_api
+
 result = basic_api_controller.get_stemmer(body)
 
 for res in result:
   print("Original Text passed: "+res.orginal_text)
   print("Stemmed result: "+res.stem)
+
+reqbody='{"input":{"text":"Welcome to Google and FirstLanguage","lang":"ta"} }'
+
+body = jsonpickle.decode(reqbody)
+
+result = advanced_api_controller.get_translate(body)
+
+print(result)
diff --git a/firstlanguage_python/__pycache__/api_helper.cpython-39.pyc b/firstlanguage_python/__pycache__/api_helper.cpython-39.pyc
index f7077785e807f0511c1d5a736127eaf6dd465bb6..06fe313b24810b2a6240efad34c645797b70372c 100644
GIT binary patch
diff --git a/firstlanguage_python/__pycache__/configuration.cpython-39.pyc b/firstlanguage_python/__pycache__/configuration.cpython-39.pyc
index 3023031421e24e6b1ee6cc4bd60d88a837a4f865..78db442f8a2b61f11f29ee86443adcf0d06f9cad 100644
GIT binary patch
diff --git a/firstlanguage_python/__pycache__/decorators.cpython-39.pyc b/firstlanguage_python/__pycache__/decorators.cpython-39.pyc
index f9a357bb33eda0047e3fde9779fa501f5e5e03ca..71901c053604d988d773800f4cf90d3313f2f102 100644
GIT binary patch
diff --git a/firstlanguage_python/__pycache__/firstlanguage_client.cpython-39.pyc b/firstlanguage_python/__pycache__/firstlanguage_client.cpython-39.pyc
index 96ce36298c4f0acd66c84707824ef207b9e0a53c..01ad530afdbdb6c2af16934ddafff2fb1ca2c8aa 100644
GIT binary patch
diff --git a/firstlanguage_python/api_helper.py b/firstlanguage_python/api_helper.py
index 62f2596..5b08950 100644
--- a/firstlanguage_python/api_helper.py
+++ b/firstlanguage_python/api_helper.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
@@ -142,13 +142,14 @@ def get_schema_path(path):
         return path
 
     @staticmethod
-    def serialize_array(key, array, formatting="indexed"):
+    def serialize_array(key, array, formatting="indexed", is_query=False):
         """Converts an array parameter to a list of key value tuples.
 
         Args:
             key (str): The name of the parameter.
             array (list): The value of the parameter.
             formatting (str): The type of key formatting expected.
+            is_query (bool): Decides if the parameters are for query or form.
 
         Returns:
             list: A list with key value tuples for the array elements.
@@ -168,6 +169,16 @@ def serialize_array(key, array, formatting="indexed"):
                 tuples += [("{0}[{1}]".format(key, index), element) for index, element in enumerate(array)]
             elif formatting == "plain":
                 tuples += [(key, element) for element in array]
+            elif is_query:
+                if formatting == "csv":
+                    tuples += [(key, ",".join(str(x) for x in array))]
+
+                elif formatting == "psv":
+                    tuples += [(key, "|".join(str(x) for x in array))]
+
+                elif formatting == "tsv":
+                    tuples += [(key, "\t".join(str(x) for x in array))]
+
             else:
                 raise ValueError("Invalid format provided.")
         else:
@@ -231,41 +242,25 @@ def append_url_with_query_parameters(url,
             raise ValueError("URL is None.")
         if parameters is None:
             return url
-
-        for key, value in parameters.items():
+        parameters = APIHelper.process_complex_types_parameters(parameters, array_serialization)
+        for index, value in enumerate(parameters):
+            key = value[0]
+            val = value[1]
             seperator = '&' if '?' in url else '?'
             if value is not None:
-                if isinstance(value, list):
-                    value = [element for element in value if element]
-                    if array_serialization == "csv":
-                        url += "{0}{1}={2}".format(
-                            seperator,
-                            key,
-                            ",".join(quote(str(x), safe='') for x in value)
-                        )
-                    elif array_serialization == "psv":
-                        url += "{0}{1}={2}".format(
-                            seperator,
-                            key,
-                            "|".join(quote(str(x), safe='') for x in value)
-                        )
-                    elif array_serialization == "tsv":
-                        url += "{0}{1}={2}".format(
-                            seperator,
-                            key,
-                            "\t".join(quote(str(x), safe='') for x in value)
-                        )
-                    else:
-                        url += "{0}{1}".format(
-                            seperator,
-                            "&".join(("{0}={1}".format(k, quote(str(v), safe='')))
-                                     for k, v in APIHelper.serialize_array(key, value, array_serialization))
-                        )
-                else:
-                    url += "{0}{1}={2}".format(seperator, key, quote(str(value), safe=''))
+                url += "{0}{1}={2}".format(seperator, key, quote(str(val), safe=''))
 
         return url
 
+    @staticmethod
+    def process_complex_types_parameters(query_parameters, array_serialization):
+        processed_params = []
+        for key, value in query_parameters.items():
+            processed_params.extend(
+                APIHelper.form_encode(value, key, array_serialization=array_serialization, is_query=True))
+        return processed_params
+
+
     @staticmethod
     def clean_url(url):
         """Validates and processes the given query Url to clean empty slashes.
@@ -315,7 +310,7 @@ def form_encode_parameters(form_parameters,
     @staticmethod
     def form_encode(obj,
                     instance_name,
-                    array_serialization="indexed"):
+                    array_serialization="indexed", is_query=False):
         """Encodes a model in a form-encoded manner such as person[Name]
 
         Args:
@@ -323,6 +318,7 @@ def form_encode(obj,
             instance_name (string): The base name to appear before each entry
                 for this object.
             array_serialization (string): The format of array parameter serialization.
+            is_query (bool): Decides if the parameters are for query or form.
 
         Returns:
             dict: A dictionary of form encoded properties of the model.
@@ -336,11 +332,11 @@ def form_encode(obj,
         if obj is None:
             return []
         elif isinstance(obj, list):
-            for element in APIHelper.serialize_array(instance_name, obj, array_serialization):
-                retval += APIHelper.form_encode(element[1], element[0], array_serialization)
+            for element in APIHelper.serialize_array(instance_name, obj, array_serialization, is_query):
+                retval += APIHelper.form_encode(element[1], element[0], array_serialization, is_query)
         elif isinstance(obj, dict):
             for item in obj:
-                retval += APIHelper.form_encode(obj[item], instance_name + "[" + item + "]", array_serialization)
+                retval += APIHelper.form_encode(obj[item], instance_name + "[" + item + "]", array_serialization, is_query)
         else:
             retval.append((instance_name, obj))
 
diff --git a/firstlanguage_python/configuration.py b/firstlanguage_python/configuration.py
index ec4147b..e5beb58 100644
--- a/firstlanguage_python/configuration.py
+++ b/firstlanguage_python/configuration.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
@@ -72,7 +72,7 @@ def __init__(
         backoff_factor=2,
         retry_statuses=[408, 413, 429, 500, 502, 503, 504, 521, 522, 524],
         retry_methods=['GET', 'PUT'], environment=Environment.PRODUCTION,
-        apikey='BHbLvTKeT4y9PACVomcGBF3GrCv1OUOc'
+        apikey='TODO: Replace'
     ):
         # The Http Client passed from the sdk user for making requests
         self._http_client_instance = http_client_instance
@@ -100,7 +100,7 @@ def __init__(
         # Current API environment
         self._environment = environment
 
-        # API Key can be copied from your dashboard
+        # TODO: Replace
         self._apikey = apikey
 
         # The Http Client to use for making requests.
diff --git a/firstlanguage_python/controllers/__init__.py b/firstlanguage_python/controllers/__init__.py
index 58a3d73..3f70af9 100644
--- a/firstlanguage_python/controllers/__init__.py
+++ b/firstlanguage_python/controllers/__init__.py
@@ -2,4 +2,5 @@
     'base_controller',
     'basic_ap_is_controller',
     'advanced_ap_is_controller',
+    'enterprise_only_controller',
 ]
diff --git a/firstlanguage_python/controllers/__pycache__/__init__.cpython-39.pyc b/firstlanguage_python/controllers/__pycache__/__init__.cpython-39.pyc
index 5b030dda3a64f13d4bda656f9a96ad6d4fd72753..d712255cc6bc65d00b90387391afdadd6e6c8771 100644
GIT binary patch
diff --git a/firstlanguage_python/controllers/__pycache__/advanced_api_controller.cpython-39.pyc b/firstlanguage_python/controllers/__pycache__/advanced_api_controller.cpython-39.pyc
index 8496aeeef2b9288b7976c31469d78b0df795dd00..ec107cd1562683c83ad1ba5657de9934daabf401 100644
GIT binary patch
diff --git a/firstlanguage_python/controllers/__pycache__/base_controller.cpython-39.pyc b/firstlanguage_python/controllers/__pycache__/base_controller.cpython-39.pyc
index 7b2f435129e2086a73c217fa1c6c424c2b6052cc..2f31a07752bc4a48eff422cbbbe7285486f30236 100644
GIT binary patch
diff --git a/firstlanguage_python/controllers/__pycache__/basic_api_controller.cpython-39.pyc b/firstlanguage_python/controllers/__pycache__/basic_api_controller.cpython-39.pyc
index 13b72c9b1a47e8ef5fc8ff9aa01bb181e094a598..5d2cf6a171985eda30badeac194290afd64d9bba 100644
GIT binary patch
diff --git a/firstlanguage_python/controllers/advanced_api_controller.py b/firstlanguage_python/controllers/advanced_api_controller.py
index 82f7507..f66150c 100644
--- a/firstlanguage_python/controllers/advanced_api_controller.py
+++ b/firstlanguage_python/controllers/advanced_api_controller.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
@@ -9,10 +9,10 @@
 
 from firstlanguage_python.api_helper import APIHelper
 from firstlanguage_python.configuration import Server
-from firstlanguage_python.controllers.base_controller import BaseController 
-from firstlanguage_python.http.auth.custom_header_auth import CustomHeaderAuth
+from firstlanguage_python.controllers.base_controller import BaseController
 from firstlanguage_python.models.responseclassify import Responseclassify
 from firstlanguage_python.models.api_qa_response import ApiQaResponse
+from firstlanguage_python.models.api_tableqa_response import ApiTableqaResponse
 from firstlanguage_python.models.api_ner_response import ApiNerResponse
 from firstlanguage_python.models.api_summary_response import ApiSummaryResponse
 from firstlanguage_python.models.api_translate_response import ApiTranslateResponse
@@ -24,10 +24,9 @@
 
 class AdvancedAPIsController(BaseController):
 
-    """A Controller to access Endpoints in the firstlanguage API."""
-
-    def __init__(self, config, call_back=None):
-        super(AdvancedAPIsController, self).__init__(config, call_back)
+    """A Controller to access Endpoints in the firstlanguage_python API."""
+    def __init__(self, config, auth_managers, call_back=None):
+        super(AdvancedAPIsController, self).__init__(config, auth_managers, call_back)
 
     def get_classification(self,
                            body):
@@ -86,7 +85,9 @@ def get_classification(self,
 
         # Prepare and execute request
         _request = self.config.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body))
-        CustomHeaderAuth.apply(self.config, _request)
+        # Apply authentication scheme on request
+        self.apply_auth_schemes(_request, 'global')
+
         _response = self.execute_request(_request)
 
         # Endpoint and global error handling using HTTP status codes.
@@ -147,7 +148,9 @@ def get_qa(self,
 
         # Prepare and execute request
         _request = self.config.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body))
-        CustomHeaderAuth.apply(self.config, _request)
+        # Apply authentication scheme on request
+        self.apply_auth_schemes(_request, 'global')
+
         _response = self.execute_request(_request)
 
         # Endpoint and global error handling using HTTP status codes.
@@ -163,6 +166,91 @@ def get_qa(self,
 
         return decoded
 
+    def get_table_qa(self,
+                     body=None):
+        """Does a POST request to /api/tableqa.
+
+        # TableQA : Defintion and it's usage
+        Table QA uses TAPAS based model to get answers from table input. The
+        table can be parsed into a JSON object or it can be a link to a CSV
+        file. Currently only Plain CSV file is supported. 
+        This API works only for English language currently
+        Example for flattend table in JSON Format:<br/>
+        {"Cities": ["Paris, France", "London, England", "Lyon, France"],
+        "Inhabitants": ["2.161", "8.982", "0.513"]}
+        The API can return the original table rows from which the answer was
+        extracted based on the flag 'sendBackRows'
+
+        Args:
+            body (object, optional): Add a JSON Input as per the schema
+                defined below. For URL input, if you are providing Google
+                drive or Google Spreadsheet url ensure that you provide a link
+                which can download the file directly and not the share link. 
+                Example: For Google Spreadsheet, the url format will be like
+                below:
+                https://docs.google.com/spreadsheets/d/1TtzPAHqpaTB7Ltdq0zwZ8Fa
+                mF7O9aC4KH4EpmwI/export?format=csv&gid=151344200  Or for
+                Google Drive, it will be like below:
+                https://drive.google.com/uc?id=idofthefile  For Flat table
+                input check the example out.
+
+        Returns:
+            list of ApiTableqaResponse: Response from the API. Answers for the
+                questions posted along with the original rows if the flag is
+                true.
+
+The anwer will be of format:
+
+AGGREGRATE >
+                answer
+
+Aggregrate can be one of the
+                following:
+NONE,
+SUM,
+COUNT,
+AVERAGE
+
+        Raises:
+            APIException: When an error occurs while fetching the data from
+                the remote API. This exception includes the HTTP Response
+                code, an error message, and the HTTP body that was received in
+                the request.
+
+        """
+
+        # Prepare query URL
+        _url_path = '/api/tableqa'
+        _query_builder = self.config.get_base_uri()
+        _query_builder += _url_path
+        _query_url = APIHelper.clean_url(_query_builder)
+
+        # Prepare headers
+        _headers = {
+            'accept': 'application/json',
+            'Content-Type': 'application/json'
+        }
+
+        # Prepare and execute request
+        _request = self.config.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body))
+        # Apply authentication scheme on request
+        self.apply_auth_schemes(_request, 'global')
+
+        _response = self.execute_request(_request)
+
+        # Endpoint and global error handling using HTTP status codes.
+        if _response.status_code == 400:
+            raise ErrorsException('Bad Request', _response)
+        elif _response.status_code == 426:
+            raise M426ErrorException('Please use HTTPS protocol', _response)
+        elif _response.status_code == 429:
+            raise APIException('Too Many Requests', _response)
+        self.validate_response(_response)
+
+        decoded = APIHelper.json_deserialize(_response.text, ApiTableqaResponse.from_dictionary)
+
+        return decoded
+
     def get_ner(self,
                 body=None):
         """Does a POST request to /api/ner.
@@ -221,7 +309,9 @@ def get_ner(self,
 
         # Prepare and execute request
         _request = self.config.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body))
-        CustomHeaderAuth.apply(self.config, _request)
+        # Apply authentication scheme on request
+        self.apply_auth_schemes(_request, 'global')
+
         _response = self.execute_request(_request)
 
         # Endpoint and global error handling using HTTP status codes.
@@ -319,7 +409,9 @@ def get_summary(self,
 
         # Prepare and execute request
         _request = self.config.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body))
-        CustomHeaderAuth.apply(self.config, _request)
+        # Apply authentication scheme on request
+        self.apply_auth_schemes(_request, 'global')
+
         _response = self.execute_request(_request)
 
         # Endpoint and global error handling using HTTP status codes.
@@ -432,7 +524,9 @@ def get_translate(self,
 
         # Prepare and execute request
         _request = self.config.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body))
-        CustomHeaderAuth.apply(self.config, _request)
+        # Apply authentication scheme on request
+        self.apply_auth_schemes(_request, 'global')
+
         _response = self.execute_request(_request)
 
         # Endpoint and global error handling using HTTP status codes.
diff --git a/firstlanguage_python/controllers/base_controller.py b/firstlanguage_python/controllers/base_controller.py
index 12d98ca..500b9bb 100644
--- a/firstlanguage_python/controllers/base_controller.py
+++ b/firstlanguage_python/controllers/base_controller.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
@@ -23,6 +23,7 @@ class BaseController(object):
             as well.
         http_call_back (HttpCallBack): An object which holds call back
             methods to be called before and after the execution of an HttpRequest.
+        auth_managers (dict): A dictionary which holds the instances of authentication managers.
         global_headers (dict): The global headers of the API which are sent with
             every request.
 
@@ -33,8 +34,9 @@ def global_headers(self):
             'user-agent': self.get_user_agent() 
         }
 
-    def __init__(self, config, call_back=None):
+    def __init__(self, config, auth_managers, call_back=None):
         self._config = config
+        self._auth_managers = auth_managers
         self._http_call_back = call_back
 
     @property
@@ -45,6 +47,10 @@ def config(self):
     def http_call_back(self):
         return self._http_call_back
 
+    @property
+    def auth_managers(self):
+        return self._auth_managers
+
     def validate_parameters(self, **kwargs):
         """Validates required parameters of an endpoint.
 
@@ -102,3 +108,25 @@ def get_user_agent(self):
 
         agent = APIHelper.append_url_with_template_parameters(user_agent, parameters)
         return agent.replace('  ', ' ')
+
+
+    def apply_auth_schemes(self, request, *auth_options):
+        auth_error_message = []
+        # traverse all options for OR auth
+        for option in auth_options:
+            # split the option for AND auths
+            schemes = option.split()
+            # check if all AND auth credentials exist in auth managers
+            if all(scheme in self.auth_managers and self.auth_managers[scheme].validate_arguments() for scheme in schemes):
+                # apply each auth scheme in AND case to request then break
+                for scheme in schemes:
+                    self.auth_managers[scheme].apply(request)
+                break
+            else:
+                for scheme in schemes:
+                    if scheme in self.auth_managers:
+                       auth_error_message.append(self.auth_managers[scheme].error_message())
+            #if the auth credentials for this auth option are missing then move to next
+            ## or if this is the last/only option then throw exception with reasonable message
+            if option is auth_options[-1]:
+                raise PermissionError("Required authentication is missing for: " + " and ".join(auth_error_message))
diff --git a/firstlanguage_python/controllers/basic_api_controller.py b/firstlanguage_python/controllers/basic_api_controller.py
index 7934254..ac0c1bd 100644
--- a/firstlanguage_python/controllers/basic_api_controller.py
+++ b/firstlanguage_python/controllers/basic_api_controller.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
@@ -10,7 +10,6 @@
 from firstlanguage_python.api_helper import APIHelper
 from firstlanguage_python.configuration import Server
 from firstlanguage_python.controllers.base_controller import BaseController
-from firstlanguage_python.http.auth.custom_header_auth import CustomHeaderAuth
 from firstlanguage_python.models.responsestem import Responsestem
 from firstlanguage_python.models.responselemma import Responselemma
 from firstlanguage_python.models.responsemorph import Responsemorph
@@ -25,10 +24,9 @@
 
 class BasicAPIsController(BaseController):
 
-    """A Controller to access Endpoints in the firstlanguage API."""
-
-    def __init__(self, config, call_back=None):
-        super(BasicAPIsController, self).__init__(config, call_back)
+    """A Controller to access Endpoints in the firstlanguage_python API."""
+    def __init__(self, config, auth_managers, call_back=None):
+        super(BasicAPIsController, self).__init__(config, auth_managers, call_back)
 
     def get_stemmer(self,
                     body):
@@ -103,9 +101,11 @@ def get_stemmer(self,
 
         # Prepare and execute request
         _request = self.config.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body))
-        CustomHeaderAuth.apply(self.config, _request)
+        # Apply authentication scheme on request
+        self.apply_auth_schemes(_request, 'global')
+
         _response = self.execute_request(_request)
-        print(_response.status_code)
+
         # Endpoint and global error handling using HTTP status codes.
         if _response.status_code == 400:
             raise ErrorsException('Error output', _response)
@@ -179,7 +179,9 @@ def get_lemma(self,
 
         # Prepare and execute request
         _request = self.config.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body))
-        CustomHeaderAuth.apply(self.config, _request)
+        # Apply authentication scheme on request
+        self.apply_auth_schemes(_request, 'global')
+
         _response = self.execute_request(_request)
 
         # Endpoint and global error handling using HTTP status codes.
@@ -253,7 +255,9 @@ def get_morph(self,
 
         # Prepare and execute request
         _request = self.config.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body))
-        CustomHeaderAuth.apply(self.config, _request)
+        # Apply authentication scheme on request
+        self.apply_auth_schemes(_request, 'global')
+
         _response = self.execute_request(_request)
 
         # Endpoint and global error handling using HTTP status codes.
@@ -329,7 +333,9 @@ def get_postag(self,
 
         # Prepare and execute request
         _request = self.config.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body))
-        CustomHeaderAuth.apply(self.config, _request)
+        # Apply authentication scheme on request
+        self.apply_auth_schemes(_request, 'global')
+
         _response = self.execute_request(_request)
 
         # Endpoint and global error handling using HTTP status codes.
diff --git a/firstlanguage_python/controllers/enterprise_only_controller.py b/firstlanguage_python/controllers/enterprise_only_controller.py
new file mode 100644
index 0000000..88e1543
--- /dev/null
+++ b/firstlanguage_python/controllers/enterprise_only_controller.py
@@ -0,0 +1,86 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage_python
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+from firstlanguage_python.api_helper import APIHelper
+from firstlanguage_python.configuration import Server
+from firstlanguage_python.controllers.base_controller import BaseController
+from firstlanguage_python.models.api_question_response import ApiQuestionResponse
+from firstlanguage_python.exceptions.errors_exception import ErrorsException
+from firstlanguage_python.exceptions.m_426_error_exception import M426ErrorException
+from firstlanguage_python.exceptions.api_exception import APIException
+
+
+class EnterpriseOnlyController(BaseController):
+
+    """A Controller to access Endpoints in the firstlanguage_python API."""
+    def __init__(self, config, auth_managers, call_back=None):
+        super(EnterpriseOnlyController, self).__init__(config, auth_managers, call_back)
+
+    def get_qa_enterprise(self,
+                          body=None):
+        """Does a POST request to /api/question.
+
+        # QA : Defintion and it's usage
+        A Question Answering System retrieves the answer relevant to the
+        question given by the user. A question answering system can be used
+        for building a text based chatbots, search engines etc. Our question
+        answering system  is mutilingual and supports 100 + languages. Please
+        use ISO 639-2 2 digit language code  to get results. For example, use
+        'en' for English, 'ta' for Tamil, 'hi' for Hindi, 'fr' for French
+        etc.
+        For ISO code reference, please check the link
+        https://www.loc.gov/standards/iso639-2/php/code_list.php
+
+        Args:
+            body (ApiQuestionRequest, optional): Add a JSON Input as per the
+                schema defined below
+
+        Returns:
+            ApiQuestionResponse: Response from the API. Answer for the
+                question posted.
+
+        Raises:
+            APIException: When an error occurs while fetching the data from
+                the remote API. This exception includes the HTTP Response
+                code, an error message, and the HTTP body that was received in
+                the request.
+
+        """
+
+        # Prepare query URL
+        _url_path = '/api/question'
+        _query_builder = self.config.get_base_uri()
+        _query_builder += _url_path
+        _query_url = APIHelper.clean_url(_query_builder)
+
+        # Prepare headers
+        _headers = {
+            'accept': 'application/json',
+            'Content-Type': 'application/json'
+        }
+
+        # Prepare and execute request
+        _request = self.config.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body))
+        # Apply authentication scheme on request
+        self.apply_auth_schemes(_request, 'global')
+
+        _response = self.execute_request(_request)
+
+        # Endpoint and global error handling using HTTP status codes.
+        if _response.status_code == 400:
+            raise ErrorsException('Bad Request', _response)
+        elif _response.status_code == 426:
+            raise M426ErrorException('Please use HTTPS protocol', _response)
+        elif _response.status_code == 429:
+            raise APIException('Too Many Requests', _response)
+        self.validate_response(_response)
+
+        decoded = APIHelper.json_deserialize(_response.text, ApiQuestionResponse.from_dictionary)
+
+        return decoded
diff --git a/firstlanguage_python/decorators.py b/firstlanguage_python/decorators.py
index caa44eb..cc33b83 100644
--- a/firstlanguage_python/decorators.py
+++ b/firstlanguage_python/decorators.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/exceptions/__pycache__/api_classify_426_error_exception.cpython-39.pyc b/firstlanguage_python/exceptions/__pycache__/api_classify_426_error_exception.cpython-39.pyc
index b9a0ff7fb5ae1e6c08e4512089c00125b1995a54..746f9e4a8ec5556620c272ec53647259247bb549 100644
GIT binary patch
diff --git a/firstlanguage_python/exceptions/__pycache__/api_exception.cpython-39.pyc b/firstlanguage_python/exceptions/__pycache__/api_exception.cpython-39.pyc
index 8c2f6d362363395c0994c1d12296594218b278ee..57b265b8038ba06f631b95e6e0f2783f38f5e8f4 100644
GIT binary patch
diff --git a/firstlanguage_python/exceptions/__pycache__/api_lemmatize_426_error_exception.cpython-39.pyc b/firstlanguage_python/exceptions/__pycache__/api_lemmatize_426_error_exception.cpython-39.pyc
index 21c054c5e8df00564cb4acef662b51d94ba36ea9..777f4d2b44be6aa82c563e9e58c8ddeaa0340568 100644
GIT binary patch
diff --git a/firstlanguage_python/exceptions/__pycache__/api_morph_426_error_exception.cpython-39.pyc b/firstlanguage_python/exceptions/__pycache__/api_morph_426_error_exception.cpython-39.pyc
index 66c8aab164b1308824215dbe9d47c7ba3fcc8b0d..60439832d9bd8d7fbd807f9268af9d736e7ae0af 100644
GIT binary patch
diff --git a/firstlanguage_python/exceptions/__pycache__/api_postag_426_error_exception.cpython-39.pyc b/firstlanguage_python/exceptions/__pycache__/api_postag_426_error_exception.cpython-39.pyc
index 3f8d659663eb54994b1389be9c41b800706b211d..ded934b31acc75fe49b8d4d47b5d73cacc9d2367 100644
GIT binary patch
diff --git a/firstlanguage_python/exceptions/__pycache__/api_stemmer_426_error_exception.cpython-39.pyc b/firstlanguage_python/exceptions/__pycache__/api_stemmer_426_error_exception.cpython-39.pyc
index 02be921489e3cf3fe7fed3d43df5dfd32f9d2ae6..51b101b761d042b1e27c38022e8f645e0ecf5de1 100644
GIT binary patch
diff --git a/firstlanguage_python/exceptions/__pycache__/errors_exception.cpython-39.pyc b/firstlanguage_python/exceptions/__pycache__/errors_exception.cpython-39.pyc
index 9089110571bafb6ee265801e3e896a106ab6f477..485861253779eb288c1d06957b510610d1164dd9 100644
GIT binary patch
diff --git a/firstlanguage_python/exceptions/__pycache__/m_426_error_exception.cpython-39.pyc b/firstlanguage_python/exceptions/__pycache__/m_426_error_exception.cpython-39.pyc
index cbe8ccae92734b9a8f66847256b9dd737ffd3bb6..77d91abc944d1a60ef7c269f7fe5cbd0d703f33a 100644
GIT binary patch
diff --git a/firstlanguage_python/exceptions/api_classify_426_error_exception.py b/firstlanguage_python/exceptions/api_classify_426_error_exception.py
index ffbb26f..7ee6b8d 100644
--- a/firstlanguage_python/exceptions/api_classify_426_error_exception.py
+++ b/firstlanguage_python/exceptions/api_classify_426_error_exception.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/exceptions/api_exception.py b/firstlanguage_python/exceptions/api_exception.py
index 6d428b2..f5d266c 100644
--- a/firstlanguage_python/exceptions/api_exception.py
+++ b/firstlanguage_python/exceptions/api_exception.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/exceptions/api_lemmatize_426_error_exception.py b/firstlanguage_python/exceptions/api_lemmatize_426_error_exception.py
index 830034f..1532400 100644
--- a/firstlanguage_python/exceptions/api_lemmatize_426_error_exception.py
+++ b/firstlanguage_python/exceptions/api_lemmatize_426_error_exception.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/exceptions/api_morph_426_error_exception.py b/firstlanguage_python/exceptions/api_morph_426_error_exception.py
index 7bef4f4..03ec56f 100644
--- a/firstlanguage_python/exceptions/api_morph_426_error_exception.py
+++ b/firstlanguage_python/exceptions/api_morph_426_error_exception.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/exceptions/api_postag_426_error_exception.py b/firstlanguage_python/exceptions/api_postag_426_error_exception.py
index ebc12c8..6f5e6ac 100644
--- a/firstlanguage_python/exceptions/api_postag_426_error_exception.py
+++ b/firstlanguage_python/exceptions/api_postag_426_error_exception.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/exceptions/api_stemmer_426_error_exception.py b/firstlanguage_python/exceptions/api_stemmer_426_error_exception.py
index 22e4084..0021870 100644
--- a/firstlanguage_python/exceptions/api_stemmer_426_error_exception.py
+++ b/firstlanguage_python/exceptions/api_stemmer_426_error_exception.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/exceptions/errors_exception.py b/firstlanguage_python/exceptions/errors_exception.py
index b41235e..c7eff4c 100644
--- a/firstlanguage_python/exceptions/errors_exception.py
+++ b/firstlanguage_python/exceptions/errors_exception.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/exceptions/m_426_error_exception.py b/firstlanguage_python/exceptions/m_426_error_exception.py
index afbbfce..0f18f0f 100644
--- a/firstlanguage_python/exceptions/m_426_error_exception.py
+++ b/firstlanguage_python/exceptions/m_426_error_exception.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/firstlanguage_client.py b/firstlanguage_python/firstlanguage_client.py
index 0eeb624..fe0fcba 100644
--- a/firstlanguage_python/firstlanguage_client.py
+++ b/firstlanguage_python/firstlanguage_client.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
@@ -10,21 +10,28 @@
 from firstlanguage_python.decorators import lazy_property
 from firstlanguage_python.configuration import Configuration
 from firstlanguage_python.configuration import Environment
+from firstlanguage_python.http.auth.custom_header_authentication import CustomHeaderAuthentication
 from firstlanguage_python.controllers.basic_api_controller\
     import BasicAPIsController
 from firstlanguage_python.controllers.advanced_api_controller\
     import AdvancedAPIsController
+from firstlanguage_python.controllers.enterprise_only_controller\
+    import EnterpriseOnlyController
 
 
 class Client(object):
 
     @lazy_property
     def basic_api(self):
-        return BasicAPIsController(self.config)
+        return BasicAPIsController(self.config, self.auth_managers)
 
     @lazy_property
     def advanced_api(self):
-        return AdvancedAPIsController(self.config)
+        return AdvancedAPIsController(self.config, self.auth_managers)
+
+    @lazy_property
+    def enterprise_only(self):
+        return EnterpriseOnlyController(self.config, self.auth_managers)
 
     def __init__(self, http_client_instance=None,
                  override_http_client_configuration=False, timeout=60,
@@ -45,3 +52,9 @@ def __init__(self, http_client_instance=None,
                                          environment=environment, apikey=apikey)
         else:
             self.config = config
+        self.initialize_auth_managers(self.config)
+
+    def initialize_auth_managers(self, config):
+        self.auth_managers = { key: None for key in ['global']}
+        self.auth_managers['global'] = CustomHeaderAuthentication(config.apikey)
+        return self.auth_managers
diff --git a/firstlanguage_python/http/__pycache__/__init__.cpython-39.pyc b/firstlanguage_python/http/__pycache__/__init__.cpython-39.pyc
index da8d012fc2f6d2d434738b042e5e11b60be7d389..d60f0ca2adb5fb27f893522dcd15db95bb6d8665 100644
GIT binary patch
diff --git a/firstlanguage_python/http/__pycache__/http_client.cpython-39.pyc b/firstlanguage_python/http/__pycache__/http_client.cpython-39.pyc
index faa1d21fff8e99737fea0289c507d774298fb2a4..f83e36f51668e11b59daa921e5b6d9928005a362 100644
GIT binary patch
diff --git a/firstlanguage_python/http/__pycache__/http_method_enum.cpython-39.pyc b/firstlanguage_python/http/__pycache__/http_method_enum.cpython-39.pyc
index c407c0e79fd741f5cdad14861b35dc08ce58654c..62be49bbc0d45a19a55ff924494e29128e67fda0 100644
GIT binary patch
diff --git a/firstlanguage_python/http/__pycache__/http_request.cpython-39.pyc b/firstlanguage_python/http/__pycache__/http_request.cpython-39.pyc
index 036b223544b71037e178a3d29e33d5ccbb58a72a..d22e5403f6ae6c6b0b5ca745d51d8a24199f3d9d 100644
GIT binary patch
diff --git a/firstlanguage_python/http/__pycache__/http_response.cpython-39.pyc b/firstlanguage_python/http/__pycache__/http_response.cpython-39.pyc
index 57cde19842a0f435fe2abbfe5fca7d1b56bf536d..f3e4ada595c3ec696947b3463a9e3e58a528e07c 100644
GIT binary patch
diff --git a/firstlanguage_python/http/__pycache__/requests_client.cpython-39.pyc b/firstlanguage_python/http/__pycache__/requests_client.cpython-39.pyc
index 5e76ddd65d87a70e70c653e44f3671e924d13a71..95202d7287ae5c01532bb4368debf36d1b0b43c2 100644
GIT binary patch
diff --git a/firstlanguage_python/http/auth/__init__.py b/firstlanguage_python/http/auth/__init__.py
index 0f713be..d530d06 100644
--- a/firstlanguage_python/http/auth/__init__.py
+++ b/firstlanguage_python/http/auth/__init__.py
@@ -1,3 +1,3 @@
 __all__ = [
-    'custom_header_auth',
+    'custom_header_authentication',
 ]
diff --git a/firstlanguage_python/http/auth/__pycache__/__init__.cpython-39.pyc b/firstlanguage_python/http/auth/__pycache__/__init__.cpython-39.pyc
index 32ff97fa58dcbcf56859702c6e0859e87e0a2549..2d12add1e9f62dbc9c10fbea6f74c346fc7b54d9 100644
GIT binary patch
diff --git a/firstlanguage_python/http/auth/custom_header_auth.py b/firstlanguage_python/http/auth/custom_header_auth.py
deleted file mode 100644
index 67878c2..0000000
--- a/firstlanguage_python/http/auth/custom_header_auth.py
+++ /dev/null
@@ -1,37 +0,0 @@
-# -*- coding: utf-8 -*-
-import random
-"""
-firstlanguage
-
-This file was automatically generated by APIMATIC v3.0 (
- https://www.apimatic.io ).
-"""
-
-user_agent_list = [
-'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Safari/605.1.15',
-'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0',
-'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36',
-'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:77.0) Gecko/20100101 Firefox/77.0',
-'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36',
-]
-
-
-class CustomHeaderAuth:
-
-    @staticmethod
-    def apply(config, http_request):
-        """ Add custom authentication to the request.
-
-        Args:
-            config (Configuration): The Configuration object which holds the
-                authentication information.
-            http_request (HttpRequest): The HttpRequest object to which
-                authentication will be added.
-
-        """
-        #Pick a random user agent
-        user_agent = random.choice(user_agent_list)
-        http_request.add_header("apikey", config.apikey)
-        http_request.add_header("User-Agent", user_agent)
-        http_request.add_header("Accept", "application/json")
-        http_request.add_header("Accept-Encoding", "gzip, deflate")
diff --git a/firstlanguage_python/http/auth/custom_header_authentication.py b/firstlanguage_python/http/auth/custom_header_authentication.py
new file mode 100644
index 0000000..44dd96c
--- /dev/null
+++ b/firstlanguage_python/http/auth/custom_header_authentication.py
@@ -0,0 +1,36 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage_python
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+
+class CustomHeaderAuthentication:
+
+    def __init__(self, apikey):
+        self._apikey = apikey
+
+    def validate_arguments(self):
+        if self._apikey:
+            return True
+        return False
+
+    def apply(self, http_request):
+        """ Add custom authentication to the request.
+
+        Args:
+            http_request (HttpRequest): The HttpRequest object to which
+                authentication will be added.
+
+        """
+        http_request.add_header("apikey", self._apikey)
+
+    def error_message(self):
+        """Display error message on occurrence of authentication faliure
+        in CustomHeaderAuthentication
+
+        """
+        return "CustomHeaderAuthentication: _apikey is undefined."
diff --git a/firstlanguage_python/http/http_call_back.py b/firstlanguage_python/http/http_call_back.py
index 76518de..4c2929d 100644
--- a/firstlanguage_python/http/http_call_back.py
+++ b/firstlanguage_python/http/http_call_back.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/http/http_client.py b/firstlanguage_python/http/http_client.py
index b92e9cd..468c058 100644
--- a/firstlanguage_python/http/http_client.py
+++ b/firstlanguage_python/http/http_client.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/http/http_method_enum.py b/firstlanguage_python/http/http_method_enum.py
index e960847..25a0867 100644
--- a/firstlanguage_python/http/http_method_enum.py
+++ b/firstlanguage_python/http/http_method_enum.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/http/http_request.py b/firstlanguage_python/http/http_request.py
index d6ee996..a519884 100644
--- a/firstlanguage_python/http/http_request.py
+++ b/firstlanguage_python/http/http_request.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/http/http_response.py b/firstlanguage_python/http/http_response.py
index cbaebd5..c4fb881 100644
--- a/firstlanguage_python/http/http_response.py
+++ b/firstlanguage_python/http/http_response.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/http/requests_client.py b/firstlanguage_python/http/requests_client.py
index f3ea2a3..096e1cc 100644
--- a/firstlanguage_python/http/requests_client.py
+++ b/firstlanguage_python/http/requests_client.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/models/__init__.py b/firstlanguage_python/models/__init__.py
index 3df7045..5d24e3c 100644
--- a/firstlanguage_python/models/__init__.py
+++ b/firstlanguage_python/models/__init__.py
@@ -6,32 +6,40 @@
     'text_input_tamil',
     'url_input',
     'url_input_classify',
-    'api_ner_request',
-    'api_ner_request_1',
+    'api_ner_request',
+    'api_ner_request_1',
     'api_ner_response',
-    'api_qa_request',
-    'api_qa_request_1',
+    'api_qa_request',
+    'api_qa_request_1',
     'api_qa_response',
-    'api_summary_request',
-    'api_summary_request_1',
-    'api_summary_response',
-    'api_translate_request',
-    'api_translate_request_1',
-    'api_translate_response',
+    'api_question_request',
+    'api_question_response',
+    'api_summary_request',
+    'api_summary_request_1',
+    'api_summary_response',
+    'api_tableqa_request',
+    'api_tableqa_request_1',
+    'api_tableqa_response',
+    'api_translate_request',
+    'api_translate_request_1',
+    'api_translate_response',
     'errors_1',
     'input',
     'input_1',
     'input_2',
     'input_3',
     'input_4',
-    'input_5',
-    'input_6',
-    'input_7',
-    'input_8',
-    'input_9',
-    'input_10',
-    'input_11',
-    'input_12',
+    'input_5',
+    'input_6',
+    'input_7',
+    'input_8',
+    'input_9',
+    'input_10',
+    'input_11',
+    'input_12',
+    'input_13',
+    'input_14',
+    'input_15',
     'orignal_string',
     'responselemma',
     'responsepo',
diff --git a/firstlanguage_python/models/__pycache__/__init__.cpython-39.pyc b/firstlanguage_python/models/__pycache__/__init__.cpython-39.pyc
index 481befb9a3930750b53e2d5c493fb47e2e8a1131..cd693a77c0ee124e5f716eec5aeaba8baef79e0a 100644
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/api_ner_response.cpython-39.pyc b/firstlanguage_python/models/__pycache__/api_ner_response.cpython-39.pyc
index 8e64de2e34409ddef6b04b6b93a777fa531a5feb..0014567f62f34b15fda47e82e108fc1d834fe1a7 100644
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/api_qa_response.cpython-39.pyc b/firstlanguage_python/models/__pycache__/api_qa_response.cpython-39.pyc
index 0c0f9d7987e3e165221c9bdc10562605bb3a56a6..3152f5156fba3fd74854c4152dff7b474e5fb724 100644
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/api_summary_response.cpython-39.pyc b/firstlanguage_python/models/__pycache__/api_summary_response.cpython-39.pyc
index e3a7b162c22454cc004678dc7ce4d519779b4ed2..c6a6ea8fe56a55cc558b8e10a4356ccf0807560f 100644
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/api_translate_response.cpython-39.pyc b/firstlanguage_python/models/__pycache__/api_translate_response.cpython-39.pyc
index 5d77ff7696b20e0fd2e73c19ed6d0e6c6f7b0cb2..94e3dc6822261ec81e2af68eba03fd4e1fb7eb84 100644
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/errors_1.cpython-39.pyc b/firstlanguage_python/models/__pycache__/errors_1.cpython-39.pyc
index 3837ae20f35e98909d2f972d010cb92f08ef6ceb..330864a6519996a6c68c6d5e4d8df29d3a303b79 100644
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/orignal_string.cpython-39.pyc b/firstlanguage_python/models/__pycache__/orignal_string.cpython-39.pyc
index bfb3a6b0d19a176b5defc54fe7358623a708752b..32ae5410c49940c79ac90c3e66ec8366ed053cdf 100644
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/responseclassify.cpython-39.pyc b/firstlanguage_python/models/__pycache__/responseclassify.cpython-39.pyc
index e14584279fa5f3bf2ef2f5d270677a5df64d60f3..0f6ff07204a1604863f2c98ad86ccc1ea5b97950 100644
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/responselemma.cpython-39.pyc b/firstlanguage_python/models/__pycache__/responselemma.cpython-39.pyc
index 8e6109568399337120be1edd20db23c848936a76..a6168b8a001ef25c4dbd439c781c3b30de32af6f 100644
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/responsemorph.cpython-39.pyc b/firstlanguage_python/models/__pycache__/responsemorph.cpython-39.pyc
index 6fc6447126fbeed9dda25992ec63982bc1aa50db..b6b8dd8801095664ebde65be862e48da4e570155 100644
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/responsepo.cpython-39.pyc b/firstlanguage_python/models/__pycache__/responsepo.cpython-39.pyc
index a10ce70f638205cccde953478dd08393642194b2..3ec392cd3c2fa2293b89382065b47ae0c49718b5 100644
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/responsestem.cpython-39.pyc b/firstlanguage_python/models/__pycache__/responsestem.cpython-39.pyc
index 5dc1a8598aed585ac8d6513566d76b78ed9a8f6f..6e574c184dadbc8979a3e7e72c585339dddfea86 100644
GIT binary patch
diff --git a/firstlanguage_python/models/api_ner_request.py b/firstlanguage_python/models/api_ner_request.py
index a64b966..ee2b0ca 100644
--- a/firstlanguage_python/models/api_ner_request.py
+++ b/firstlanguage_python/models/api_ner_request.py
@@ -1,12 +1,12 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguageapi
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
-from firstlanguage_python.models.input_7 import Input7
+from firstlanguage_python.models.input_10 import Input10
 import os
 from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
 from jsonschema import ValidationError
@@ -20,7 +20,7 @@ class ApiNerRequest(object):
     TODO: type model description here.
 
     Attributes:
-        input (Input7): TODO: type description here.
+        input (Input10): TODO: type description here.
 
     """
 
@@ -54,7 +54,7 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
-        input = Input7.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+        input = Input10.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
 
         # Return an object of this model
         return cls(input)
diff --git a/firstlanguage_python/models/api_ner_request_1.py b/firstlanguage_python/models/api_ner_request_1.py
index a63c3ff..6db97ec 100644
--- a/firstlanguage_python/models/api_ner_request_1.py
+++ b/firstlanguage_python/models/api_ner_request_1.py
@@ -1,12 +1,12 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguageapi
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
-from firstlanguage_python.models.input_8 import Input8
+from firstlanguage_python.models.input_11 import Input11
 import os
 from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
 from jsonschema import ValidationError
@@ -20,7 +20,7 @@ class ApiNerRequest1(object):
     TODO: type model description here.
 
     Attributes:
-        input (Input8): TODO: type description here.
+        input (Input11): TODO: type description here.
 
     """
 
@@ -54,7 +54,7 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
-        input = Input8.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+        input = Input11.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
 
         # Return an object of this model
         return cls(input)
diff --git a/firstlanguage_python/models/api_ner_response.py b/firstlanguage_python/models/api_ner_response.py
index 66fcecb..1e23f61 100644
--- a/firstlanguage_python/models/api_ner_response.py
+++ b/firstlanguage_python/models/api_ner_response.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/models/api_qa_request.py b/firstlanguage_python/models/api_qa_request.py
index 5f1d94d..4699d3b 100644
--- a/firstlanguage_python/models/api_qa_request.py
+++ b/firstlanguage_python/models/api_qa_request.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguageapi
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/models/api_qa_request_1.py b/firstlanguage_python/models/api_qa_request_1.py
index 9a2a505..d26347a 100644
--- a/firstlanguage_python/models/api_qa_request_1.py
+++ b/firstlanguage_python/models/api_qa_request_1.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguageapi
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/models/api_qa_response.py b/firstlanguage_python/models/api_qa_response.py
index 660a772..006040f 100644
--- a/firstlanguage_python/models/api_qa_response.py
+++ b/firstlanguage_python/models/api_qa_response.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/models/api_question_request.py b/firstlanguage_python/models/api_question_request.py
new file mode 100644
index 0000000..9727d9e
--- /dev/null
+++ b/firstlanguage_python/models/api_question_request.py
@@ -0,0 +1,73 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage_python
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+from firstlanguage_python.models.input_9 import Input9
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class ApiQuestionRequest(object):
+
+    """Implementation of the 'Api Question Request' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        input (Input9): TODO: type description here.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "input": 'input'
+    }
+
+    def __init__(self,
+                 input=None):
+        """Constructor for the ApiQuestionRequest class"""
+
+        # Initialize members of the class
+        self.input = input
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        input = Input9.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+
+        # Return an object of this model
+        return cls(input)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/api_question_response.py b/firstlanguage_python/models/api_question_response.py
new file mode 100644
index 0000000..f44c26e
--- /dev/null
+++ b/firstlanguage_python/models/api_question_response.py
@@ -0,0 +1,72 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage_python
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class ApiQuestionResponse(object):
+
+    """Implementation of the 'Api Question Response' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        answer (string): Answer to the question.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "answer": 'answer'
+    }
+
+    def __init__(self,
+                 answer=None):
+        """Constructor for the ApiQuestionResponse class"""
+
+        # Initialize members of the class
+        self.answer = answer
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        answer = dictionary.get('answer')
+
+        # Return an object of this model
+        return cls(answer)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/api_summary_request.py b/firstlanguage_python/models/api_summary_request.py
index f681ac9..60f552b 100644
--- a/firstlanguage_python/models/api_summary_request.py
+++ b/firstlanguage_python/models/api_summary_request.py
@@ -1,12 +1,12 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguageapi
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
-from firstlanguage_python.models.input_9 import Input9
+from firstlanguage_python.models.input_12 import Input12
 import os
 from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
 from jsonschema import ValidationError
@@ -20,7 +20,7 @@ class ApiSummaryRequest(object):
     TODO: type model description here.
 
     Attributes:
-        input (Input9): TODO: type description here.
+        input (Input12): TODO: type description here.
 
     """
 
@@ -54,7 +54,7 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
-        input = Input9.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+        input = Input12.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
 
         # Return an object of this model
         return cls(input)
diff --git a/firstlanguage_python/models/api_summary_request_1.py b/firstlanguage_python/models/api_summary_request_1.py
index db6db5d..5ba6ae4 100644
--- a/firstlanguage_python/models/api_summary_request_1.py
+++ b/firstlanguage_python/models/api_summary_request_1.py
@@ -1,12 +1,12 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguageapi
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
-from firstlanguage_python.models.input_10 import Input10
+from firstlanguage_python.models.input_13 import Input13
 import os
 from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
 from jsonschema import ValidationError
@@ -20,7 +20,7 @@ class ApiSummaryRequest1(object):
     TODO: type model description here.
 
     Attributes:
-        input (Input10): TODO: type description here.
+        input (Input13): TODO: type description here.
 
     """
 
@@ -54,7 +54,7 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
-        input = Input10.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+        input = Input13.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
 
         # Return an object of this model
         return cls(input)
diff --git a/firstlanguage_python/models/api_summary_response.py b/firstlanguage_python/models/api_summary_response.py
index 6a65aa6..822ec0f 100644
--- a/firstlanguage_python/models/api_summary_response.py
+++ b/firstlanguage_python/models/api_summary_response.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguageapi
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/models/api_tableqa_request.py b/firstlanguage_python/models/api_tableqa_request.py
new file mode 100644
index 0000000..f1ed3d4
--- /dev/null
+++ b/firstlanguage_python/models/api_tableqa_request.py
@@ -0,0 +1,73 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage_python
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+from firstlanguage_python.models.input_7 import Input7
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class ApiTableqaRequest(object):
+
+    """Implementation of the 'Api Tableqa Request' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        input (Input7): TODO: type description here.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "input": 'input'
+    }
+
+    def __init__(self,
+                 input=None):
+        """Constructor for the ApiTableqaRequest class"""
+
+        # Initialize members of the class
+        self.input = input
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        input = Input7.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+
+        # Return an object of this model
+        return cls(input)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/api_tableqa_request_1.py b/firstlanguage_python/models/api_tableqa_request_1.py
new file mode 100644
index 0000000..4bfa074
--- /dev/null
+++ b/firstlanguage_python/models/api_tableqa_request_1.py
@@ -0,0 +1,73 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage_python
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+from firstlanguage_python.models.input_8 import Input8
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class ApiTableqaRequest1(object):
+
+    """Implementation of the 'Api Tableqa Request1' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        input (Input8): TODO: type description here.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "input": 'input'
+    }
+
+    def __init__(self,
+                 input=None):
+        """Constructor for the ApiTableqaRequest1 class"""
+
+        # Initialize members of the class
+        self.input = input
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        input = Input8.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+
+        # Return an object of this model
+        return cls(input)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/api_tableqa_response.py b/firstlanguage_python/models/api_tableqa_response.py
new file mode 100644
index 0000000..e108424
--- /dev/null
+++ b/firstlanguage_python/models/api_tableqa_response.py
@@ -0,0 +1,84 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage_python
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class ApiTableqaResponse(object):
+
+    """Implementation of the 'Api Tableqa Response' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        query (string): Original Question
+        answer (list of string): TODO: type description here.
+        rows (list of string): TODO: type description here.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "query": 'query',
+        "answer": 'answer',
+        "rows": 'rows'
+    }
+
+    def __init__(self,
+                 query=None,
+                 answer=None,
+                 rows=None):
+        """Constructor for the ApiTableqaResponse class"""
+
+        # Initialize members of the class
+        self.query = query
+        self.answer = answer
+        self.rows = rows
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        query = dictionary.get('query')
+        answer = dictionary.get('answer')
+        rows = dictionary.get('rows')
+
+        # Return an object of this model
+        return cls(query,
+                   answer,
+                   rows)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/api_translate_request.py b/firstlanguage_python/models/api_translate_request.py
index 81a5726..d8f5947 100644
--- a/firstlanguage_python/models/api_translate_request.py
+++ b/firstlanguage_python/models/api_translate_request.py
@@ -1,12 +1,12 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguageapi
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
-from firstlanguage_python.models.input_11 import Input11
+from firstlanguage_python.models.input_14 import Input14
 import os
 from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
 from jsonschema import ValidationError
@@ -20,7 +20,7 @@ class ApiTranslateRequest(object):
     TODO: type model description here.
 
     Attributes:
-        input (Input11): TODO: type description here.
+        input (Input14): TODO: type description here.
 
     """
 
@@ -54,7 +54,7 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
-        input = Input11.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+        input = Input14.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
 
         # Return an object of this model
         return cls(input)
diff --git a/firstlanguage_python/models/api_translate_request_1.py b/firstlanguage_python/models/api_translate_request_1.py
index 475f928..caf5d92 100644
--- a/firstlanguage_python/models/api_translate_request_1.py
+++ b/firstlanguage_python/models/api_translate_request_1.py
@@ -1,12 +1,12 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguageapi
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
-from firstlanguage_python.models.input_12 import Input12
+from firstlanguage_python.models.input_15 import Input15
 import os
 from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
 from jsonschema import ValidationError
@@ -20,7 +20,7 @@ class ApiTranslateRequest1(object):
     TODO: type model description here.
 
     Attributes:
-        input (Input12): TODO: type description here.
+        input (Input15): TODO: type description here.
 
     """
 
@@ -54,7 +54,7 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
-        input = Input12.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+        input = Input15.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
 
         # Return an object of this model
         return cls(input)
diff --git a/firstlanguage_python/models/api_translate_response.py b/firstlanguage_python/models/api_translate_response.py
index 61aa7b9..8a561ef 100644
--- a/firstlanguage_python/models/api_translate_response.py
+++ b/firstlanguage_python/models/api_translate_response.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguageapi
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/models/errors_1.py b/firstlanguage_python/models/errors_1.py
index 05a1ae2..1239ee2 100644
--- a/firstlanguage_python/models/errors_1.py
+++ b/firstlanguage_python/models/errors_1.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/models/input.py b/firstlanguage_python/models/input.py
index 4904cd2..f99ee6c 100644
--- a/firstlanguage_python/models/input.py
+++ b/firstlanguage_python/models/input.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/models/input_1.py b/firstlanguage_python/models/input_1.py
index 454d209..16a3178 100644
--- a/firstlanguage_python/models/input_1.py
+++ b/firstlanguage_python/models/input_1.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/models/input_10.py b/firstlanguage_python/models/input_10.py
index 8f37f0e..2d2e72a 100644
--- a/firstlanguage_python/models/input_10.py
+++ b/firstlanguage_python/models/input_10.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguageapi
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
@@ -19,32 +19,27 @@ class Input10(object):
     TODO: type model description here.
 
     Attributes:
+        text (string): Named Entities will be marked from this text. Special
+            characters will not be stripped.
         lang (string): Allowed language code. Refer Allowed languages
             section.
-        content_type (string): Allowed values or html or text. If html is
-            specified all html tags and special characters will be stripped
-            before processing.
-        url (string): Text from this URL will be read and a summary generated
 
     """
 
     # Create a mapping from Model property names to API property names
     _names = {
-        "lang": 'lang',
-        "content_type": 'contentType',
-        "url": 'url'
+        "text": 'text',
+        "lang": 'lang'
     }
 
     def __init__(self,
-                 lang=None,
-                 content_type=None,
-                 url=None):
+                 text=None,
+                 lang=None):
         """Constructor for the Input10 class"""
 
         # Initialize members of the class
+        self.text = text
         self.lang = lang
-        self.content_type = content_type
-        self.url = url
 
     @classmethod
     def from_dictionary(cls,
@@ -64,14 +59,12 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
+        text = dictionary.get('text')
         lang = dictionary.get('lang')
-        content_type = dictionary.get('contentType')
-        url = dictionary.get('url')
 
         # Return an object of this model
-        return cls(lang,
-                   content_type,
-                   url)
+        return cls(text,
+                   lang)
 
     @classmethod
     def validate(cls, val):
diff --git a/firstlanguage_python/models/input_11.py b/firstlanguage_python/models/input_11.py
index 0129fd6..7e50339 100644
--- a/firstlanguage_python/models/input_11.py
+++ b/firstlanguage_python/models/input_11.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguageapi
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
@@ -19,26 +19,32 @@ class Input11(object):
     TODO: type model description here.
 
     Attributes:
-        text (string): Text for which translation should be generated
         lang (string): Allowed language code. Refer Allowed languages
             section.
+        content_type (string): Allowed values or html or text. If html is
+            specified all html tags and special characters will be stripped
+            before processing.
+        url (string): URL where the text for the NER task is stored.
 
     """
 
     # Create a mapping from Model property names to API property names
     _names = {
-        "text": 'text',
-        "lang": 'lang'
+        "lang": 'lang',
+        "content_type": 'contentType',
+        "url": 'url'
     }
 
     def __init__(self,
-                 text=None,
-                 lang=None):
+                 lang=None,
+                 content_type=None,
+                 url=None):
         """Constructor for the Input11 class"""
 
         # Initialize members of the class
-        self.text = text
         self.lang = lang
+        self.content_type = content_type
+        self.url = url
 
     @classmethod
     def from_dictionary(cls,
@@ -58,12 +64,14 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
-        text = dictionary.get('text')
         lang = dictionary.get('lang')
+        content_type = dictionary.get('contentType')
+        url = dictionary.get('url')
 
         # Return an object of this model
-        return cls(text,
-                   lang)
+        return cls(lang,
+                   content_type,
+                   url)
 
     @classmethod
     def validate(cls, val):
diff --git a/firstlanguage_python/models/input_12.py b/firstlanguage_python/models/input_12.py
index 4947896..b703d1b 100644
--- a/firstlanguage_python/models/input_12.py
+++ b/firstlanguage_python/models/input_12.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguageapi
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
@@ -19,33 +19,26 @@ class Input12(object):
     TODO: type model description here.
 
     Attributes:
+        text (string): Text for which summary should be generated
         lang (string): Allowed language code. Refer Allowed languages
             section.
-        content_type (string): Allowed values or html or text. If html is
-            specified all html tags and special characters will be stripped
-            before processing.
-        url (string): Text from this URL will be read and a translation
-            generated
 
     """
 
     # Create a mapping from Model property names to API property names
     _names = {
-        "lang": 'lang',
-        "content_type": 'contentType',
-        "url": 'url'
+        "text": 'text',
+        "lang": 'lang'
     }
 
     def __init__(self,
-                 lang=None,
-                 content_type=None,
-                 url=None):
+                 text=None,
+                 lang=None):
         """Constructor for the Input12 class"""
 
         # Initialize members of the class
+        self.text = text
         self.lang = lang
-        self.content_type = content_type
-        self.url = url
 
     @classmethod
     def from_dictionary(cls,
@@ -65,14 +58,12 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
+        text = dictionary.get('text')
         lang = dictionary.get('lang')
-        content_type = dictionary.get('contentType')
-        url = dictionary.get('url')
 
         # Return an object of this model
-        return cls(lang,
-                   content_type,
-                   url)
+        return cls(text,
+                   lang)
 
     @classmethod
     def validate(cls, val):
diff --git a/firstlanguage_python/models/input_13.py b/firstlanguage_python/models/input_13.py
new file mode 100644
index 0000000..43a63f3
--- /dev/null
+++ b/firstlanguage_python/models/input_13.py
@@ -0,0 +1,87 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage_python
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class Input13(object):
+
+    """Implementation of the 'Input13' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        lang (string): Allowed language code. Refer Allowed languages
+            section.
+        content_type (string): Allowed values or html or text. If html is
+            specified all html tags and special characters will be stripped
+            before processing.
+        url (string): Text from this URL will be read and a summary generated
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "lang": 'lang',
+        "content_type": 'contentType',
+        "url": 'url'
+    }
+
+    def __init__(self,
+                 lang=None,
+                 content_type=None,
+                 url=None):
+        """Constructor for the Input13 class"""
+
+        # Initialize members of the class
+        self.lang = lang
+        self.content_type = content_type
+        self.url = url
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        lang = dictionary.get('lang')
+        content_type = dictionary.get('contentType')
+        url = dictionary.get('url')
+
+        # Return an object of this model
+        return cls(lang,
+                   content_type,
+                   url)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/input_14.py b/firstlanguage_python/models/input_14.py
new file mode 100644
index 0000000..e8fa59f
--- /dev/null
+++ b/firstlanguage_python/models/input_14.py
@@ -0,0 +1,79 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage_python
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class Input14(object):
+
+    """Implementation of the 'Input14' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        text (string): Text for which translation should be generated
+        lang (string): Allowed language code. Refer Allowed languages
+            section.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "text": 'text',
+        "lang": 'lang'
+    }
+
+    def __init__(self,
+                 text=None,
+                 lang=None):
+        """Constructor for the Input14 class"""
+
+        # Initialize members of the class
+        self.text = text
+        self.lang = lang
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        text = dictionary.get('text')
+        lang = dictionary.get('lang')
+
+        # Return an object of this model
+        return cls(text,
+                   lang)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/input_15.py b/firstlanguage_python/models/input_15.py
new file mode 100644
index 0000000..7a27b2b
--- /dev/null
+++ b/firstlanguage_python/models/input_15.py
@@ -0,0 +1,88 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage_python
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class Input15(object):
+
+    """Implementation of the 'Input15' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        lang (string): Allowed language code. Refer Allowed languages
+            section.
+        content_type (string): Allowed values or html or text. If html is
+            specified all html tags and special characters will be stripped
+            before processing.
+        url (string): Text from this URL will be read and a translation
+            generated
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "lang": 'lang',
+        "content_type": 'contentType',
+        "url": 'url'
+    }
+
+    def __init__(self,
+                 lang=None,
+                 content_type=None,
+                 url=None):
+        """Constructor for the Input15 class"""
+
+        # Initialize members of the class
+        self.lang = lang
+        self.content_type = content_type
+        self.url = url
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        lang = dictionary.get('lang')
+        content_type = dictionary.get('contentType')
+        url = dictionary.get('url')
+
+        # Return an object of this model
+        return cls(lang,
+                   content_type,
+                   url)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/input_2.py b/firstlanguage_python/models/input_2.py
index cd891cf..30521ac 100644
--- a/firstlanguage_python/models/input_2.py
+++ b/firstlanguage_python/models/input_2.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/models/input_3.py b/firstlanguage_python/models/input_3.py
index c72be61..9ba2dd2 100644
--- a/firstlanguage_python/models/input_3.py
+++ b/firstlanguage_python/models/input_3.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/models/input_4.py b/firstlanguage_python/models/input_4.py
index 0c03dc9..ca9d9a4 100644
--- a/firstlanguage_python/models/input_4.py
+++ b/firstlanguage_python/models/input_4.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/models/input_5.py b/firstlanguage_python/models/input_5.py
index 8c08776..8922b56 100644
--- a/firstlanguage_python/models/input_5.py
+++ b/firstlanguage_python/models/input_5.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguageapi
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
@@ -25,7 +25,7 @@ class Input5(object):
         lang (string): Allowed language code. Refer Allowed languages
             section.
         context (string): Sentence or a paragraph. Special characters will not
-            be stripped.
+            be stripped. Maximum size limit is ~5KB of context text.
 
     """
 
diff --git a/firstlanguage_python/models/input_6.py b/firstlanguage_python/models/input_6.py
index a8f5977..d5ca1ad 100644
--- a/firstlanguage_python/models/input_6.py
+++ b/firstlanguage_python/models/input_6.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguageapi
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/models/input_7.py b/firstlanguage_python/models/input_7.py
index 9c9193d..9532468 100644
--- a/firstlanguage_python/models/input_7.py
+++ b/firstlanguage_python/models/input_7.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguageapi
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
@@ -19,27 +19,30 @@ class Input7(object):
     TODO: type model description here.
 
     Attributes:
-        text (string): Named Entities will be marked from this text. Special
-            characters will not be stripped.
-        lang (string): Allowed language code. Refer Allowed languages
-            section.
+        flattable (object): Table if JSON format
+        send_back_rows (bool): Send back original rows from which the answer
+            was extracted. Input either true or false.
+        questions (list of string): Array of questions.
 
     """
 
     # Create a mapping from Model property names to API property names
     _names = {
-        "text": 'text',
-        "lang": 'lang'
+        "flattable": 'flattable',
+        "send_back_rows": 'sendBackRows',
+        "questions": 'questions'
     }
 
     def __init__(self,
-                 text=None,
-                 lang=None):
+                 flattable=None,
+                 send_back_rows=None,
+                 questions=None):
         """Constructor for the Input7 class"""
 
         # Initialize members of the class
-        self.text = text
-        self.lang = lang
+        self.flattable = flattable
+        self.send_back_rows = send_back_rows
+        self.questions = questions
 
     @classmethod
     def from_dictionary(cls,
@@ -59,12 +62,14 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
-        text = dictionary.get('text')
-        lang = dictionary.get('lang')
+        flattable = dictionary.get('flattable')
+        send_back_rows = dictionary.get('sendBackRows')
+        questions = dictionary.get('questions')
 
         # Return an object of this model
-        return cls(text,
-                   lang)
+        return cls(flattable,
+                   send_back_rows,
+                   questions)
 
     @classmethod
     def validate(cls, val):
diff --git a/firstlanguage_python/models/input_8.py b/firstlanguage_python/models/input_8.py
index c8f442a..114ded9 100644
--- a/firstlanguage_python/models/input_8.py
+++ b/firstlanguage_python/models/input_8.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguageapi
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
@@ -19,32 +19,30 @@ class Input8(object):
     TODO: type model description here.
 
     Attributes:
-        lang (string): Allowed language code. Refer Allowed languages
-            section.
-        content_type (string): Allowed values or html or text. If html is
-            specified all html tags and special characters will be stripped
-            before processing.
-        url (string): URL where the text for the NER task is stored.
+        url (string): URL of the CSV file.
+        send_back_rows (bool): Send back original rows from which the answer
+            was extracted. Input either true or false.
+        questions (list of string): Array of questions
 
     """
 
     # Create a mapping from Model property names to API property names
     _names = {
-        "lang": 'lang',
-        "content_type": 'contentType',
-        "url": 'url'
+        "url": 'url',
+        "send_back_rows": 'sendBackRows',
+        "questions": 'questions'
     }
 
     def __init__(self,
-                 lang=None,
-                 content_type=None,
-                 url=None):
+                 url=None,
+                 send_back_rows=None,
+                 questions=None):
         """Constructor for the Input8 class"""
 
         # Initialize members of the class
-        self.lang = lang
-        self.content_type = content_type
         self.url = url
+        self.send_back_rows = send_back_rows
+        self.questions = questions
 
     @classmethod
     def from_dictionary(cls,
@@ -64,14 +62,14 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
-        lang = dictionary.get('lang')
-        content_type = dictionary.get('contentType')
         url = dictionary.get('url')
+        send_back_rows = dictionary.get('sendBackRows')
+        questions = dictionary.get('questions')
 
         # Return an object of this model
-        return cls(lang,
-                   content_type,
-                   url)
+        return cls(url,
+                   send_back_rows,
+                   questions)
 
     @classmethod
     def validate(cls, val):
diff --git a/firstlanguage_python/models/input_9.py b/firstlanguage_python/models/input_9.py
index 3f71686..103c23f 100644
--- a/firstlanguage_python/models/input_9.py
+++ b/firstlanguage_python/models/input_9.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguageapi
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
@@ -19,25 +19,25 @@ class Input9(object):
     TODO: type model description here.
 
     Attributes:
-        text (string): Text for which summary should be generated
-        lang (string): Allowed language code. Refer Allowed languages
-            section.
+        question (string): Question to be answered from the context loaded in
+            memory
+        lang (string): Language of the question
 
     """
 
     # Create a mapping from Model property names to API property names
     _names = {
-        "text": 'text',
+        "question": 'question',
         "lang": 'lang'
     }
 
     def __init__(self,
-                 text=None,
+                 question=None,
                  lang=None):
         """Constructor for the Input9 class"""
 
         # Initialize members of the class
-        self.text = text
+        self.question = question
         self.lang = lang
 
     @classmethod
@@ -58,11 +58,11 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
-        text = dictionary.get('text')
+        question = dictionary.get('question')
         lang = dictionary.get('lang')
 
         # Return an object of this model
-        return cls(text,
+        return cls(question,
                    lang)
 
     @classmethod
diff --git a/firstlanguage_python/models/orignal_string.py b/firstlanguage_python/models/orignal_string.py
index f38d874..bd1a319 100644
--- a/firstlanguage_python/models/orignal_string.py
+++ b/firstlanguage_python/models/orignal_string.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/models/responseclassify.py b/firstlanguage_python/models/responseclassify.py
index d7d6d6c..1dd4631 100644
--- a/firstlanguage_python/models/responseclassify.py
+++ b/firstlanguage_python/models/responseclassify.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/models/responselemma.py b/firstlanguage_python/models/responselemma.py
index 801edf6..f3c35d8 100644
--- a/firstlanguage_python/models/responselemma.py
+++ b/firstlanguage_python/models/responselemma.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/models/responsemorph.py b/firstlanguage_python/models/responsemorph.py
index ff8bd7e..8abae43 100644
--- a/firstlanguage_python/models/responsemorph.py
+++ b/firstlanguage_python/models/responsemorph.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/models/responsepo.py b/firstlanguage_python/models/responsepo.py
index affd65d..aecf2b1 100644
--- a/firstlanguage_python/models/responsepo.py
+++ b/firstlanguage_python/models/responsepo.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/models/responsestem.py b/firstlanguage_python/models/responsestem.py
index d76bcfd..ae40bd9 100644
--- a/firstlanguage_python/models/responsestem.py
+++ b/firstlanguage_python/models/responsestem.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/models/text_input.py b/firstlanguage_python/models/text_input.py
index 572f8a6..3187f33 100644
--- a/firstlanguage_python/models/text_input.py
+++ b/firstlanguage_python/models/text_input.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/models/text_input_classify.py b/firstlanguage_python/models/text_input_classify.py
index 6e70f3b..0949c2c 100644
--- a/firstlanguage_python/models/text_input_classify.py
+++ b/firstlanguage_python/models/text_input_classify.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/models/text_input_tamil.py b/firstlanguage_python/models/text_input_tamil.py
index 892a1af..6056bae 100644
--- a/firstlanguage_python/models/text_input_tamil.py
+++ b/firstlanguage_python/models/text_input_tamil.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/models/url_input.py b/firstlanguage_python/models/url_input.py
index 67c4bc8..3a3b2e0 100644
--- a/firstlanguage_python/models/url_input.py
+++ b/firstlanguage_python/models/url_input.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/models/url_input_classify.py b/firstlanguage_python/models/url_input_classify.py
index 1c87694..474e5d9 100644
--- a/firstlanguage_python/models/url_input_classify.py
+++ b/firstlanguage_python/models/url_input_classify.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/firstlanguage_python/schemas/api_ner_request.json b/firstlanguage_python/schemas/api_ner_request.json
index a948431..aafaee3 100644
--- a/firstlanguage_python/schemas/api_ner_request.json
+++ b/firstlanguage_python/schemas/api_ner_request.json
@@ -4,7 +4,7 @@
   "type": "object",
   "properties": {
     "input": {
-      "$ref": "Input7"
+      "$ref": "Input10"
     }
   },
   "required": [
diff --git a/firstlanguage_python/schemas/api_ner_request_1.json b/firstlanguage_python/schemas/api_ner_request_1.json
index 89a203f..2d7b44c 100644
--- a/firstlanguage_python/schemas/api_ner_request_1.json
+++ b/firstlanguage_python/schemas/api_ner_request_1.json
@@ -4,7 +4,7 @@
   "type": "object",
   "properties": {
     "input": {
-      "$ref": "Input8"
+      "$ref": "Input11"
     }
   },
   "required": [
diff --git a/firstlanguage_python/schemas/api_qa_response.json b/firstlanguage_python/schemas/api_qa_response.json
index 02a44f0..548c663 100644
--- a/firstlanguage_python/schemas/api_qa_response.json
+++ b/firstlanguage_python/schemas/api_qa_response.json
@@ -1,6 +1,16 @@
 {
   "id": "Api Qa Response",
   "title": "Api Qa Response",
+  "extensions": {
+    "x-examples": {
+      "example-1": {
+        "score": 0.028566665947437286,
+        "start": 0,
+        "end": 20,
+        "answer": "உப்பு, புளி, மிளகாய்"
+      }
+    }
+  },
   "type": "object",
   "properties": {
     "score": {
diff --git a/firstlanguage_python/schemas/api_question_request.json b/firstlanguage_python/schemas/api_question_request.json
new file mode 100644
index 0000000..1b19cb8
--- /dev/null
+++ b/firstlanguage_python/schemas/api_question_request.json
@@ -0,0 +1,23 @@
+{
+  "id": "Api Question Request",
+  "title": "Api Question Request",
+  "extensions": {
+    "x-examples": {
+      "example-1": {
+        "input": {
+          "question": "Who is father of Arya Stark?",
+          "lang": "en"
+        }
+      }
+    }
+  },
+  "type": "object",
+  "properties": {
+    "input": {
+      "$ref": "Input9"
+    }
+  },
+  "required": [
+    "input"
+  ]
+}
diff --git a/firstlanguage_python/schemas/api_question_response.json b/firstlanguage_python/schemas/api_question_response.json
new file mode 100644
index 0000000..f308257
--- /dev/null
+++ b/firstlanguage_python/schemas/api_question_response.json
@@ -0,0 +1,24 @@
+{
+  "id": "Api Question Response",
+  "title": "Api Question Response",
+  "extensions": {
+    "x-examples": {
+      "example-1": {
+        "score": 0.028566665947437286,
+        "start": 0,
+        "end": 20,
+        "answer": "உப்பு, புளி, மிளகாய்"
+      }
+    }
+  },
+  "type": "object",
+  "properties": {
+    "answer": {
+      "description": "Answer to the question.",
+      "type": "string"
+    }
+  },
+  "required": [
+    "answer"
+  ]
+}
diff --git a/firstlanguage_python/schemas/api_summary_request.json b/firstlanguage_python/schemas/api_summary_request.json
index 242ea7b..ec607f6 100644
--- a/firstlanguage_python/schemas/api_summary_request.json
+++ b/firstlanguage_python/schemas/api_summary_request.json
@@ -4,7 +4,7 @@
   "type": "object",
   "properties": {
     "input": {
-      "$ref": "Input9"
+      "$ref": "Input12"
     }
   },
   "required": [
diff --git a/firstlanguage_python/schemas/api_summary_request_1.json b/firstlanguage_python/schemas/api_summary_request_1.json
index 646350c..68505f5 100644
--- a/firstlanguage_python/schemas/api_summary_request_1.json
+++ b/firstlanguage_python/schemas/api_summary_request_1.json
@@ -4,7 +4,7 @@
   "type": "object",
   "properties": {
     "input": {
-      "$ref": "Input10"
+      "$ref": "Input13"
     }
   },
   "required": [
diff --git a/firstlanguage_python/schemas/api_summary_response.json b/firstlanguage_python/schemas/api_summary_response.json
index b2078de..3eb2f26 100644
--- a/firstlanguage_python/schemas/api_summary_response.json
+++ b/firstlanguage_python/schemas/api_summary_response.json
@@ -1,6 +1,24 @@
 {
   "id": "Api Summary Response",
   "title": "Api Summary Response",
+  "extensions": {
+    "x-examples": {
+      "example-1": [
+        {
+          "entity_group": "PER",
+          "word": "محمد",
+          "start": "4",
+          "end": "9"
+        },
+        {
+          "entity_group": "LOC",
+          "word": "برلين",
+          "start": "18",
+          "end": "24"
+        }
+      ]
+    }
+  },
   "type": "object",
   "properties": {
     "summary": {
diff --git a/firstlanguage_python/schemas/api_tableqa_request.json b/firstlanguage_python/schemas/api_tableqa_request.json
new file mode 100644
index 0000000..16c0a1b
--- /dev/null
+++ b/firstlanguage_python/schemas/api_tableqa_request.json
@@ -0,0 +1,13 @@
+{
+  "id": "Api Tableqa Request",
+  "title": "Api Tableqa Request",
+  "type": "object",
+  "properties": {
+    "input": {
+      "$ref": "Input7"
+    }
+  },
+  "required": [
+    "input"
+  ]
+}
diff --git a/firstlanguage_python/schemas/api_tableqa_request_1.json b/firstlanguage_python/schemas/api_tableqa_request_1.json
new file mode 100644
index 0000000..51bab74
--- /dev/null
+++ b/firstlanguage_python/schemas/api_tableqa_request_1.json
@@ -0,0 +1,13 @@
+{
+  "id": "Api Tableqa Request1",
+  "title": "Api Tableqa Request1",
+  "type": "object",
+  "properties": {
+    "input": {
+      "$ref": "Input8"
+    }
+  },
+  "required": [
+    "input"
+  ]
+}
diff --git a/firstlanguage_python/schemas/api_tableqa_response.json b/firstlanguage_python/schemas/api_tableqa_response.json
new file mode 100644
index 0000000..afd0a2d
--- /dev/null
+++ b/firstlanguage_python/schemas/api_tableqa_response.json
@@ -0,0 +1,25 @@
+{
+  "id": "Api Tableqa Response",
+  "title": "Api Tableqa Response",
+  "type": "object",
+  "properties": {
+    "query": {
+      "description": "Original Question",
+      "type": "string"
+    },
+    "answer": {
+      "description": "",
+      "type": "array",
+      "items": {
+        "type": "string"
+      }
+    },
+    "rows": {
+      "description": "",
+      "type": "array",
+      "items": {
+        "type": "string"
+      }
+    }
+  }
+}
diff --git a/firstlanguage_python/schemas/api_translate_request.json b/firstlanguage_python/schemas/api_translate_request.json
index 86efc41..2a5a005 100644
--- a/firstlanguage_python/schemas/api_translate_request.json
+++ b/firstlanguage_python/schemas/api_translate_request.json
@@ -4,7 +4,7 @@
   "type": "object",
   "properties": {
     "input": {
-      "$ref": "Input11"
+      "$ref": "Input14"
     }
   },
   "required": [
diff --git a/firstlanguage_python/schemas/api_translate_request_1.json b/firstlanguage_python/schemas/api_translate_request_1.json
index 0c8568c..d6fc1ce 100644
--- a/firstlanguage_python/schemas/api_translate_request_1.json
+++ b/firstlanguage_python/schemas/api_translate_request_1.json
@@ -4,7 +4,7 @@
   "type": "object",
   "properties": {
     "input": {
-      "$ref": "Input12"
+      "$ref": "Input15"
     }
   },
   "required": [
diff --git a/firstlanguage_python/schemas/api_translate_response.json b/firstlanguage_python/schemas/api_translate_response.json
index 6118231..9ffa4cb 100644
--- a/firstlanguage_python/schemas/api_translate_response.json
+++ b/firstlanguage_python/schemas/api_translate_response.json
@@ -1,6 +1,24 @@
 {
   "id": "Api Translate Response",
   "title": "Api Translate Response",
+  "extensions": {
+    "x-examples": {
+      "example-1": [
+        {
+          "entity_group": "PER",
+          "word": "محمد",
+          "start": "4",
+          "end": "9"
+        },
+        {
+          "entity_group": "LOC",
+          "word": "برلين",
+          "start": "18",
+          "end": "24"
+        }
+      ]
+    }
+  },
   "type": "object",
   "properties": {
     "generated_text": {
diff --git a/firstlanguage_python/schemas/input_10.json b/firstlanguage_python/schemas/input_10.json
index 7770493..a068a02 100644
--- a/firstlanguage_python/schemas/input_10.json
+++ b/firstlanguage_python/schemas/input_10.json
@@ -3,22 +3,17 @@
   "title": "Input10",
   "type": "object",
   "properties": {
-    "lang": {
-      "description": "Allowed language code. Refer Allowed languages section.",
-      "type": "string"
-    },
-    "contentType": {
-      "description": "Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing.",
+    "text": {
+      "description": "Named Entities will be marked from this text. Special characters will not be stripped.",
       "type": "string"
     },
-    "url": {
-      "description": "Text from this URL will be read and a summary generated",
+    "lang": {
+      "description": "Allowed language code. Refer Allowed languages section.",
       "type": "string"
     }
   },
   "required": [
-    "lang",
-    "contentType",
-    "url"
+    "text",
+    "lang"
   ]
 }
diff --git a/firstlanguage_python/schemas/input_11.json b/firstlanguage_python/schemas/input_11.json
index bf46c17..2c55bcf 100644
--- a/firstlanguage_python/schemas/input_11.json
+++ b/firstlanguage_python/schemas/input_11.json
@@ -3,17 +3,22 @@
   "title": "Input11",
   "type": "object",
   "properties": {
-    "text": {
-      "description": "Text for which translation should be generated",
-      "type": "string"
-    },
     "lang": {
       "description": "Allowed language code. Refer Allowed languages section.",
       "type": "string"
+    },
+    "contentType": {
+      "description": "Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing.",
+      "type": "string"
+    },
+    "url": {
+      "description": "URL where the text for the NER task is stored.",
+      "type": "string"
     }
   },
   "required": [
-    "text",
-    "lang"
+    "lang",
+    "contentType",
+    "url"
   ]
 }
diff --git a/firstlanguage_python/schemas/input_12.json b/firstlanguage_python/schemas/input_12.json
index 5ebe442..50e9287 100644
--- a/firstlanguage_python/schemas/input_12.json
+++ b/firstlanguage_python/schemas/input_12.json
@@ -3,22 +3,17 @@
   "title": "Input12",
   "type": "object",
   "properties": {
-    "lang": {
-      "description": "Allowed language code. Refer Allowed languages section.",
-      "type": "string"
-    },
-    "contentType": {
-      "description": "Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing.",
+    "text": {
+      "description": "Text for which summary should be generated",
       "type": "string"
     },
-    "url": {
-      "description": "Text from this URL will be read and a translation generated",
+    "lang": {
+      "description": "Allowed language code. Refer Allowed languages section.",
       "type": "string"
     }
   },
   "required": [
-    "lang",
-    "contentType",
-    "url"
+    "text",
+    "lang"
   ]
 }
diff --git a/firstlanguage_python/schemas/input_13.json b/firstlanguage_python/schemas/input_13.json
new file mode 100644
index 0000000..a30f8f6
--- /dev/null
+++ b/firstlanguage_python/schemas/input_13.json
@@ -0,0 +1,24 @@
+{
+  "id": "Input13",
+  "title": "Input13",
+  "type": "object",
+  "properties": {
+    "lang": {
+      "description": "Allowed language code. Refer Allowed languages section.",
+      "type": "string"
+    },
+    "contentType": {
+      "description": "Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing.",
+      "type": "string"
+    },
+    "url": {
+      "description": "Text from this URL will be read and a summary generated",
+      "type": "string"
+    }
+  },
+  "required": [
+    "lang",
+    "contentType",
+    "url"
+  ]
+}
diff --git a/firstlanguage_python/schemas/input_14.json b/firstlanguage_python/schemas/input_14.json
new file mode 100644
index 0000000..b8e13ca
--- /dev/null
+++ b/firstlanguage_python/schemas/input_14.json
@@ -0,0 +1,19 @@
+{
+  "id": "Input14",
+  "title": "Input14",
+  "type": "object",
+  "properties": {
+    "text": {
+      "description": "Text for which translation should be generated",
+      "type": "string"
+    },
+    "lang": {
+      "description": "Allowed language code. Refer Allowed languages section.",
+      "type": "string"
+    }
+  },
+  "required": [
+    "text",
+    "lang"
+  ]
+}
diff --git a/firstlanguage_python/schemas/input_15.json b/firstlanguage_python/schemas/input_15.json
new file mode 100644
index 0000000..13246aa
--- /dev/null
+++ b/firstlanguage_python/schemas/input_15.json
@@ -0,0 +1,24 @@
+{
+  "id": "Input15",
+  "title": "Input15",
+  "type": "object",
+  "properties": {
+    "lang": {
+      "description": "Allowed language code. Refer Allowed languages section.",
+      "type": "string"
+    },
+    "contentType": {
+      "description": "Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing.",
+      "type": "string"
+    },
+    "url": {
+      "description": "Text from this URL will be read and a translation generated",
+      "type": "string"
+    }
+  },
+  "required": [
+    "lang",
+    "contentType",
+    "url"
+  ]
+}
diff --git a/firstlanguage_python/schemas/input_5.json b/firstlanguage_python/schemas/input_5.json
index 6967df1..a934a6f 100644
--- a/firstlanguage_python/schemas/input_5.json
+++ b/firstlanguage_python/schemas/input_5.json
@@ -12,7 +12,7 @@
       "type": "string"
     },
     "context": {
-      "description": "Sentence or a paragraph. Special characters will not be stripped.",
+      "description": "Sentence or a paragraph. Special characters will not be stripped. Maximum size limit is ~5KB of context text.",
       "type": "string"
     }
   },
diff --git a/firstlanguage_python/schemas/input_7.json b/firstlanguage_python/schemas/input_7.json
index e4ca95e..338dcf1 100644
--- a/firstlanguage_python/schemas/input_7.json
+++ b/firstlanguage_python/schemas/input_7.json
@@ -3,17 +3,25 @@
   "title": "Input7",
   "type": "object",
   "properties": {
-    "text": {
-      "description": "Named Entities will be marked from this text. Special characters will not be stripped.",
-      "type": "string"
+    "flattable": {
+      "description": "Table if JSON format",
+      "type": "object"
     },
-    "lang": {
-      "description": "Allowed language code. Refer Allowed languages section.",
-      "type": "string"
+    "sendBackRows": {
+      "description": "Send back original rows from which the answer was extracted. Input either true or false.",
+      "type": "boolean"
+    },
+    "questions": {
+      "description": "Array of questions.",
+      "type": "array",
+      "items": {
+        "type": "string"
+      }
     }
   },
   "required": [
-    "text",
-    "lang"
+    "flattable",
+    "sendBackRows",
+    "questions"
   ]
 }
diff --git a/firstlanguage_python/schemas/input_8.json b/firstlanguage_python/schemas/input_8.json
index 852085c..eb332a7 100644
--- a/firstlanguage_python/schemas/input_8.json
+++ b/firstlanguage_python/schemas/input_8.json
@@ -3,22 +3,25 @@
   "title": "Input8",
   "type": "object",
   "properties": {
-    "lang": {
-      "description": "Allowed language code. Refer Allowed languages section.",
+    "url": {
+      "description": "URL of the CSV file.",
       "type": "string"
     },
-    "contentType": {
-      "description": "Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing.",
-      "type": "string"
+    "sendBackRows": {
+      "description": "Send back original rows from which the answer was extracted. Input either true or false.",
+      "type": "boolean"
     },
-    "url": {
-      "description": "URL where the text for the NER task is stored.",
-      "type": "string"
+    "questions": {
+      "description": "Array of questions",
+      "type": "array",
+      "items": {
+        "type": "string"
+      }
     }
   },
   "required": [
-    "lang",
-    "contentType",
-    "url"
+    "url",
+    "sendBackRows",
+    "questions"
   ]
 }
diff --git a/firstlanguage_python/schemas/input_9.json b/firstlanguage_python/schemas/input_9.json
index 96035df..7a62279 100644
--- a/firstlanguage_python/schemas/input_9.json
+++ b/firstlanguage_python/schemas/input_9.json
@@ -3,17 +3,17 @@
   "title": "Input9",
   "type": "object",
   "properties": {
-    "text": {
-      "description": "Text for which summary should be generated",
+    "question": {
+      "description": "Question to be answered from the context loaded in memory",
       "type": "string"
     },
     "lang": {
-      "description": "Allowed language code. Refer Allowed languages section.",
+      "description": "Language of the question",
       "type": "string"
     }
   },
   "required": [
-    "text",
+    "question",
     "lang"
   ]
 }
diff --git a/firstlanguage_python/schemas/responseclassify.json b/firstlanguage_python/schemas/responseclassify.json
index 49e19b5..5ba90dc 100644
--- a/firstlanguage_python/schemas/responseclassify.json
+++ b/firstlanguage_python/schemas/responseclassify.json
@@ -1,6 +1,9 @@
 {
   "id": "responseclassify",
   "title": "responseclassify",
+  "extensions": {
+    "x-internal": true
+  },
   "type": "object",
   "properties": {
     "labels": {
diff --git a/firstlanguage_python/schemas/responsemorph.json b/firstlanguage_python/schemas/responsemorph.json
index c63a53c..97bb7fe 100644
--- a/firstlanguage_python/schemas/responsemorph.json
+++ b/firstlanguage_python/schemas/responsemorph.json
@@ -1,6 +1,9 @@
 {
   "id": "responsemorph",
   "title": "responsemorph",
+  "extensions": {
+    "x-internal": true
+  },
   "type": "object",
   "properties": {
     "orignalString": {
diff --git a/firstlanguage_python/schemas/text_input.json b/firstlanguage_python/schemas/text_input.json
index 5adfee6..8a12e43 100644
--- a/firstlanguage_python/schemas/text_input.json
+++ b/firstlanguage_python/schemas/text_input.json
@@ -1,6 +1,9 @@
 {
   "id": "TextInput",
   "title": "TextInput",
+  "extensions": {
+    "x-internal": true
+  },
   "type": "object",
   "properties": {
     "input": {
diff --git a/firstlanguage_python/schemas/text_input_classify.json b/firstlanguage_python/schemas/text_input_classify.json
index 7e3da18..1bcd2b0 100644
--- a/firstlanguage_python/schemas/text_input_classify.json
+++ b/firstlanguage_python/schemas/text_input_classify.json
@@ -1,6 +1,9 @@
 {
   "id": "TextInputClassify",
   "title": "TextInputClassify",
+  "extensions": {
+    "x-internal": true
+  },
   "type": "object",
   "properties": {
     "input": {
diff --git a/firstlanguage_python/schemas/text_input_tamil.json b/firstlanguage_python/schemas/text_input_tamil.json
index 2a781c1..f501335 100644
--- a/firstlanguage_python/schemas/text_input_tamil.json
+++ b/firstlanguage_python/schemas/text_input_tamil.json
@@ -1,6 +1,17 @@
 {
   "id": "TextInputTamil",
   "title": "TextInputTamil",
+  "extensions": {
+    "x-examples": {
+      "example-1": {
+        "input": {
+          "text": "அவள் வேகமாக ஓடினாள்",
+          "lang": "ta"
+        }
+      }
+    },
+    "x-internal": true
+  },
   "type": "object",
   "properties": {
     "input": {
diff --git a/firstlanguage_python/schemas/url_input.json b/firstlanguage_python/schemas/url_input.json
index f5ce13a..c5a61bc 100644
--- a/firstlanguage_python/schemas/url_input.json
+++ b/firstlanguage_python/schemas/url_input.json
@@ -1,6 +1,18 @@
 {
   "id": "URLInput",
   "title": "URLInput",
+  "extensions": {
+    "x-examples": {
+      "example-1": {
+        "input": {
+          "url": "http://news.bbc.co.uk/2/hi/health/2284783.stm",
+          "lang": "en",
+          "contentType": "html"
+        }
+      }
+    },
+    "x-internal": true
+  },
   "type": "object",
   "properties": {
     "input": {
diff --git a/firstlanguage_python/schemas/url_input_classify.json b/firstlanguage_python/schemas/url_input_classify.json
index b91dab1..055c9d8 100644
--- a/firstlanguage_python/schemas/url_input_classify.json
+++ b/firstlanguage_python/schemas/url_input_classify.json
@@ -1,6 +1,9 @@
 {
   "id": "URLInputClassify",
   "title": "URLInputClassify",
+  "extensions": {
+    "x-internal": true
+  },
   "type": "object",
   "properties": {
     "input": {
diff --git a/firstlanguage_python/utilities/__pycache__/__init__.cpython-39.pyc b/firstlanguage_python/utilities/__pycache__/__init__.cpython-39.pyc
index bc4d9cb362201f284a9a3787f6a15cf32d22316a..17d24a5c99aaa2fabc7591e8db143b85f7e4cedf 100644
GIT binary patch
diff --git a/firstlanguage_python/utilities/__pycache__/schema_validator_wrapper.cpython-39.pyc b/firstlanguage_python/utilities/__pycache__/schema_validator_wrapper.cpython-39.pyc
index 92985b60fc739e9921c357a9cb93a44cc59fae61..dd0c56dc956ce080ac1ea80177da106455f057a7 100644
GIT binary patch
diff --git a/firstlanguage_python/utilities/file_wrapper.py b/firstlanguage_python/utilities/file_wrapper.py
index 5e0b30e..21c594d 100644
--- a/firstlanguage_python/utilities/file_wrapper.py
+++ b/firstlanguage_python/utilities/file_wrapper.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 
 """
-firstlanguage
+firstlanguage_python
 
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
diff --git a/requirements.txt b/requirements.txt
index 42785d1..c536813 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,5 +1,5 @@
 jsonpickle~=1.4, >= 1.4.1
-requests~=2.24
+requests~=2.25
 cachecontrol~=0.12.6
 python-dateutil~=2.8.1
 enum34~=1.1, >=1.1.10
diff --git a/setup.py b/setup.py
index 0a8de4e..2f18d67 100644
--- a/setup.py
+++ b/setup.py
@@ -12,7 +12,7 @@
 
 setup(
     name='firstlanguage_python',
-    version='1.0.1',
+    version='1.0.2',
     description='Python client library for FirstLanguage API',
     long_description=long_description,
     long_description_content_type="text/markdown",
@@ -24,7 +24,7 @@
     packages=find_packages(),
     install_requires=[
         'jsonpickle~=1.4, >= 1.4.1',
-        'requests~=2.24',
+        'requests~=2.25',
         'cachecontrol~=0.12.6',
         'python-dateutil~=2.8.1',
         'enum34~=1.1, >=1.1.10',
diff --git a/tests/controllers/controller_test_base.py b/tests/controllers/controller_test_base.py
index 83d197c..69d167b 100644
--- a/tests/controllers/controller_test_base.py
+++ b/tests/controllers/controller_test_base.py
@@ -26,7 +26,10 @@ def setUpClass(cls):
         cls.assert_precision = 0.01
         cls.config = ControllerTestBase.create_configuration()
         cls.client = Client()
-
+        cls.auth_managers = cls.client.auth_managers
     @staticmethod
     def create_configuration():
         return Configuration()
+
+if __name__ == '__main__':
+    unittest.main()
\ No newline at end of file
diff --git a/tests/controllers/test_advanced_ap_is_controller.py b/tests/controllers/test_advanced_ap_is_controller.py
index 93984fc..95d24ec 100644
--- a/tests/controllers/test_advanced_ap_is_controller.py
+++ b/tests/controllers/test_advanced_ap_is_controller.py
@@ -31,10 +31,13 @@ def setUpClass(cls):
     ## Languages covered:
     def test_get_qa(self):
         # Parameters for the API call
-        reqbody='{ "input":{ "question":"எவை மூன்றும் எப்போதும் ஒன்றாகவே இருக்கும்?", "lang":"ta", "context": "உப்பு, புளி, மிளகாய் மூன்றும் எப்போதும் ஒன்றாகவே இருக்கும். ஒருநாள், “குழம்பிற்கு யார் முக்கியம்? நீயா! நானா!” என்று சண்டை போட்டன. மூன்று பேரும் தனிதனியாகச் சென்று குழம்பில் சேரலாம் என்று முடிவு செய்தன. முதல் நாள், உப்பு மட்டும் குழம்பில் சேர்ந்து கொண்டது. “ஆ! ஒரே உப்பு! வாயில் வைக்க முடியவில்லை!” என்று எல்லோரும் கத்தினார்கள்" } }'
-
-        body = jsonpickle.decode(reqbody)
-        #body = None
+        body = AdvancedAPIs.deserialize_getQA('{"input":{"question":"எவை மூன்றும் எப்போதும் ஒன்றாகவே இருக்கும்?",'
+            '"lang":"ta","context":"உப்பு, புளி, மிளகாய் மூன்றும் எப்போதும் ஒன்'
+            'றாகவே இருக்கும். ஒருநாள், “குழம்பிற்கு யார் முக்கியம்? நீயா! நானா!'
+            '” என்று சண்டை போட்டன. மூன்று பேரும் தனிதனியாகச் சென்று குழம்பில் ச'
+            'ேரலாம் என்று முடிவு செய்தன. முதல் நாள், உப்பு மட்டும் குழம்பில் சே'
+            'ர்ந்து கொண்டது. “ஆ! ஒரே உப்பு! வாயில் வைக்க முடியவில்லை!” என்று எல'
+            '்லோரும் கத்தினார்கள்"}}')
 
         # Perform the API call through the SDK function
         result = self.controller.get_qa(body)
@@ -44,7 +47,7 @@ def test_get_qa(self):
 
         # Test headers
         expected_headers = {}
-        expected_headers['content-type'] = 'application/json; charset=utf-8'
+        expected_headers['content-type'] = 'application/json'
 
         self.assertTrue(TestHelper.match_headers(expected_headers, self.response_catcher.response.headers))
 
@@ -56,27 +59,81 @@ def test_get_qa(self):
         received_body = APIHelper.json_deserialize(self.response_catcher.response.text)
         self.assertTrue(TestHelper.match_body(expected_body, received_body))
 
+    # # TableQA : Defintion and it's usage
+    #
+    #Table QA uses TAPAS based model to get answers from table input. The table can be parsed into a JSON object or it can be a link to a CSV file. Currently only Plain CSV file is supported. 
+    #
+    #This API works only for English language currently
+    #
+    #Example for flattend table in JSON Format:<br/>
+    #{"Cities": ["Paris, France", "London, England", "Lyon, France"], "Inhabitants": ["2.161", "8.982", "0.513"]}
+    #
+    #The API can return the original table rows from which the answer was extracted based on the flag 'sendBackRows'
+    def test_get_table_qa(self):
+        # Parameters for the API call
+        body = AdvancedAPIs.deserialize_getTableQA('{"input":{"flattable":{"Cities":["Paris, France","London, England"'
+            ',"Lyon, France"],"Inhabitants":["2.161","8.982","0.513"]},"sendBac'
+            'kRows":false,"questions":["How many inhabitants in France","How Ma'
+            'ny inhabitants in England"]}}')
+
+        # Perform the API call through the SDK function
+        result = self.controller.get_table_qa(body)
+
+        # Test response code
+        self.assertEquals(self.response_catcher.response.status_code, 200)
+
+        # Test headers
+        expected_headers = {}
+        expected_headers['content-type'] = 'application/json'
+
+        self.assertTrue(TestHelper.match_headers(expected_headers, self.response_catcher.response.headers))
 
-    # # NER : Defintion and it's usage
+        
+        # Test whether the captured response is as we expected
+        self.assertIsNotNone(result)
+        expected_body = APIHelper.json_deserialize('[{"query":"How many inhabitants in France","answer":["SUM > 2.674"'
+            '],"rows":["Paris, France,2.161","Lyon, France,0.513"]},{"query":"H'
+            'ow Many inhabitants in England","answer":["SUM > 8.982"],"rows":["'
+            'London, England,8.982"]}]')
+        received_body = APIHelper.json_deserialize(self.response_catcher.response.text)
+        self.assertTrue(TestHelper.match_body(expected_body, received_body))
+
+    # # Named Entity Recognition : Defintion and it's usage
+    #Named Entity Recognitiion  (NER) is extracting the specific Nouns such as, Person Names, Location names, Organization Names, Currency , Dates. It is a classification task. NER can be used as a sub-task in applications such as Search Systems, Chatbots, Question Answering systems, Text Summarization etc. 
     #
     ## Languages covered:
+    #
+    #| Languages          | ISO Code |
+    #|--------------------|----------|
+    #| Arabic             | ar       |
+    #| Chinese            | zh       |
+    #| Dutch              | nl       |
+    #| English            | en       |
+    #| French             | fr       |
+    #| German             | de       |
+    #| Italian            | it       |
+    #| Latvian            | lv       |
+    #| Portuguese         | pt       |
+    #| Spanish            | es       |
+    #
+    #For other languages we cannot guarantee results but you can try with ISO code. 
+    #For ISO code reference, please check the link https://www.loc.gov/standards/iso639-2/php/code_list.php
+    #
+    #
+    #
     def test_get_ner(self):
         # Parameters for the API call
-        
-        reqbody='{  "input":{ "lang":"ar", "text": "إسمي محمد وأسكن في برلين" }}'
-
-        body = jsonpickle.decode(reqbody)
-        #body = None
+        body = AdvancedAPIs.deserialize_getNER('{"input":{"lang":"ar","text":"إسمي محمد وأسكن في برلين"}}')
 
         # Perform the API call through the SDK function
         result = self.controller.get_ner(body)
-        
+
         # Test response code
         self.assertEquals(self.response_catcher.response.status_code, 200)
 
         # Test headers
         expected_headers = {}
-        expected_headers['content-type'] = 'application/json; charset=utf-8'
+        expected_headers['content-type'] = 'application/json'
 
         self.assertTrue(TestHelper.match_headers(expected_headers, self.response_catcher.response.headers))
 
@@ -88,4 +145,185 @@ def test_get_ner(self):
         received_body = APIHelper.json_deserialize(self.response_catcher.response.text)
         self.assertTrue(TestHelper.match_body(expected_body, received_body))
 
+    # # Summarization : Defintion and it's usage
+    #Summarization generates a crisp content of the large input text which is highly coherent. 
+    #
+    #
+    #| Languages               | ISO Code |
+    #|-------------------------|----------|
+    #| Amharic                 | am       |
+    #| Arabic                  |  ar      |
+    #| Azerbaijani             |  az      |
+    #| Bengali                 |  bn      |
+    #| Burmese                 |  my      |
+    #| Chinese                 |  zh      |
+    #| English                 |  en      |
+    #| French                  |  fr      |
+    #| Gaelic; Scottish Gaelic | gd       |
+    #| Gujarati                |  gu      |
+    #| Hausa                   |  ha      |
+    #| Hindi                   |  hi      |
+    #| Igbo                    |  ig      |
+    #| Indonesian              |  id      |
+    #| Japanese                |  ja      |
+    #| Kirghiz; Kyrgyz         | ky       |
+    #| Korean                  |  ko      |
+    #| Marathi                 |  mr      |
+    #| Nepali                  |  ne      |
+    #| Oromo                   | om       |
+    #| Persian                 | fa       |
+    #| Portuguese              |  pt      |
+    #| Punjabi                 |  pa      |
+    #| Pushto; Pashto          | ps       |
+    #| Rundi                   | rn       |
+    #| Russian                 | ru       |
+    #| Serbian                 |  sr      |
+    #| Sinhala; Sinhalese      |  si      |
+    #| Somali                  |  so      |
+    #| Spanish; Castilian      |  es      |
+    #| Swahili                 |  sw      |
+    #| Tamil                   |  ta      |
+    #| Telugu                  |  te      |
+    #| Thai                    |  th      |
+    #| Tigrinya                |  ti      |
+    #| Turkish                 |  tr      |
+    #| Ukrainian               |  uk      |
+    #| Urdu                    |  ur      |
+    #| Uzbek                   |  uz      |
+    #| Vietnamese              |  vi      |
+    #| Welsh                   |  cy      |
+    #| Yoruba                  |  yo      |
+    #
+    #
+    #
+    def test_get_summary(self):
+        # Parameters for the API call
+        body = AdvancedAPIs.deserialize_getSummary('{"input":{"lang":"en","text":"Videos that say approved vaccines ar'
+            'e dangerous and cause autism, cancer or infertility are among thos'
+            'e that will be taken down, the company said. The policy includes t'
+            'he termination of accounts of anti-vaccine influencers. Tech giant'
+            's have been criticised for not doing more to counter false health '
+            'information on their sites. In July, US President Joe Biden said s'
+            'ocial media platforms were largely responsible for people\'s scept'
+            'icism in getting vaccinated by spreading misinformation, and appea'
+            'led for them to address the issue. YouTube, which is owned by Goog'
+            'le, said 130,000 videos were removed from its platform since last '
+            'year, when it implemented a ban on content spreading misinformatio'
+            'n about Covid vaccines. In a blog post, the company said it had se'
+            'en false claims about Covid jabs spill over into misinformation ab'
+            'out vaccines in general. The new policy covers long-approved vacci'
+            'nes, such as those against measles or hepatitis B. We\'re expandin'
+            'g our medical misinformation policies on YouTube with new guidelin'
+            'es on currently administered vaccines that are approved and confir'
+            'med to be safe and effective by local health authorities and the W'
+            'HO, the post said, referring to the World Health Organization."}}')
+
+        # Perform the API call through the SDK function
+        result = self.controller.get_summary(body)
+
+        # Test response code
+        self.assertEquals(self.response_catcher.response.status_code, 200)
+
+        # Test headers
+        expected_headers = {}
+        expected_headers['content-type'] = 'application/json'
+
+        self.assertTrue(TestHelper.match_headers(expected_headers, self.response_catcher.response.headers))
+
+        
+        # Test whether the captured response is as we expected
+        self.assertIsNotNone(result)
+        expected_body = APIHelper.json_deserialize('{"summary":"YouTube has announced a ban on videos spreading misinf'
+            'ormation about Covid vaccines."}')
+        received_body = APIHelper.json_deserialize(self.response_catcher.response.text)
+        self.assertTrue(TestHelper.match_body(expected_body, received_body))
+
+    # # Translation : Defintion and it's usage
+    #Machine Translation is translating the text automatically from  one language to another langauge.
+    #
+    ## Languages covered:
+    #
+    #| Languages                             | ISO Code   |
+    #|---------------------------------------|------------|
+    #|  Abkhazian                            |   ab       |
+    #|  Afrikaans                            |   af       |
+    #|  Amharic                              |   am       |
+    #|  Bashkir                              |   ba       |
+    #|  Catalan; Valencian                   |   ca       |
+    #|  Chechen                              |   ce       |
+    #|  Corsican                             |   co       |
+    #|  Chuvash                              |   cv       |
+    #|  Ewe                                  |   ee       |
+    #|  English                              |   en       |
+    #|  Basque                               |   eu       |
+    #|  Fijian                               |   fj       |
+    #|  French                               |   fr       |
+    #|  Galician                             |   gl       |
+    #|  Gujarati                             |   gu       |
+    #|  Manx                                 |   gv       |
+    #|  Hebrew                               |   he       |
+    #|  Haitian; Haitian Creole              |   ht       |
+    #|  Armenian                             |   hy       |
+    #|  Indonesian                           |   id       |
+    #|  Igbo                                 |   ig       |
+    #|  Icelandic                            |   is       |
+    #|  Japanese                             |   ja       |
+    #|  Kalaallisut; Greenlandic             |   kl       |
+    #|  Ganda                                |   lg       |
+    #|  Lingala                              |   ln       |
+    #|  Malagasy                             |   mg       |
+    #|  Marshallese                          |   mh       |
+    #|  Macedonian                           |   mk       |
+    #|  Mongolian                            |   mn       |
+    #|  Nauru                                |   na       |
+    #|  Bokmål, Norwegian; Norwegian Bokmål  |   nb       |
+    #|  Chichewa; Chewa; Nyanja              |   ny       |
+    #|  Ossetian; Ossetic                    |   os       |
+    #|  Pushto; Pashto                       |   ps       |
+    #|  Romansh                              |   rm       |
+    #|  Rundi                                |   rn       |
+    #|  Sango                                |   sg       |
+    #|  Samoan                               |   sm       |
+    #|  Shona                                |   sn       |
+    #|  Somali                               |   so       |
+    #|  Albanian                             |   sq       |
+    #|  Tamil                                |   ta       |
+    #|  Tigrinya                             |   ti       |
+    #|  Turkmen                              |   tk       |
+    #|  Tonga                                |   to       |
+    #|  Turkish                              |   tr       |
+    #|  Tsonga                               |   ts       |
+    #|  Tatar                                |   tt       |
+    #|  Tahitian                             |   ty       |
+    #|  Ukrainian                            |   uk       |
+    #|  Vietnamese                           |   vi       |
+    #|  Walloon                              |   wa       |
+    #|  Xhosa                                |   xh       |
+    #|  Yoruba                               |   yo       |
+    #|  Zulu                                 |   zu       |
+    #
+    #
+    #
+    def test_get_translate(self):
+        # Parameters for the API call
+        body = AdvancedAPIs.deserialize_getTranslate('{"input":{"lang":"ta","text":"Today is a good day"}}')
+
+        # Perform the API call through the SDK function
+        result = self.controller.get_translate(body)
+
+        # Test response code
+        self.assertEquals(self.response_catcher.response.status_code, 200)
+
+        # Test headers
+        expected_headers = {}
+        expected_headers['content-type'] = 'application/json'
+
+        self.assertTrue(TestHelper.match_headers(expected_headers, self.response_catcher.response.headers))
+
+        
+        # Test whether the captured response is as we expected
+        self.assertIsNotNone(result)
+        expected_body = APIHelper.json_deserialize('{"generated_text":"இன்று நல்ல நாள்."}')
+        received_body = APIHelper.json_deserialize(self.response_catcher.response.text)
+        self.assertTrue(TestHelper.match_body(expected_body, received_body))
 
diff --git a/tests/controllers/test_basic_ap_is_controller.py b/tests/controllers/test_basic_ap_is_controller.py
new file mode 100644
index 0000000..4618ecf
--- /dev/null
+++ b/tests/controllers/test_basic_ap_is_controller.py
@@ -0,0 +1,249 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguageapi
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+import json
+import dateutil.parser
+
+from tests.controllers.controller_test_base import ControllerTestBase
+from tests.test_helper import TestHelper
+from tests.requestdeserialization.deserialize_basic_ap_is_controller import BasicApIs
+from tests.http_response_catcher import HttpResponseCatcher
+from firstlanguageapi.api_helper import APIHelper
+from firstlanguageapi.controllers.basic_ap_is_controller import BasicAPIsController
+
+
+class BasicAPIsControllerTests(ControllerTestBase):
+
+    @classmethod
+    def setUpClass(cls):
+        super(BasicAPIsControllerTests, cls).setUpClass()
+        cls.response_catcher = HttpResponseCatcher()
+        cls.controller = BasicAPIsController(cls.config, cls.auth_managers, cls.response_catcher)
+
+    # # Stemmer : Defintion and it's usage
+    #A word takes different inflectional forms. For instance, the word, "Compute" can take the forms, "computing", "computation",  and "computerize". The NLP applications such as Search Engines and Information Extraction would want to store the base or stem of the word, i.e "Compute" instead of accomodating all its inflected forms. This will yield in dimensionality reduction and incerases the efficiency of the system. The stemmer cuts the prefix and suffix of a word. 
+    #
+    # # Languages covered:
+    #  Our stemmer works for the following  26 languages. 
+    #  
+    #| Languages    | ISO Code   |
+    #|--------------|------------|
+    #|  Arabic      |  ar        |
+    #|  Catalan     |  ca        |
+    #|  Danish      |  da        |
+    #|  German      |  de        |
+    #|  Greek       |  el        |
+    #|  English     |  en        |
+    #|  Spanish     |  es        |
+    #|  Basque      |  eu        |
+    #|  Finnish     |  fi        |
+    #|  French      |  fr        |
+    #|  Irish       |  ga        |
+    #|  Hindi       |  hi        |
+    #|  Hungarian   |  hu        |
+    #|  Indonesian  |  id        |
+    #|  Italian     |  it        |
+    #|  Lithuanian  |  lt        |
+    #|  Nepali      |  ne        |
+    #|  Dutch       |  nl        |
+    #|  Norwegian   |  no        |
+    #|  Portuguese  |  pt        |
+    #|  Romanian    |  ro        |
+    #|  Russian     |  ru        |
+    #|  Serbian     |  sr        |
+    #|  Swedish     |  sv        |
+    #|  Tamil       |  ta        |
+    #|  Turkish     |  tr        |
+    #
+    def test_get_stemmer(self):
+        # Parameters for the API call
+        body = BasicAPIs.deserialize_getStemmer('{"input":{"text":"அவள் வேகமாக ஓடினாள்","lang":"ta"}}')
+
+        # Perform the API call through the SDK function
+        result = self.controller.get_stemmer(body)
+
+        # Test response code
+        self.assertEquals(self.response_catcher.response.status_code, 200)
+
+        # Test headers
+        expected_headers = {}
+        expected_headers['content-type'] = 'application/json'
+
+        self.assertTrue(TestHelper.match_headers(expected_headers, self.response_catcher.response.headers))
+
+        
+        # Test whether the captured response is as we expected
+        self.assertIsNotNone(result)
+        expected_body = APIHelper.json_deserialize('[{"orginalText":"அவள்","stem":"அவள்"},{"orginalText":"வேகமாக","ste'
+            'm":"வேகம்"},{"orginalText":"ஓடினாள்","stem":"ஓடி"}]')
+        received_body = APIHelper.json_deserialize(self.response_catcher.response.text)
+        self.assertTrue(TestHelper.match_body(expected_body, received_body))
+
+    # # Lemmatizer : Defintion and it's usage
+    #
+    #Lemmatizer is similar to stemmer that gives the stemmed version of a word but lemmatizer differs from the stemmer in giving a meaningful stem or the lemma. For instance, for the word, "smiling", the stemmer would give, "smil", stemming the suffix, "ing" but the lemmatizer would give the meaningful stem, "smile". lemmatizers can be used in applications such as,  Machine Translation, Search Engines, Text Summarization etc.
+    #
+    ## Languages covered:
+    #| Languages          | ISO Code |
+    #|--------------------|----------|
+    #| Catalan            | ca       |
+    #| Danish             | da       |
+    #| Dutch              | nl       |
+    #| English            | en       |
+    #| French             | fr       |
+    #| German             | de       |
+    #| Greek              | el       |
+    #| Italian            | it       |
+    #| Lithuanian         | lt       |
+    #| Macedonian         | mk       |
+    #| Norwegian (Bokmål) | nb       |
+    #| Polish             | pl       |
+    #| Portuguese         | pt       |
+    #| Romanian           | ro       |
+    #| Russian            | ru       |
+    #| Spanish            | es       |
+    #
+    #
+    #
+    #
+    def test_get_lemma(self):
+        # Parameters for the API call
+        body = BasicAPIs.deserialize_getLemma('{"input":{"text":"Smiling makes everyone happy","lang":"en"}}')
+
+        # Perform the API call through the SDK function
+        result = self.controller.get_lemma(body)
+
+        # Test response code
+        self.assertEquals(self.response_catcher.response.status_code, 200)
+
+        # Test headers
+        expected_headers = {}
+        expected_headers['content-type'] = 'application/json'
+
+        self.assertTrue(TestHelper.match_headers(expected_headers, self.response_catcher.response.headers))
+
+        
+        # Test whether the captured response is as we expected
+        self.assertIsNotNone(result)
+        expected_body = APIHelper.json_deserialize('[{"orginalText":"Smiling","lemmatized":"smile"},{"orginalText":"ma'
+            'kes","lemmatized":"make"},{"orginalText":"everyone","lemmatized":"'
+            'everyone"},{"orginalText":"happy","lemmatized":"happy"}]')
+        received_body = APIHelper.json_deserialize(self.response_catcher.response.text)
+        self.assertTrue(TestHelper.match_body(expected_body, received_body))
+
+    # # Morphological Analyzer : Defintion and it's usage
+    #Morphological Analyzer analyzes how a word is formed. It breaks a word into smaller units called, "morphemes" and gives a clue on the pattern of words of a particular langauge.  It can be used for building applications such as,  Machine Translation, Text Summarization, Search systems etc. 
+    #
+    #
+    ## Languages covered:
+    #| Languages          | ISO Code |
+    #|--------------------|----------|
+    #| Catalan            | ca       |
+    #| Danish             | da       |
+    #| Dutch              | nl       |
+    #| English            | en       |
+    #| French             | fr       |
+    #| German             | de       |
+    #| Greek              | el       |
+    #| Italian            | it       |
+    #| Japanese           | ja       |
+    #| Lithuanian         | lt       |
+    #| Macedonian         | mk       |
+    #| Norwegian (Bokmål) | nb       |
+    #| Polish             | pl       |
+    #| Portuguese         | pt       |
+    #| Russian            | ru       |
+    #| Spanish            | es       |
+    #
+    def test_get_morph(self):
+        # Parameters for the API call
+        body = BasicAPIs.deserialize_getMorph('{"input":{"text":"Let us begin the API development.","lang":"en"}}'
+            '')
+
+        # Perform the API call through the SDK function
+        result = self.controller.get_morph(body)
+
+        # Test response code
+        self.assertEquals(self.response_catcher.response.status_code, 200)
+
+        # Test headers
+        expected_headers = {}
+        expected_headers['content-type'] = 'application/json'
+
+        self.assertTrue(TestHelper.match_headers(expected_headers, self.response_catcher.response.headers))
+
+        
+        # Test whether the captured response is as we expected
+        self.assertIsNotNone(result)
+        expected_body = APIHelper.json_deserialize('{"Let":{"VerbForm":["Inf"],"Case":["Acc"],"Number":["Sing"],"Perso'
+            'n":["1"],"PronType":["Art"],"Definite":["Def"],"NounType":["Prop"]'
+            '},"us":{"VerbForm":["Inf"],"Case":["Acc"],"Number":["Sing"],"Perso'
+            'n":["1"],"PronType":["Art"],"Definite":["Def"],"NounType":["Prop"]'
+            '},"begin":{"VerbForm":["Inf"],"Case":["Acc"],"Number":["Sing"],"Pe'
+            'rson":["1"],"PronType":["Art"],"Definite":["Def"],"NounType":["Pro'
+            'p"]},"the":{"VerbForm":["Inf"],"Case":["Acc"],"Number":["Sing"],"P'
+            'erson":["1"],"PronType":["Art"],"Definite":["Def"],"NounType":["Pr'
+            'op"]},"API":{"VerbForm":["Inf"],"Case":["Acc"],"Number":["Sing"],"'
+            'Person":["1"],"PronType":["Art"],"Definite":["Def"],"NounType":["P'
+            'rop"]},"development":{"VerbForm":["Inf"],"Case":["Acc"],"Number":['
+            '"Sing"],"Person":["1"],"PronType":["Art"],"Definite":["Def"],"Noun'
+            'Type":["Prop"]},".":{"VerbForm":["Inf"],"Case":["Acc"],"Number":["'
+            'Sing"],"Person":["1"],"PronType":["Art"],"Definite":["Def"],"NounT'
+            'ype":["Prop"]}}')
+        received_body = APIHelper.json_deserialize(self.response_catcher.response.text)
+        self.assertTrue(TestHelper.match_body(expected_body, received_body))
+
+    #  # Parts of Speech Tagger : Defintion and it's usage
+    #  Parts of Speech Tagger, which is shortly known as POS Tagger is a software that automatically finds the word classes, when a text input is given. The text input can be a word, a sentence or a set of sentences. The word classes are the grammatical categories such as, Noun, Verb, Adverb etc. The category assigned to each word is called as a tag. A set of tags, each indicating a grammatical category is called, "tagsets". POS tagging is a mandatory pre-processing for most of the Natural Language Processing Applications such as, Information Extraction, Information Retreival systems and Summary generation systems. A POS Tagger is a language-dependent software as the grammar rules will differ for every language. For instance, a word ending with "ing" might indicate a "Verb" in English but this will not be applicable for other languages. 
+    #
+    #
+    ## Languages covered:
+    #
+    #| Languages          | ISO Code |
+    #|--------------------|----------|
+    #| Chinese            | zh       |
+    #| Dutch              | nl       |
+    #| English            | en       |
+    #| German             | de       |
+    #| Italian            | it       |
+    #| Lithuanian         | lt       |
+    #| Polish             | pl       |
+    #| Romanian           | ro       |
+    #| Tamil              | ta       |
+    # 
+    #
+    #
+    def test_get_postag(self):
+        # Parameters for the API call
+        body = BasicAPIs.deserialize_getPostag('{"input":{"text":"Let us begin the API development.","lang":"en"}}'
+            '')
+
+        # Perform the API call through the SDK function
+        result = self.controller.get_postag(body)
+
+        # Test response code
+        self.assertEquals(self.response_catcher.response.status_code, 200)
+
+        # Test headers
+        expected_headers = {}
+        expected_headers['content-type'] = 'application/json'
+
+        self.assertTrue(TestHelper.match_headers(expected_headers, self.response_catcher.response.headers))
+
+        
+        # Test whether the captured response is as we expected
+        self.assertIsNotNone(result)
+        expected_body = APIHelper.json_deserialize('[{"orginalText":"Let","postag":"VERB"},{"orginalText":"us","postag'
+            '":"PRON"},{"orginalText":"begin","postag":"VERB"},{"orginalText":"'
+            'the","postag":"DET"},{"orginalText":"API","postag":"PROPN"},{"orgi'
+            'nalText":"development","postag":"NOUN"},{"orginalText":".","postag'
+            '":"PUNCT"}]')
+        received_body = APIHelper.json_deserialize(self.response_catcher.response.text)
+        self.assertTrue(TestHelper.match_body(expected_body, received_body))
+
diff --git a/tests/controllers/test_enterprise_only_controller.py b/tests/controllers/test_enterprise_only_controller.py
new file mode 100644
index 0000000..2a5cf3d
--- /dev/null
+++ b/tests/controllers/test_enterprise_only_controller.py
@@ -0,0 +1,55 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguageapi
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+
+import json
+import dateutil.parser
+
+from tests.controllers.controller_test_base import ControllerTestBase
+from tests.test_helper import TestHelper
+from tests.http_response_catcher import HttpResponseCatcher
+from firstlanguageapi.api_helper import APIHelper
+from firstlanguageapi.controllers.enterprise_only_controller import EnterpriseOnlyController
+from firstlanguageapi.models.api_question_request import ApiQuestionRequest
+
+
+class EnterpriseOnlyControllerTests(ControllerTestBase):
+
+    @classmethod
+    def setUpClass(cls):
+        super(EnterpriseOnlyControllerTests, cls).setUpClass()
+        cls.response_catcher = HttpResponseCatcher()
+        cls.controller = EnterpriseOnlyController(cls.config, cls.auth_managers, cls.response_catcher)
+
+    # # QA : Defintion and it's usage
+    #A Question Answering System retrieves the answer relevant to the question given by the user. A question answering system can be used for building a text based chatbots, search engines etc. Our question answering system  is mutilingual and supports 100 + languages. Please use ISO 639-2 2 digit language code  to get results. For example, use 'en' for English, 'ta' for Tamil, 'hi' for Hindi, 'fr' for French etc.
+    #
+    #For ISO code reference, please check the link https://www.loc.gov/standards/iso639-2/php/code_list.php
+    def test_get_qa_enterprise(self):
+        # Parameters for the API call
+        body = APIHelper.json_deserialize('{"input":{"question":"Who is father of Arya Stark?","lang":"en"}}', ApiQuestionRequest.from_dictionary)
+
+        # Perform the API call through the SDK function
+        result = self.controller.get_qa_enterprise(body)
+
+        # Test response code
+        self.assertEquals(self.response_catcher.response.status_code, 200)
+
+        # Test headers
+        expected_headers = {}
+        expected_headers['content-type'] = 'application/json'
+
+        self.assertTrue(TestHelper.match_headers(expected_headers, self.response_catcher.response.headers))
+
+        
+        # Test whether the captured response is as we expected
+        self.assertIsNotNone(result)
+        expected_body = APIHelper.json_deserialize('{"answer":"உப்பு, புளி, மிளகாய்"}')
+        received_body = APIHelper.json_deserialize(self.response_catcher.response.text)
+        self.assertTrue(TestHelper.match_body(expected_body, received_body))
+

From 144b507eec5394dac6105e13bf7cb313766b302d Mon Sep 17 00:00:00 2001
From: Subalalitha <subalalitha@firstlanguage.in>
Date: Sun, 27 Feb 2022 15:41:11 +0530
Subject: [PATCH 29/34] Image caption changes

---
 LICENSE                                       |   2 +-
 MANIFEST.in                                   |   2 +-
 README.md                                     | 111 +---
 dist/firstlanguage_python-2.tar.gz            | Bin 0 -> 41612 bytes
 doc/client.md                                 |   1 +
 doc/controllers/advanced-ap-is.md             | 540 ++++++++++++++++++
 doc/controllers/basic-ap-is.md                | 503 ++++++++++++++++
 doc/controllers/enterprise-only.md            |  61 ++
 doc/models/api-imagecaption-request.md        |  23 +
 doc/models/api-imagecaption-response.md       |  21 +
 doc/models/api-ner-request-1.md               |   2 +-
 doc/models/api-ner-request.md                 |   2 +-
 doc/models/api-qa-request-1.md                |   2 +-
 doc/models/api-qa-request.md                  |   2 +-
 doc/models/api-question-request.md            |  24 +
 doc/models/api-question-response.md           |  21 +
 doc/models/api-summary-request-1.md           |   2 +-
 doc/models/api-summary-request.md             |   2 +-
 doc/models/api-tableqa-request-1.md           |  29 +
 doc/models/api-tableqa-request.md             |  32 ++
 doc/models/api-tableqa-response.md            |  25 +
 doc/models/api-translate-request-1.md         |   2 +-
 doc/models/api-translate-request.md           |   2 +-
 doc/models/errors-exception.md                |   2 +-
 doc/models/input-10.md                        |  10 +-
 doc/models/input-11.md                        |   2 +-
 doc/models/input-12.md                        |   2 +-
 doc/models/input-13.md                        |  23 +
 doc/models/input-14.md                        |  25 +
 doc/models/input-15.md                        |  23 +
 doc/models/input-16.md                        |  25 +
 doc/models/input-5.md                         |   2 +-
 doc/models/input-7.md                         |  15 +-
 doc/models/input-8.md                         |  14 +-
 doc/models/input-9.md                         |   6 +-
 doc/models/responsemorph.md                   |   2 +-
 doc/models/text-input-classify.md             |   2 +-
 doc/models/text-input-tamil.md                |   2 +-
 doc/models/text-input.md                      |   2 +-
 doc/models/url-input-classify.md              |   2 +-
 doc/models/url-input.md                       |   2 +-
 example_Stemmer.py                            |   9 +
 firstlanguage_python.egg-info/PKG-INFO        |   4 +-
 firstlanguage_python.egg-info/SOURCES.txt     |  17 +-
 firstlanguage_python.egg-info/requires.txt    |   2 +-
 .../advanced_api_controller.cpython-39.pyc    | Bin 18980 -> 21268 bytes
 .../controllers/advanced_api_controller.py    |  70 +++
 firstlanguage_python/models/__init__.py       |   3 +
 .../__pycache__/__init__.cpython-39.pyc       | Bin 874 -> 937 bytes
 .../models/api_imagecaption_request.py        |  73 +++
 .../models/api_imagecaption_response.py       |  72 +++
 .../models/api_ner_request.py                 |   6 +-
 .../models/api_ner_request_1.py               |   6 +-
 .../models/api_question_request.py            |   6 +-
 .../models/api_summary_request.py             |   6 +-
 .../models/api_summary_request_1.py           |   6 +-
 .../models/api_translate_request.py           |   6 +-
 .../models/api_translate_request_1.py         |   6 +-
 firstlanguage_python/models/input_10.py       |  17 +-
 firstlanguage_python/models/input_11.py       |  27 +-
 firstlanguage_python/models/input_12.py       |  26 +-
 firstlanguage_python/models/input_13.py       |  26 +-
 firstlanguage_python/models/input_14.py       |  26 +-
 firstlanguage_python/models/input_15.py       |  27 +-
 firstlanguage_python/models/input_16.py       |  88 +++
 firstlanguage_python/models/input_9.py        |  19 +-
 .../schemas/api_imagecaption_request.json     |  22 +
 .../schemas/api_imagecaption_response.json    |  20 +
 .../schemas/api_ner_request.json              |   2 +-
 .../schemas/api_ner_request_1.json            |   2 +-
 .../schemas/api_question_request.json         |   2 +-
 .../schemas/api_summary_request.json          |   2 +-
 .../schemas/api_summary_request_1.json        |   2 +-
 .../schemas/api_translate_request.json        |   2 +-
 .../schemas/api_translate_request_1.json      |   2 +-
 firstlanguage_python/schemas/input_10.json    |   8 +-
 firstlanguage_python/schemas/input_11.json    |  17 +-
 firstlanguage_python/schemas/input_12.json    |  17 +-
 firstlanguage_python/schemas/input_13.json    |  17 +-
 firstlanguage_python/schemas/input_14.json    |  17 +-
 firstlanguage_python/schemas/input_15.json    |  17 +-
 firstlanguage_python/schemas/input_16.json    |  24 +
 firstlanguage_python/schemas/input_9.json     |  10 +-
 setup.py                                      |   8 +-
 84 files changed, 2000 insertions(+), 311 deletions(-)
 create mode 100644 dist/firstlanguage_python-2.tar.gz
 create mode 100644 doc/controllers/advanced-ap-is.md
 create mode 100644 doc/controllers/basic-ap-is.md
 create mode 100644 doc/controllers/enterprise-only.md
 create mode 100644 doc/models/api-imagecaption-request.md
 create mode 100644 doc/models/api-imagecaption-response.md
 create mode 100644 doc/models/api-question-request.md
 create mode 100644 doc/models/api-question-response.md
 create mode 100644 doc/models/api-tableqa-request-1.md
 create mode 100644 doc/models/api-tableqa-request.md
 create mode 100644 doc/models/api-tableqa-response.md
 create mode 100644 doc/models/input-13.md
 create mode 100644 doc/models/input-14.md
 create mode 100644 doc/models/input-15.md
 create mode 100644 doc/models/input-16.md
 create mode 100644 firstlanguage_python/models/api_imagecaption_request.py
 create mode 100644 firstlanguage_python/models/api_imagecaption_response.py
 create mode 100644 firstlanguage_python/models/input_16.py
 create mode 100644 firstlanguage_python/schemas/api_imagecaption_request.json
 create mode 100644 firstlanguage_python/schemas/api_imagecaption_response.json
 create mode 100644 firstlanguage_python/schemas/input_16.json

diff --git a/LICENSE b/LICENSE
index 749af7f..c571aa5 100644
--- a/LICENSE
+++ b/LICENSE
@@ -3,7 +3,7 @@ License:
 The MIT License (MIT)
 http://opensource.org/licenses/MIT
 
-Copyright (c) 2014 - 2020 APIMATIC Limited
+Copyright (c) 2014 - 2022 APIMATIC Limited
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/MANIFEST.in b/MANIFEST.in
index f58a951..64aa22e 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,2 +1,2 @@
 include LICENSE
-include README.html
+include README.md
diff --git a/README.md b/README.md
index 286ef15..31d093b 100644
--- a/README.md
+++ b/README.md
@@ -7,80 +7,24 @@ Collection of NLP APIs to help developers. We have grouped the APIs under Basic
 
 ### OpenAPI Specification
 
-This API is documented in **OpenAPI v3.0 format**.
-In addition to standard
-OpenAPI syntax we use a few [vendor extensions](https://github.com/Redocly/redoc/blob/master/docs/redoc-vendor-extensions.html).
+This API is documented in **OpenAPI v3.0 format**.
+In addition to standard
+OpenAPI syntax we use a few [vendor extensions](https://github.com/Redocly/redoc/blob/master/docs/redoc-vendor-extensions.md).
 
 ## Building
 
-You can use the SDK either from source by cloning from GitHub using our [repo](https://github.com/FirstLanguage/firstlanguage_python.git)
-
-Or you can use PIP to install our package directly by using the command.
-
-```
-pip install firstlanguage-python
-```
-
-## Follow below steps if you want to use SDK from our PIP published package
-
-Once the package is installed you can directly use our package in your code. Below is a working example. Replace <Your_API_KEY> with your API Key from the dashboard.
-
-```
-from firstlanguage_python.firstlanguage_client import Client
-from firstlanguage_python.configuration import Environment
-import jsonpickle
-
-
-client = Client(
-    apikey='<Your_API_KEY>',
-    environment=Environment.PRODUCTION,)
-
-reqbody='{"input":{"text":"அவள் வேகமாக ஓடினாள்","lang":"ta"} }'
-
-body = jsonpickle.decode(reqbody)
-basic_api_controller = client.basic_api
-
-result = basic_api_controller.get_stemmer(body)
-
-for res in result:
-  print("Original Text passed: "+res.orginal_text)
-  print("Stemmed result: "+res.stem)
-
-
-```
-
-Save the above file as test.py and run it using the below command
-
-```
-python3 test.py
-```
-
-You will get an output like below
-
-```
-200
-Original Text passed: அவள்
-Stemmed result: அவள்
-Original Text passed: வேகமாக
-Stemmed result: வேகம்
-Original Text passed: ஓடினாள்
-Stemmed result: ஓடி
-```
-
-## Follow below steps if you want to use SDK from source
-
 You must have Python `3 >=3.7, <= 3.9` installed on your system to install and run this SDK. This SDK package depends on other Python packages like nose, jsonpickle etc. These dependencies are defined in the `requirements.txt` file that comes with the SDK. To resolve these dependencies, you can use the PIP Dependency manager. Install it by following steps at [https://pip.pypa.io/en/stable/installing/](https://pip.pypa.io/en/stable/installing/).
 
 Python and PIP executables should be defined in your PATH. Open command prompt and type `pip --version`. This should display the version of the PIP Dependency Manager installed if your installation was successful and the paths are properly defined.
 
-* Using command line, navigate to the directory containing the generated files (including `requirements.txt`) for the SDK.
+* Using command line, navigate to the directory containing the generated files (including `requirements.txt`) for the SDK.
 * Run the command `pip install -r requirements.txt`. This should install all the required dependencies.
 
 ![Building SDK - Step 1](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&step=installDependencies)
 
 ## Installation
 
-The following section explains how to use the firstlanguageapi library in a new project.
+The following section explains how to use the firstlanguage_python library in a new project.
 
 ### 1. Open Project in an IDE
 
@@ -94,13 +38,13 @@ Click on `Open` in PyCharm to browse to your generated SDK directory and then cl
 
 The project files will be displayed in the side bar as follows:
 
-![Open project in PyCharm - Step 3](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&step=openProject1)
+![Open project in PyCharm - Step 3](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguage_python&step=openProject1)
 
 ### 2. Add a new Test Project
 
 Create a new directory by right clicking on the solution name as shown below:
 
-![Add a new project in PyCharm - Step 1](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&step=createDirectory)
+![Add a new project in PyCharm - Step 1](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguage_python&step=createDirectory)
 
 Name the directory as "test".
 
@@ -108,19 +52,19 @@ Name the directory as "test".
 
 Add a python file to this project.
 
-![Add a new project in PyCharm - Step 3](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&step=createFile)
+![Add a new project in PyCharm - Step 3](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguage_python&step=createFile)
 
 Name it "testSDK".
 
-![Add a new project in PyCharm - Step 4](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&step=nameFile)
+![Add a new project in PyCharm - Step 4](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguage_python&step=nameFile)
 
 In your python file you will be required to import the generated python library using the following code lines
 
 ```python
-from firstlanguageapi.firstlanguageapi_client import FirstlanguageapiClient
+from firstlanguage_python.firstlanguage_python_client import FirstlanguageapiClient
 ```
 
-![Add a new project in PyCharm - Step 5](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&libraryName=firstlanguageapi.firstlanguageapi_client&className=FirstlanguageapiClient&step=projectFiles)
+![Add a new project in PyCharm - Step 5](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguage_python&libraryName=firstlanguage_python.firstlanguage_python_client&className=FirstlanguageapiClient&step=projectFiles)
 
 After this you can write code to instantiate an API client object, get a controller object and  make API calls. Sample code is given in the subsequent sections.
 
@@ -128,28 +72,27 @@ After this you can write code to instantiate an API client object, get a control
 
 To run the file within your test project, right click on your Python file inside your Test project and click on `Run`
 
-![Run Test Project - Step 1](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&libraryName=firstlanguageapi.firstlanguageapi_client&className=FirstlanguageapiClient&step=runProject)
+![Run Test Project - Step 1](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguage_python&libraryName=firstlanguage_python.firstlanguage_python_client&className=FirstlanguageapiClient&step=runProject)
 
 ## Test the SDK
 
 You can test the generated SDK and the server with test cases. `unittest` is used as the testing framework and `nose` is used as the test runner. You can run the tests as follows:
 
-Navigate to the root directory of the SDK and run the following commands
-
-```
-pip install -r test-requirements.txt
-nosetests
+Navigate to the root directory of the SDK and run the following commands
+
+```
+pip install -r test-requirements.txt
+nosetests
 ```
 
 ## Initialize the API Client
 
-**_Note:_** Documentation for the client can be found [here.](/doc/client.html)
+**_Note:_** Documentation for the client can be found [here.](/doc/client.md)
 
 The following parameters are configurable for the API Client:
 
 | Parameter | Type | Description |
 |  --- | --- | --- |
-| `apikey` | `string` | API Key can be copied from your dashboard |
 | `http_client_instance` | `HttpClient` | The Http Client passed from the sdk user for making requests |
 | `override_http_client_configuration` | `bool` | The value which determines to override properties of the passed Http Client from the sdk user |
 | `timeout` | `float` | The value to use for connection timeout. <br> **Default: 60** |
@@ -161,11 +104,10 @@ The following parameters are configurable for the API Client:
 The API client can be initialized as follows:
 
 ```python
-from firstlanguageapi.firstlanguageapi_client import FirstlanguageapiClient
-from firstlanguageapi.configuration import Environment
+from firstlanguage_python.firstlanguage_python_client import FirstlanguageapiClient
+from firstlanguage_python.configuration import Environment
 
-client = FirstlanguageapiClient(
-    apikey='apikey',
+client = FirstlanguageapiClient(
     environment=Environment.PRODUCTION,)
 ```
 
@@ -175,12 +117,13 @@ This API uses `Custom Header Signature`.
 
 ## List of APIs
 
-* [Basic APIs](/doc/controllers/basic-api.html)
-* [Advanced APIs](/doc/controllers/advanced-api.html)
+* [Basic AP Is](/doc/controllers/basic-ap-is.md)
+* [Advanced AP Is](/doc/controllers/advanced-ap-is.md)
+* [Enterprise Only](/doc/controllers/enterprise-only.md)
 
 ## Classes Documentation
 
-* [Utility Classes](/doc/utility-classes.html)
-* [HttpResponse](/doc/http-response.html)
-* [HttpRequest](/doc/http-request.html)
+* [Utility Classes](/doc/utility-classes.md)
+* [HttpResponse](/doc/http-response.md)
+* [HttpRequest](/doc/http-request.md)
 
diff --git a/dist/firstlanguage_python-2.tar.gz b/dist/firstlanguage_python-2.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..792f9b956b8cd6d900b4893902997aaa71018804
GIT binary patch
diff --git a/doc/client.md b/doc/client.md
index 7b6057c..27a20db 100644
--- a/doc/client.md
+++ b/doc/client.md
@@ -35,4 +35,5 @@ The gateway for the SDK. This class acts as a factory for the Controllers and al
 |  --- | --- |
 | basic_api | Gets BasicAPIsController |
 | advanced_api | Gets AdvancedAPIsController |
+| enterprise_only | Gets EnterpriseOnlyController |
 
diff --git a/doc/controllers/advanced-ap-is.md b/doc/controllers/advanced-ap-is.md
new file mode 100644
index 0000000..b1ae54e
--- /dev/null
+++ b/doc/controllers/advanced-ap-is.md
@@ -0,0 +1,540 @@
+# Advanced AP Is
+
+```python
+advanced_ap_is_controller = client.advanced_ap_is
+```
+
+## Class Name
+
+`AdvancedAPIsController`
+
+## Methods
+
+* [Get Classification](/doc/controllers/advanced-ap-is.md#get-classification)
+* [Get QA](/doc/controllers/advanced-ap-is.md#get-qa)
+* [Get Table QA](/doc/controllers/advanced-ap-is.md#get-table-qa)
+* [Get Image Caption](/doc/controllers/advanced-ap-is.md#get-image-caption)
+* [Get NER](/doc/controllers/advanced-ap-is.md#get-ner)
+* [Get Summary](/doc/controllers/advanced-ap-is.md#get-summary)
+* [Get Translate](/doc/controllers/advanced-ap-is.md#get-translate)
+
+
+# Get Classification
+
+# Text Classification  : Defintion and it's usage
+
+A text classifier identifies the categories of the text given as input. Classifying the texts is one of the powerful preprocessing technique in topic identification and sentiment classification (product reviews, movie reviews etc)and indexing the texts while building a search system.
+
+# Languages covered:
+
+| Languages  | ISO Code |
+|------------|----------|
+| Arabic     | ar       |
+| Bulgarian  | bg       |
+| Chinese    | zh       |
+| English    | en       |
+| French     | fr       |
+| German     | de       |
+| Greek      | el       |
+| Hindi      | hi       |
+| Russian    | ru       |
+| Spanish    | es       |
+| Swahili    | sw       |
+| Thai       | th       |
+| Turkish    | tr       |
+| Urdu       | ur       |
+| Vietnamese | vi       |
+
+```python
+def get_classification(self,
+                      body)
+```
+
+## Parameters
+
+| Parameter | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `body` | [`object`]($m/) | Body, Required | Add a JSON Input as per the schema defined below |
+
+## Response Type
+
+[`Responseclassify`](/doc/models/responseclassify.md)
+
+## Example Usage
+
+```python
+body = jsonpickle.decode('{"$$__case":0,"$$__case_of":"oneOf","value":{"input":{"context":"context6","lang":"lang6","labels":[{"key1":"val1","key2":"val2"},{"key1":"val1","key2":"val2"},{"key1":"val1","key2":"val2"}]}}}')
+
+result = advanced_ap_is_controller.get_classification(body)
+```
+
+## Example Response *(as JSON)*
+
+```json
+{
+  "labels": [
+    "positive",
+    "negative"
+  ],
+  "scores": [
+    0.9966060519218445,
+    0.0033939925488084555
+  ]
+}
+```
+
+## Errors
+
+| HTTP Status Code | Error Description | Exception Class |
+|  --- | --- | --- |
+| 400 | Error output | [`ErrorsException`](/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`ApiClassify426ErrorException`](/doc/models/api-classify-426-error-exception.md) |
+| 429 | Too Many Requests | `APIException` |
+
+
+# Get QA
+
+# QA : Defintion and it's usage
+
+A Question Answering System retrieves the answer relevant to the question given by the user. A question answering system can be used for building a text based chatbots, search engines etc. Our question answering system  is mutilingual and supports 100 + languages. Please use ISO 639-2 2 digit language code  to get results. For example, use 'en' for English, 'ta' for Tamil, 'hi' for Hindi, 'fr' for French etc.
+
+For ISO code reference, please check the link https://www.loc.gov/standards/iso639-2/php/code_list.php
+
+```python
+def get_qa(self,
+          body=None)
+```
+
+## Parameters
+
+| Parameter | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `body` | [`object`]($m/) | Body, Optional | Add a JSON Input as per the schema defined below |
+
+## Response Type
+
+[`ApiQaResponse`](/doc/models/api-qa-response.md)
+
+## Example Usage
+
+```python
+body = jsonpickle.decode('{"$$__case":0,"$$__case_of":"oneOf","value":{"input":{"question":"எவை மூன்றும் எப்போதும் ஒன்றாகவே இருக்கும்?","lang":"ta","context":"உப்பு, புளி, மிளகாய் மூன்றும் எப்போதும் ஒன்றாகவே இருக்கும். ஒருநாள், “குழம்பிற்கு யார் முக்கியம்? நீயா! நானா!” என்று சண்டை போட்டன. மூன்று பேரும் தனிதனியாகச் சென்று குழம்பில் சேரலாம் என்று முடிவு செய்தன. முதல் நாள், உப்பு மட்டும் குழம்பில் சேர்ந்து கொண்டது. “ஆ! ஒரே உப்பு! வாயில் வைக்க முடியவில்லை!” என்று எல்லோரும் கத்தினார்கள்"}}}')
+
+result = advanced_ap_is_controller.get_qa(body)
+```
+
+## Example Response *(as JSON)*
+
+```json
+{
+  "score": 0.028566665947437286,
+  "start": 0,
+  "end": 20,
+  "answer": "உப்பு, புளி, மிளகாய்"
+}
+```
+
+## Errors
+
+| HTTP Status Code | Error Description | Exception Class |
+|  --- | --- | --- |
+| 400 | Bad Request | [`ErrorsException`](/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`M426ErrorException`](/doc/models/m426-error-exception.md) |
+| 429 | Too Many Requests | `APIException` |
+
+
+# Get Table QA
+
+# TableQA : Defintion and it's usage
+
+Table QA uses TAPAS based model to get answers from table input. The table can be parsed into a JSON object or it can be a link to a CSV file. Currently only Plain CSV file is supported.
+
+This API works only for English language currently
+
+Example for flattend table in JSON Format:<br/>
+{"Cities": ["Paris, France", "London, England", "Lyon, France"], "Inhabitants": ["2.161", "8.982", "0.513"]}
+
+The API can return the original table rows from which the answer was extracted based on the flag 'sendBackRows'
+
+```python
+def get_table_qa(self,
+                body=None)
+```
+
+## Parameters
+
+| Parameter | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `body` | [`object`]($m/) | Body, Optional | Add a JSON Input as per the schema defined below. For URL input, if you are providing Google drive or Google Spreadsheet url ensure that you provide a link which can download the file directly and not the share link.<br><br>Example: For Google Spreadsheet, the url format will be like below:<br>https://docs.google.com/spreadsheets/d/1TtzPAHqpaTB7Ltdq0zwZ8FamF7O9aC4KH4EpmwI/export?format=csv&gid=151344200<br><br>Or for Google Drive, it will be like below:<br>https://drive.google.com/uc?id=idofthefile<br><br>For Flat table input check the example out. |
+
+## Response Type
+
+[`List of ApiTableqaResponse`](/doc/models/api-tableqa-response.md)
+
+## Example Usage
+
+```python
+body = jsonpickle.decode('{"$$__case":0,"$$__case_of":"oneOf","value":{"input":{"flattable":{"Cities":["Paris, France","London, England","Lyon, France"],"Inhabitants":["2.161","8.982","0.513"]},"sendBackRows":false,"questions":["How many inhabitants in France","How Many inhabitants in England"]}}}')
+
+result = advanced_ap_is_controller.get_table_qa(body)
+```
+
+## Example Response *(as JSON)*
+
+```json
+[
+  {
+    "query": "How many inhabitants in France",
+    "answer": [
+      "SUM > 2.674"
+    ],
+    "rows": [
+      "Paris, France,2.161",
+      "Lyon, France,0.513"
+    ]
+  },
+  {
+    "query": "How Many inhabitants in England",
+    "answer": [
+      "SUM > 8.982"
+    ],
+    "rows": [
+      "London, England,8.982"
+    ]
+  }
+]
+```
+
+## Errors
+
+| HTTP Status Code | Error Description | Exception Class |
+|  --- | --- | --- |
+| 400 | Bad Request | [`ErrorsException`](/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`M426ErrorException`](/doc/models/m426-error-exception.md) |
+| 429 | Too Many Requests | `APIException` |
+
+
+# Get Image Caption
+
+# Image Captioning with Visual Attention : Defintion and it's usage
+
+Image Captioning is the process of generating textual description of an image. It uses both Natural Language Processing and Computer Vision to generate the captions.
+
+This API works generates only English Captions
+
+<b>Enterprise Plan Alert:</b> For Enterprise Users GPU powered endpoint can be provisioned. <b> This will reduce the response time of the API by alomst 90%.</b>
+
+```python
+def get_image_caption(self,
+                     body=None)
+```
+
+## Parameters
+
+| Parameter | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `body` | [`ApiImagecaptionRequest`](/doc/models/api-imagecaption-request.md) | Body, Optional | Add a JSON Input as per the schema defined below.<br><br>For URL, if you are providing Google drive or Google Spreadsheet url ensure that you provide a link which can download the file directly and not the share link.<br><br>Example: For Google Spreadsheet, the url format will be like below:<br>https://docs.google.com/spreadsheets/d/1TtzPAHqpaTB7Ltdq0zwZ8FamF7OwI/export?format=csv&gid=151344200<br><br>Or for Google Drive, it will be like below:<br>https://drive.google.com/uc?id=idofthefile |
+
+## Response Type
+
+[`ApiImagecaptionResponse`](/doc/models/api-imagecaption-response.md)
+
+## Example Usage
+
+```python
+body = ApiImagecaptionRequest()
+body.input = Input9()
+body.input.url = 'https://i.redd.it/v1fvin01ynv51.jpg'
+
+result = advanced_ap_is_controller.get_image_caption(body)
+```
+
+## Example Response *(as JSON)*
+
+```json
+{
+  "generated_caption": "A view of a beach with a sun shining over it"
+}
+```
+
+## Errors
+
+| HTTP Status Code | Error Description | Exception Class |
+|  --- | --- | --- |
+| 400 | Bad Request | [`ErrorsException`](/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`M426ErrorException`](/doc/models/m426-error-exception.md) |
+| 429 | Too Many Requests | `APIException` |
+
+
+# Get NER
+
+# Named Entity Recognition : Defintion and it's usage
+
+Named Entity Recognitiion  (NER) is extracting the specific Nouns such as, Person Names, Location names, Organization Names, Currency , Dates. It is a classification task. NER can be used as a sub-task in applications such as Search Systems, Chatbots, Question Answering systems, Text Summarization etc.
+
+# Languages covered:
+
+| Languages          | ISO Code |
+|--------------------|----------|
+| Arabic             | ar       |
+| Chinese            | zh       |
+| Dutch              | nl       |
+| English            | en       |
+| French             | fr       |
+| German             | de       |
+| Italian            | it       |
+| Latvian            | lv       |
+| Portuguese         | pt       |
+| Spanish            | es       |
+
+For other languages we cannot guarantee results but you can try with ISO code.
+For ISO code reference, please check the link https://www.loc.gov/standards/iso639-2/php/code_list.php
+
+```python
+def get_ner(self,
+           body=None)
+```
+
+## Parameters
+
+| Parameter | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `body` | [`object`]($m/) | Body, Optional | Add a JSON Input as per the schema defined below |
+
+## Response Type
+
+[`List of ApiNerResponse`](/doc/models/api-ner-response.md)
+
+## Example Usage
+
+```python
+body = jsonpickle.decode('{"$$__case":0,"$$__case_of":"oneOf","value":{"input":{"text":"إسمي محمد وأسكن في برلين","lang":"ar"}}}')
+
+result = advanced_ap_is_controller.get_ner(body)
+```
+
+## Example Response *(as JSON)*
+
+```json
+[
+  {
+    "entity_group": "PER",
+    "word": "محمد",
+    "start": "4",
+    "end": "9"
+  },
+  {
+    "entity_group": "LOC",
+    "word": "برلين",
+    "start": "18",
+    "end": "24"
+  }
+]
+```
+
+## Errors
+
+| HTTP Status Code | Error Description | Exception Class |
+|  --- | --- | --- |
+| 400 | Bad Request | [`ErrorsException`](/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`M426ErrorException`](/doc/models/m426-error-exception.md) |
+| 429 | Too Many Requests | `APIException` |
+
+
+# Get Summary
+
+# Summarization : Defintion and it's usage
+
+Summarization generates a crisp content of the large input text which is highly coherent.
+
+| Languages               | ISO Code |
+|-------------------------|----------|
+| Amharic                 | am       |
+| Arabic                  |  ar      |
+| Azerbaijani             |  az      |
+| Bengali                 |  bn      |
+| Burmese                 |  my      |
+| Chinese                 |  zh      |
+| English                 |  en      |
+| French                  |  fr      |
+| Gaelic; Scottish Gaelic | gd       |
+| Gujarati                |  gu      |
+| Hausa                   |  ha      |
+| Hindi                   |  hi      |
+| Igbo                    |  ig      |
+| Indonesian              |  id      |
+| Japanese                |  ja      |
+| Kirghiz; Kyrgyz         | ky       |
+| Korean                  |  ko      |
+| Marathi                 |  mr      |
+| Nepali                  |  ne      |
+| Oromo                   | om       |
+| Persian                 | fa       |
+| Portuguese              |  pt      |
+| Punjabi                 |  pa      |
+| Pushto; Pashto          | ps       |
+| Rundi                   | rn       |
+| Russian                 | ru       |
+| Serbian                 |  sr      |
+| Sinhala; Sinhalese      |  si      |
+| Somali                  |  so      |
+| Spanish; Castilian      |  es      |
+| Swahili                 |  sw      |
+| Tamil                   |  ta      |
+| Telugu                  |  te      |
+| Thai                    |  th      |
+| Tigrinya                |  ti      |
+| Turkish                 |  tr      |
+| Ukrainian               |  uk      |
+| Urdu                    |  ur      |
+| Uzbek                   |  uz      |
+| Vietnamese              |  vi      |
+| Welsh                   |  cy      |
+| Yoruba                  |  yo      |
+
+```python
+def get_summary(self,
+               body=None)
+```
+
+## Parameters
+
+| Parameter | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `body` | [`object`]($m/) | Body, Optional | Add a JSON Input as per the schema defined below |
+
+## Response Type
+
+[`ApiSummaryResponse`](/doc/models/api-summary-response.md)
+
+## Example Usage
+
+```python
+body = jsonpickle.decode('{"$$__case":0,"$$__case_of":"oneOf","value":{"input":{"text":"Videos that say approved vaccines are dangerous and cause autism, cancer or infertility are among those that will be taken down, the company said. The policy includes the termination of accounts of anti-vaccine influencers. Tech giants have been criticised for not doing more to counter false health information on their sites. In July, US President Joe Biden said social media platforms were largely responsible for people\'s scepticism in getting vaccinated by spreading misinformation, and appealed for them to address the issue. YouTube, which is owned by Google, said 130,000 videos were removed from its platform since last year, when it implemented a ban on content spreading misinformation about Covid vaccines. In a blog post, the company said it had seen false claims about Covid jabs spill over into misinformation about vaccines in general. The new policy covers long-approved vaccines, such as those against measles or hepatitis B. We\'re expanding our medical misinformation policies on YouTube with new guidelines on currently administered vaccines that are approved and confirmed to be safe and effective by local health authorities and the WHO, the post said, referring to the World Health Organization.","lang":"en"}}}')
+
+result = advanced_ap_is_controller.get_summary(body)
+```
+
+## Example Response *(as JSON)*
+
+```json
+{
+  "summary": "YouTube has announced a ban on videos spreading misinformation about Covid vaccines."
+}
+```
+
+## Errors
+
+| HTTP Status Code | Error Description | Exception Class |
+|  --- | --- | --- |
+| 400 | Bad Request | [`ErrorsException`](/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`M426ErrorException`](/doc/models/m426-error-exception.md) |
+| 429 | Too Many Requests | `APIException` |
+
+
+# Get Translate
+
+# Translation : Defintion and it's usage
+
+Machine Translation is translating the text automatically from  one language to another langauge.
+
+# Languages covered:
+
+| Languages                             | ISO Code   |
+|---------------------------------------|------------|
+|  Abkhazian                            |   ab       |
+|  Afrikaans                            |   af       |
+|  Amharic                              |   am       |
+|  Bashkir                              |   ba       |
+|  Catalan; Valencian                   |   ca       |
+|  Chechen                              |   ce       |
+|  Corsican                             |   co       |
+|  Chuvash                              |   cv       |
+|  Ewe                                  |   ee       |
+|  English                              |   en       |
+|  Basque                               |   eu       |
+|  Fijian                               |   fj       |
+|  French                               |   fr       |
+|  Galician                             |   gl       |
+|  Gujarati                             |   gu       |
+|  Manx                                 |   gv       |
+|  Hebrew                               |   he       |
+|  Haitian; Haitian Creole              |   ht       |
+|  Armenian                             |   hy       |
+|  Indonesian                           |   id       |
+|  Igbo                                 |   ig       |
+|  Icelandic                            |   is       |
+|  Japanese                             |   ja       |
+|  Kalaallisut; Greenlandic             |   kl       |
+|  Ganda                                |   lg       |
+|  Lingala                              |   ln       |
+|  Malagasy                             |   mg       |
+|  Marshallese                          |   mh       |
+|  Macedonian                           |   mk       |
+|  Mongolian                            |   mn       |
+|  Nauru                                |   na       |
+|  Bokmål, Norwegian; Norwegian Bokmål  |   nb       |
+|  Chichewa; Chewa; Nyanja              |   ny       |
+|  Ossetian; Ossetic                    |   os       |
+|  Pushto; Pashto                       |   ps       |
+|  Romansh                              |   rm       |
+|  Rundi                                |   rn       |
+|  Sango                                |   sg       |
+|  Samoan                               |   sm       |
+|  Shona                                |   sn       |
+|  Somali                               |   so       |
+|  Albanian                             |   sq       |
+|  Tamil                                |   ta       |
+|  Tigrinya                             |   ti       |
+|  Turkmen                              |   tk       |
+|  Tonga                                |   to       |
+|  Turkish                              |   tr       |
+|  Tsonga                               |   ts       |
+|  Tatar                                |   tt       |
+|  Tahitian                             |   ty       |
+|  Ukrainian                            |   uk       |
+|  Vietnamese                           |   vi       |
+|  Walloon                              |   wa       |
+|  Xhosa                                |   xh       |
+|  Yoruba                               |   yo       |
+|  Zulu                                 |   zu       |
+
+```python
+def get_translate(self,
+                 body=None)
+```
+
+## Parameters
+
+| Parameter | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `body` | [`object`]($m/) | Body, Optional | Add a JSON Input as per the schema defined below |
+
+## Response Type
+
+[`ApiTranslateResponse`](/doc/models/api-translate-response.md)
+
+## Example Usage
+
+```python
+body = jsonpickle.decode('{"$$__case":0,"$$__case_of":"oneOf","value":{"input":{"text":"Today is a good day","lang":"ta"}}}')
+
+result = advanced_ap_is_controller.get_translate(body)
+```
+
+## Example Response *(as JSON)*
+
+```json
+{
+  "generated_text": "இன்று நல்ல நாள்."
+}
+```
+
+## Errors
+
+| HTTP Status Code | Error Description | Exception Class |
+|  --- | --- | --- |
+| 400 | Bad Request | [`ErrorsException`](/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`M426ErrorException`](/doc/models/m426-error-exception.md) |
+| 429 | Too Many Requests | `APIException` |
+
diff --git a/doc/controllers/basic-ap-is.md b/doc/controllers/basic-ap-is.md
new file mode 100644
index 0000000..8f5280e
--- /dev/null
+++ b/doc/controllers/basic-ap-is.md
@@ -0,0 +1,503 @@
+# Basic AP Is
+
+```python
+basic_ap_is_controller = client.basic_ap_is
+```
+
+## Class Name
+
+`BasicAPIsController`
+
+## Methods
+
+* [Get Stemmer](/doc/controllers/basic-ap-is.md#get-stemmer)
+* [Get Lemma](/doc/controllers/basic-ap-is.md#get-lemma)
+* [Get Morph](/doc/controllers/basic-ap-is.md#get-morph)
+* [Get Postag](/doc/controllers/basic-ap-is.md#get-postag)
+
+
+# Get Stemmer
+
+# Stemmer : Defintion and it's usage
+
+A word takes different inflectional forms. For instance, the word, "Compute" can take the forms, "computing", "computation",  and "computerize". The NLP applications such as Search Engines and Information Extraction would want to store the base or stem of the word, i.e "Compute" instead of accomodating all its inflected forms. This will yield in dimensionality reduction and incerases the efficiency of the system. The stemmer cuts the prefix and suffix of a word.
+
+# Languages covered:
+
+Our stemmer works for the following  26 languages.
+
+| Languages    | ISO Code   |
+|--------------|------------|
+|  Arabic      |  ar        |
+|  Catalan     |  ca        |
+|  Danish      |  da        |
+|  German      |  de        |
+|  Greek       |  el        |
+|  English     |  en        |
+|  Spanish     |  es        |
+|  Basque      |  eu        |
+|  Finnish     |  fi        |
+|  French      |  fr        |
+|  Irish       |  ga        |
+|  Hindi       |  hi        |
+|  Hungarian   |  hu        |
+|  Indonesian  |  id        |
+|  Italian     |  it        |
+|  Lithuanian  |  lt        |
+|  Nepali      |  ne        |
+|  Dutch       |  nl        |
+|  Norwegian   |  no        |
+|  Portuguese  |  pt        |
+|  Romanian    |  ro        |
+|  Russian     |  ru        |
+|  Serbian     |  sr        |
+|  Swedish     |  sv        |
+|  Tamil       |  ta        |
+|  Turkish     |  tr        |
+
+```python
+def get_stemmer(self,
+               body)
+```
+
+## Parameters
+
+| Parameter | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `body` | [`object`]($m/) | Body, Required | Add a JSON Input as per the schema defined below |
+
+## Response Type
+
+[`List of Responsestem`](/doc/models/responsestem.md)
+
+## Example Usage
+
+```python
+body = jsonpickle.decode('{"$$__case":0,"$$__case_of":"oneOf","value":{"input":{"text":"அவள் வேகமாக ஓடினாள்","lang":"ta"}}}')
+
+result = basic_ap_is_controller.get_stemmer(body)
+```
+
+## Example Response *(as JSON)*
+
+```json
+[
+  {
+    "orginalText": "அவள்",
+    "stem": "அவள்"
+  },
+  {
+    "orginalText": "வேகமாக",
+    "stem": "வேகம்"
+  },
+  {
+    "orginalText": "ஓடினாள்",
+    "stem": "ஓடி"
+  }
+]
+```
+
+## Errors
+
+| HTTP Status Code | Error Description | Exception Class |
+|  --- | --- | --- |
+| 400 | Error output | [`ErrorsException`](/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`ApiStemmer426ErrorException`](/doc/models/api-stemmer-426-error-exception.md) |
+| 429 | Too Many Requests | `APIException` |
+
+
+# Get Lemma
+
+# Lemmatizer : Defintion and it's usage
+
+Lemmatizer is similar to stemmer that gives the stemmed version of a word but lemmatizer differs from the stemmer in giving a meaningful stem or the lemma. For instance, for the word, "smiling", the stemmer would give, "smil", stemming the suffix, "ing" but the lemmatizer would give the meaningful stem, "smile". lemmatizers can be used in applications such as,  Machine Translation, Search Engines, Text Summarization etc.
+
+# Languages covered:
+
+| Languages          | ISO Code |
+|--------------------|----------|
+| Catalan            | ca       |
+| Danish             | da       |
+| Dutch              | nl       |
+| English            | en       |
+| French             | fr       |
+| German             | de       |
+| Greek              | el       |
+| Italian            | it       |
+| Lithuanian         | lt       |
+| Macedonian         | mk       |
+| Norwegian (Bokmål) | nb       |
+| Polish             | pl       |
+| Portuguese         | pt       |
+| Romanian           | ro       |
+| Russian            | ru       |
+| Spanish            | es       |
+
+```python
+def get_lemma(self,
+             body)
+```
+
+## Parameters
+
+| Parameter | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `body` | [`object`]($m/) | Body, Required | Add a JSON Input as per the schema defined below |
+
+## Response Type
+
+[`List of Responselemma`](/doc/models/responselemma.md)
+
+## Example Usage
+
+```python
+body = jsonpickle.decode('{"$$__case":0,"$$__case_of":"oneOf","value":{"input":{"text":"Smiling makes everyone happy","lang":"en"}}}')
+
+result = basic_ap_is_controller.get_lemma(body)
+```
+
+## Example Response *(as JSON)*
+
+```json
+[
+  {
+    "orginalText": "Smiling",
+    "lemmatized": "smile"
+  },
+  {
+    "orginalText": "makes",
+    "lemmatized": "make"
+  },
+  {
+    "orginalText": "everyone",
+    "lemmatized": "everyone"
+  },
+  {
+    "orginalText": "happy",
+    "lemmatized": "happy"
+  }
+]
+```
+
+## Errors
+
+| HTTP Status Code | Error Description | Exception Class |
+|  --- | --- | --- |
+| 400 | Error output | [`ErrorsException`](/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`ApiLemmatize426ErrorException`](/doc/models/api-lemmatize-426-error-exception.md) |
+| 429 | Too Many Requests | `APIException` |
+
+
+# Get Morph
+
+# Morphological Analyzer : Defintion and it's usage
+
+Morphological Analyzer analyzes how a word is formed. It breaks a word into smaller units called, "morphemes" and gives a clue on the pattern of words of a particular langauge.  It can be used for building applications such as,  Machine Translation, Text Summarization, Search systems etc.
+
+# Languages covered:
+
+| Languages          | ISO Code |
+|--------------------|----------|
+| Catalan            | ca       |
+| Danish             | da       |
+| Dutch              | nl       |
+| English            | en       |
+| French             | fr       |
+| German             | de       |
+| Greek              | el       |
+| Italian            | it       |
+| Japanese           | ja       |
+| Lithuanian         | lt       |
+| Macedonian         | mk       |
+| Norwegian (Bokmål) | nb       |
+| Polish             | pl       |
+| Portuguese         | pt       |
+| Russian            | ru       |
+| Spanish            | es       |
+
+```python
+def get_morph(self,
+             body)
+```
+
+## Parameters
+
+| Parameter | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `body` | [`object`]($m/) | Body, Required | Add a JSON Input as per the schema defined below |
+
+## Response Type
+
+[`Responsemorph`](/doc/models/responsemorph.md)
+
+## Example Usage
+
+```python
+body = jsonpickle.decode('{"$$__case":0,"$$__case_of":"oneOf","value":{"input":{"text":"Let us begin the API development.","lang":"en"}}}')
+
+result = basic_ap_is_controller.get_morph(body)
+```
+
+## Example Response *(as JSON)*
+
+```json
+{
+  "Let": {
+    "VerbForm": [
+      "Inf"
+    ],
+    "Case": [
+      "Acc"
+    ],
+    "Number": [
+      "Sing"
+    ],
+    "Person": [
+      "1"
+    ],
+    "PronType": [
+      "Art"
+    ],
+    "Definite": [
+      "Def"
+    ],
+    "NounType": [
+      "Prop"
+    ]
+  },
+  "us": {
+    "VerbForm": [
+      "Inf"
+    ],
+    "Case": [
+      "Acc"
+    ],
+    "Number": [
+      "Sing"
+    ],
+    "Person": [
+      "1"
+    ],
+    "PronType": [
+      "Art"
+    ],
+    "Definite": [
+      "Def"
+    ],
+    "NounType": [
+      "Prop"
+    ]
+  },
+  "begin": {
+    "VerbForm": [
+      "Inf"
+    ],
+    "Case": [
+      "Acc"
+    ],
+    "Number": [
+      "Sing"
+    ],
+    "Person": [
+      "1"
+    ],
+    "PronType": [
+      "Art"
+    ],
+    "Definite": [
+      "Def"
+    ],
+    "NounType": [
+      "Prop"
+    ]
+  },
+  "the": {
+    "VerbForm": [
+      "Inf"
+    ],
+    "Case": [
+      "Acc"
+    ],
+    "Number": [
+      "Sing"
+    ],
+    "Person": [
+      "1"
+    ],
+    "PronType": [
+      "Art"
+    ],
+    "Definite": [
+      "Def"
+    ],
+    "NounType": [
+      "Prop"
+    ]
+  },
+  "API": {
+    "VerbForm": [
+      "Inf"
+    ],
+    "Case": [
+      "Acc"
+    ],
+    "Number": [
+      "Sing"
+    ],
+    "Person": [
+      "1"
+    ],
+    "PronType": [
+      "Art"
+    ],
+    "Definite": [
+      "Def"
+    ],
+    "NounType": [
+      "Prop"
+    ]
+  },
+  "development": {
+    "VerbForm": [
+      "Inf"
+    ],
+    "Case": [
+      "Acc"
+    ],
+    "Number": [
+      "Sing"
+    ],
+    "Person": [
+      "1"
+    ],
+    "PronType": [
+      "Art"
+    ],
+    "Definite": [
+      "Def"
+    ],
+    "NounType": [
+      "Prop"
+    ]
+  },
+  ".": {
+    "VerbForm": [
+      "Inf"
+    ],
+    "Case": [
+      "Acc"
+    ],
+    "Number": [
+      "Sing"
+    ],
+    "Person": [
+      "1"
+    ],
+    "PronType": [
+      "Art"
+    ],
+    "Definite": [
+      "Def"
+    ],
+    "NounType": [
+      "Prop"
+    ]
+  }
+}
+```
+
+## Errors
+
+| HTTP Status Code | Error Description | Exception Class |
+|  --- | --- | --- |
+| 400 | Error output | [`ErrorsException`](/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`ApiMorph426ErrorException`](/doc/models/api-morph-426-error-exception.md) |
+| 429 | Too Many Requests | `APIException` |
+
+
+# Get Postag
+
+# Parts of Speech Tagger : Defintion and it's usage
+
+Parts of Speech Tagger, which is shortly known as POS Tagger is a software that automatically finds the word classes, when a text input is given. The text input can be a word, a sentence or a set of sentences. The word classes are the grammatical categories such as, Noun, Verb, Adverb etc. The category assigned to each word is called as a tag. A set of tags, each indicating a grammatical category is called, "tagsets". POS tagging is a mandatory pre-processing for most of the Natural Language Processing Applications such as, Information Extraction, Information Retreival systems and Summary generation systems. A POS Tagger is a language-dependent software as the grammar rules will differ for every language. For instance, a word ending with "ing" might indicate a "Verb" in English but this will not be applicable for other languages.
+
+# Languages covered:
+
+| Languages          | ISO Code |
+|--------------------|----------|
+| Chinese            | zh       |
+| Dutch              | nl       |
+| English            | en       |
+| German             | de       |
+| Italian            | it       |
+| Lithuanian         | lt       |
+| Polish             | pl       |
+| Romanian           | ro       |
+| Tamil              | ta       |
+
+```python
+def get_postag(self,
+              body)
+```
+
+## Parameters
+
+| Parameter | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `body` | [`object`]($m/) | Body, Required | Add a JSON Input as per the schema defined below |
+
+## Response Type
+
+[`List of Responsepo`](/doc/models/responsepo.md)
+
+## Example Usage
+
+```python
+body = jsonpickle.decode('{"$$__case":0,"$$__case_of":"oneOf","value":{"input":{"text":"Let us begin the API development.","lang":"en"}}}')
+
+result = basic_ap_is_controller.get_postag(body)
+```
+
+## Example Response *(as JSON)*
+
+```json
+[
+  {
+    "orginalText": "Let",
+    "postag": "VERB"
+  },
+  {
+    "orginalText": "us",
+    "postag": "PRON"
+  },
+  {
+    "orginalText": "begin",
+    "postag": "VERB"
+  },
+  {
+    "orginalText": "the",
+    "postag": "DET"
+  },
+  {
+    "orginalText": "API",
+    "postag": "PROPN"
+  },
+  {
+    "orginalText": "development",
+    "postag": "NOUN"
+  },
+  {
+    "orginalText": ".",
+    "postag": "PUNCT"
+  }
+]
+```
+
+## Errors
+
+| HTTP Status Code | Error Description | Exception Class |
+|  --- | --- | --- |
+| 400 | Error output | [`ErrorsException`](/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`ApiPostag426ErrorException`](/doc/models/api-postag-426-error-exception.md) |
+| 429 | Too Many Requests | `APIException` |
+
diff --git a/doc/controllers/enterprise-only.md b/doc/controllers/enterprise-only.md
new file mode 100644
index 0000000..805084b
--- /dev/null
+++ b/doc/controllers/enterprise-only.md
@@ -0,0 +1,61 @@
+# Enterprise Only
+
+```python
+enterprise_only_controller = client.enterprise_only
+```
+
+## Class Name
+
+`EnterpriseOnlyController`
+
+
+# Get QA Enterprise
+
+# QA : Defintion and it's usage
+
+A Question Answering System retrieves the answer relevant to the question given by the user. A question answering system can be used for building a text based chatbots, search engines etc. Our question answering system  is mutilingual and supports 100 + languages. Please use ISO 639-2 2 digit language code  to get results. For example, use 'en' for English, 'ta' for Tamil, 'hi' for Hindi, 'fr' for French etc.
+
+For ISO code reference, please check the link https://www.loc.gov/standards/iso639-2/php/code_list.php
+
+```python
+def get_qa_enterprise(self,
+                     body=None)
+```
+
+## Parameters
+
+| Parameter | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `body` | [`ApiQuestionRequest`](/doc/models/api-question-request.md) | Body, Optional | Add a JSON Input as per the schema defined below |
+
+## Response Type
+
+[`ApiQuestionResponse`](/doc/models/api-question-response.md)
+
+## Example Usage
+
+```python
+body = ApiQuestionRequest()
+body.input = Input10()
+body.input.question = 'Who is father of Arya Stark?'
+body.input.lang = 'en'
+
+result = enterprise_only_controller.get_qa_enterprise(body)
+```
+
+## Example Response *(as JSON)*
+
+```json
+{
+  "answer": "உப்பு, புளி, மிளகாய்"
+}
+```
+
+## Errors
+
+| HTTP Status Code | Error Description | Exception Class |
+|  --- | --- | --- |
+| 400 | Bad Request | [`ErrorsException`](/doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`M426ErrorException`](/doc/models/m426-error-exception.md) |
+| 429 | Too Many Requests | `APIException` |
+
diff --git a/doc/models/api-imagecaption-request.md b/doc/models/api-imagecaption-request.md
new file mode 100644
index 0000000..430c1a2
--- /dev/null
+++ b/doc/models/api-imagecaption-request.md
@@ -0,0 +1,23 @@
+
+# Api Imagecaption Request
+
+## Structure
+
+`ApiImagecaptionRequest`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `input` | [`Input9`](/doc/models/input-9.md) | Required | - |
+
+## Example (as JSON)
+
+```json
+{
+  "input": {
+    "url": "url2"
+  }
+}
+```
+
diff --git a/doc/models/api-imagecaption-response.md b/doc/models/api-imagecaption-response.md
new file mode 100644
index 0000000..ae36c7a
--- /dev/null
+++ b/doc/models/api-imagecaption-response.md
@@ -0,0 +1,21 @@
+
+# Api Imagecaption Response
+
+## Structure
+
+`ApiImagecaptionResponse`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `generated_caption` | `string` | Required | - |
+
+## Example (as JSON)
+
+```json
+{
+  "generated_caption": "generated_caption2"
+}
+```
+
diff --git a/doc/models/api-ner-request-1.md b/doc/models/api-ner-request-1.md
index 15024cc..8b6461a 100644
--- a/doc/models/api-ner-request-1.md
+++ b/doc/models/api-ner-request-1.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input8`](/doc/models/input-8.html) | Required | - |
+| `input` | [`Input12`](/doc/models/input-12.md) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/api-ner-request.md b/doc/models/api-ner-request.md
index de30f25..d1a27e3 100644
--- a/doc/models/api-ner-request.md
+++ b/doc/models/api-ner-request.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input7`](/doc/models/input-7.html) | Required | - |
+| `input` | [`Input11`](/doc/models/input-11.md) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/api-qa-request-1.md b/doc/models/api-qa-request-1.md
index 3ccd12e..b5cf44f 100644
--- a/doc/models/api-qa-request-1.md
+++ b/doc/models/api-qa-request-1.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input6`](/doc/models/input-6.html) | Required | - |
+| `input` | [`Input6`](/doc/models/input-6.md) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/api-qa-request.md b/doc/models/api-qa-request.md
index 98e0b31..e013098 100644
--- a/doc/models/api-qa-request.md
+++ b/doc/models/api-qa-request.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input5`](/doc/models/input-5.html) | Required | - |
+| `input` | [`Input5`](/doc/models/input-5.md) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/api-question-request.md b/doc/models/api-question-request.md
new file mode 100644
index 0000000..91606b3
--- /dev/null
+++ b/doc/models/api-question-request.md
@@ -0,0 +1,24 @@
+
+# Api Question Request
+
+## Structure
+
+`ApiQuestionRequest`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `input` | [`Input10`](/doc/models/input-10.md) | Required | - |
+
+## Example (as JSON)
+
+```json
+{
+  "input": {
+    "question": "question0",
+    "lang": "lang0"
+  }
+}
+```
+
diff --git a/doc/models/api-question-response.md b/doc/models/api-question-response.md
new file mode 100644
index 0000000..905daa8
--- /dev/null
+++ b/doc/models/api-question-response.md
@@ -0,0 +1,21 @@
+
+# Api Question Response
+
+## Structure
+
+`ApiQuestionResponse`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `answer` | `string` | Required | Answer to the question. |
+
+## Example (as JSON)
+
+```json
+{
+  "answer": "answer4"
+}
+```
+
diff --git a/doc/models/api-summary-request-1.md b/doc/models/api-summary-request-1.md
index 26cde83..137912c 100644
--- a/doc/models/api-summary-request-1.md
+++ b/doc/models/api-summary-request-1.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input10`](/doc/models/input-10.html) | Required | - |
+| `input` | [`Input14`](/doc/models/input-14.md) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/api-summary-request.md b/doc/models/api-summary-request.md
index 6bee164..503269b 100644
--- a/doc/models/api-summary-request.md
+++ b/doc/models/api-summary-request.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input9`](/doc/models/input-9.html) | Required | - |
+| `input` | [`Input13`](/doc/models/input-13.md) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/api-tableqa-request-1.md b/doc/models/api-tableqa-request-1.md
new file mode 100644
index 0000000..80a5100
--- /dev/null
+++ b/doc/models/api-tableqa-request-1.md
@@ -0,0 +1,29 @@
+
+# Api Tableqa Request 1
+
+## Structure
+
+`ApiTableqaRequest1`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `input` | [`Input8`](/doc/models/input-8.md) | Required | - |
+
+## Example (as JSON)
+
+```json
+{
+  "input": {
+    "url": "url2",
+    "sendBackRows": false,
+    "questions": [
+      "questions3",
+      "questions4",
+      "questions5"
+    ]
+  }
+}
+```
+
diff --git a/doc/models/api-tableqa-request.md b/doc/models/api-tableqa-request.md
new file mode 100644
index 0000000..574fcaa
--- /dev/null
+++ b/doc/models/api-tableqa-request.md
@@ -0,0 +1,32 @@
+
+# Api Tableqa Request
+
+## Structure
+
+`ApiTableqaRequest`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `input` | [`Input7`](/doc/models/input-7.md) | Required | - |
+
+## Example (as JSON)
+
+```json
+{
+  "input": {
+    "flattable": {
+      "key1": "val1",
+      "key2": "val2"
+    },
+    "sendBackRows": false,
+    "questions": [
+      "questions3",
+      "questions4",
+      "questions5"
+    ]
+  }
+}
+```
+
diff --git a/doc/models/api-tableqa-response.md b/doc/models/api-tableqa-response.md
new file mode 100644
index 0000000..21ae340
--- /dev/null
+++ b/doc/models/api-tableqa-response.md
@@ -0,0 +1,25 @@
+
+# Api Tableqa Response
+
+## Structure
+
+`ApiTableqaResponse`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `query` | `string` | Optional | Original Question |
+| `answer` | `List of string` | Optional | - |
+| `rows` | `List of string` | Optional | - |
+
+## Example (as JSON)
+
+```json
+{
+  "query": null,
+  "answer": null,
+  "rows": null
+}
+```
+
diff --git a/doc/models/api-translate-request-1.md b/doc/models/api-translate-request-1.md
index c7a37cc..88482e1 100644
--- a/doc/models/api-translate-request-1.md
+++ b/doc/models/api-translate-request-1.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input12`](/doc/models/input-12.html) | Required | - |
+| `input` | [`Input16`](/doc/models/input-16.md) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/api-translate-request.md b/doc/models/api-translate-request.md
index 6ee6022..2736557 100644
--- a/doc/models/api-translate-request.md
+++ b/doc/models/api-translate-request.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input11`](/doc/models/input-11.html) | Required | - |
+| `input` | [`Input15`](/doc/models/input-15.md) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/errors-exception.md b/doc/models/errors-exception.md
index b3c2e92..ff1263e 100644
--- a/doc/models/errors-exception.md
+++ b/doc/models/errors-exception.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `errors` | [`List of Errors1`](/firstlanguage_python/doc/models/errors-1.html) | Optional | - |
+| `errors` | [`List of Errors1`](/doc/models/errors-1.md) | Optional | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/input-10.md b/doc/models/input-10.md
index f6d5ab5..42e9d77 100644
--- a/doc/models/input-10.md
+++ b/doc/models/input-10.md
@@ -9,17 +9,15 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
-| `content_type` | `string` | Required | Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing. |
-| `url` | `string` | Required | Text from this URL will be read and a summary generated |
+| `question` | `string` | Required | Question to be answered from the context loaded in memory |
+| `lang` | `string` | Required | Language of the question |
 
 ## Example (as JSON)
 
 ```json
 {
-  "lang": "lang2",
-  "contentType": "contentType6",
-  "url": "url4"
+  "question": "question8",
+  "lang": "lang2"
 }
 ```
 
diff --git a/doc/models/input-11.md b/doc/models/input-11.md
index 96a49c8..055656f 100644
--- a/doc/models/input-11.md
+++ b/doc/models/input-11.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `text` | `string` | Required | Text for which translation should be generated |
+| `text` | `string` | Required | Named Entities will be marked from this text. Special characters will not be stripped. |
 | `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
 
 ## Example (as JSON)
diff --git a/doc/models/input-12.md b/doc/models/input-12.md
index 6762f7c..cabe12d 100644
--- a/doc/models/input-12.md
+++ b/doc/models/input-12.md
@@ -11,7 +11,7 @@
 |  --- | --- | --- | --- |
 | `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
 | `content_type` | `string` | Required | Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing. |
-| `url` | `string` | Required | Text from this URL will be read and a translation generated |
+| `url` | `string` | Required | URL where the text for the NER task is stored. |
 
 ## Example (as JSON)
 
diff --git a/doc/models/input-13.md b/doc/models/input-13.md
new file mode 100644
index 0000000..366145d
--- /dev/null
+++ b/doc/models/input-13.md
@@ -0,0 +1,23 @@
+
+# Input 13
+
+## Structure
+
+`Input13`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `text` | `string` | Required | Text for which summary should be generated |
+| `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
+
+## Example (as JSON)
+
+```json
+{
+  "text": "text0",
+  "lang": "lang2"
+}
+```
+
diff --git a/doc/models/input-14.md b/doc/models/input-14.md
new file mode 100644
index 0000000..e0d2e68
--- /dev/null
+++ b/doc/models/input-14.md
@@ -0,0 +1,25 @@
+
+# Input 14
+
+## Structure
+
+`Input14`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
+| `content_type` | `string` | Required | Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing. |
+| `url` | `string` | Required | Text from this URL will be read and a summary generated |
+
+## Example (as JSON)
+
+```json
+{
+  "lang": "lang2",
+  "contentType": "contentType6",
+  "url": "url4"
+}
+```
+
diff --git a/doc/models/input-15.md b/doc/models/input-15.md
new file mode 100644
index 0000000..9e24bac
--- /dev/null
+++ b/doc/models/input-15.md
@@ -0,0 +1,23 @@
+
+# Input 15
+
+## Structure
+
+`Input15`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `text` | `string` | Required | Text for which translation should be generated |
+| `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
+
+## Example (as JSON)
+
+```json
+{
+  "text": "text0",
+  "lang": "lang2"
+}
+```
+
diff --git a/doc/models/input-16.md b/doc/models/input-16.md
new file mode 100644
index 0000000..5b0b629
--- /dev/null
+++ b/doc/models/input-16.md
@@ -0,0 +1,25 @@
+
+# Input 16
+
+## Structure
+
+`Input16`
+
+## Fields
+
+| Name | Type | Tags | Description |
+|  --- | --- | --- | --- |
+| `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
+| `content_type` | `string` | Required | Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing. |
+| `url` | `string` | Required | Text from this URL will be read and a translation generated |
+
+## Example (as JSON)
+
+```json
+{
+  "lang": "lang2",
+  "contentType": "contentType6",
+  "url": "url4"
+}
+```
+
diff --git a/doc/models/input-5.md b/doc/models/input-5.md
index 6370f0c..c4a57e2 100644
--- a/doc/models/input-5.md
+++ b/doc/models/input-5.md
@@ -11,7 +11,7 @@
 |  --- | --- | --- | --- |
 | `question` | `string` | Required | Question to be answered from the context given. Only One question can be asked at a time. Special characters will not be stripped. |
 | `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
-| `context` | `string` | Required | Sentence or a paragraph. Special characters will not be stripped. |
+| `context` | `string` | Required | Sentence or a paragraph. Special characters will not be stripped. Maximum size limit is ~5KB of context text. |
 
 ## Example (as JSON)
 
diff --git a/doc/models/input-7.md b/doc/models/input-7.md
index da92345..c34172f 100644
--- a/doc/models/input-7.md
+++ b/doc/models/input-7.md
@@ -9,15 +9,22 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `text` | `string` | Required | Named Entities will be marked from this text. Special characters will not be stripped. |
-| `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
+| `flattable` | `object` | Required | Table if JSON format |
+| `send_back_rows` | `bool` | Required | Send back original rows from which the answer was extracted. Input either true or false. |
+| `questions` | `List of string` | Required | Array of questions. |
 
 ## Example (as JSON)
 
 ```json
 {
-  "text": "text0",
-  "lang": "lang2"
+  "flattable": {
+    "key1": "val1",
+    "key2": "val2"
+  },
+  "sendBackRows": false,
+  "questions": [
+    "questions1"
+  ]
 }
 ```
 
diff --git a/doc/models/input-8.md b/doc/models/input-8.md
index 6200545..aa7795e 100644
--- a/doc/models/input-8.md
+++ b/doc/models/input-8.md
@@ -9,17 +9,19 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
-| `content_type` | `string` | Required | Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing. |
-| `url` | `string` | Required | URL where the text for the NER task is stored. |
+| `url` | `string` | Required | URL of the CSV file. |
+| `send_back_rows` | `bool` | Required | Send back original rows from which the answer was extracted. Input either true or false. |
+| `questions` | `List of string` | Required | Array of questions |
 
 ## Example (as JSON)
 
 ```json
 {
-  "lang": "lang2",
-  "contentType": "contentType6",
-  "url": "url4"
+  "url": "url4",
+  "sendBackRows": false,
+  "questions": [
+    "questions1"
+  ]
 }
 ```
 
diff --git a/doc/models/input-9.md b/doc/models/input-9.md
index 31fcc63..5750d83 100644
--- a/doc/models/input-9.md
+++ b/doc/models/input-9.md
@@ -9,15 +9,13 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `text` | `string` | Required | Text for which summary should be generated |
-| `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
+| `url` | `string` | Required | - |
 
 ## Example (as JSON)
 
 ```json
 {
-  "text": "text0",
-  "lang": "lang2"
+  "url": "url4"
 }
 ```
 
diff --git a/doc/models/responsemorph.md b/doc/models/responsemorph.md
index c660902..2189224 100644
--- a/doc/models/responsemorph.md
+++ b/doc/models/responsemorph.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `orignal_string` | [`OrignalString`](/firstlanguage_python/doc/models/orignal-string.html) | Optional | - |
+| `orignal_string` | [`OrignalString`](/doc/models/orignal-string.md) | Optional | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/text-input-classify.md b/doc/models/text-input-classify.md
index 9eb9655..29bbd21 100644
--- a/doc/models/text-input-classify.md
+++ b/doc/models/text-input-classify.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input2`](/firstlanguage_python/doc/models/input-2.html) | Required | - |
+| `input` | [`Input2`](/doc/models/input-2.md) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/text-input-tamil.md b/doc/models/text-input-tamil.md
index 2ec52e9..e4df4be 100644
--- a/doc/models/text-input-tamil.md
+++ b/doc/models/text-input-tamil.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input4`](/firstlanguage_python/doc/models/input-4.html) | Required | - |
+| `input` | [`Input4`](/doc/models/input-4.md) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/text-input.md b/doc/models/text-input.md
index 618ec7f..603f2ff 100644
--- a/doc/models/text-input.md
+++ b/doc/models/text-input.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input`](/firstlanguage_python/doc/models/input.html) | Required | Direct Text Input |
+| `input` | [`Input`](/doc/models/input.md) | Required | Direct Text Input |
 
 ## Example (as JSON)
 
diff --git a/doc/models/url-input-classify.md b/doc/models/url-input-classify.md
index 68640ed..41192bf 100644
--- a/doc/models/url-input-classify.md
+++ b/doc/models/url-input-classify.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input3`](/firstlanguage_python/doc/models/input-3.html) | Required | - |
+| `input` | [`Input3`](/doc/models/input-3.md) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/url-input.md b/doc/models/url-input.md
index aa17ca7..8a86451 100644
--- a/doc/models/url-input.md
+++ b/doc/models/url-input.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input1`](/firstlanguage_python/doc/models/input-1.html) | Required | Text for processing will be read from the given URL. Only HTML pages or text pages will be processed at this time. |
+| `input` | [`Input1`](/doc/models/input-1.md) | Required | Text for processing will be read from the given URL. Only HTML pages or text pages will be processed at this time. |
 
 ## Example (as JSON)
 
diff --git a/example_Stemmer.py b/example_Stemmer.py
index 06d62da..789ba79 100644
--- a/example_Stemmer.py
+++ b/example_Stemmer.py
@@ -27,3 +27,12 @@
 result = advanced_api_controller.get_translate(body)
 
 print(result)
+
+reqbody='{"input":{"url":"https://i.redd.it/v1fvin01ynv51.jpg"} }'
+
+body = jsonpickle.decode(reqbody)
+
+result = advanced_api_controller.get_image_caption(body)
+
+print("generated caption: "+result.generated_caption)
+
diff --git a/firstlanguage_python.egg-info/PKG-INFO b/firstlanguage_python.egg-info/PKG-INFO
index 4c8b662..bbea842 100644
--- a/firstlanguage_python.egg-info/PKG-INFO
+++ b/firstlanguage_python.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 2.1
 Name: firstlanguage-python
-Version: 1.0.1
+Version: 2
 Summary: Python client library for FirstLanguage API
 Home-page: https://www.firstlanguage.in/contactus
 Author: FirstLanguage
 Author-email: info@firstlanguage.in
 License: UNKNOWN
-Download-URL: https://github.com/FirstLanguage/firstlanguage_python/archive/refs/tags/v_1.tar.gz
+Download-URL: https://github.com/FirstLanguage/firstlanguage_python/archive/refs/tags/v2.0.tar.gz
 Description: 
         # Getting Started with FirstLanguage API
         
diff --git a/firstlanguage_python.egg-info/SOURCES.txt b/firstlanguage_python.egg-info/SOURCES.txt
index db68ebc..9a71ae7 100644
--- a/firstlanguage_python.egg-info/SOURCES.txt
+++ b/firstlanguage_python.egg-info/SOURCES.txt
@@ -1,6 +1,6 @@
 LICENSE
 MANIFEST.in
-README.html
+README.md
 setup.cfg
 setup.py
 firstlanguage_python/__init__.py
@@ -17,6 +17,7 @@ firstlanguage_python/controllers/__init__.py
 firstlanguage_python/controllers/advanced_api_controller.py
 firstlanguage_python/controllers/base_controller.py
 firstlanguage_python/controllers/basic_api_controller.py
+firstlanguage_python/controllers/enterprise_only_controller.py
 firstlanguage_python/exceptions/__init__.py
 firstlanguage_python/exceptions/api_classify_426_error_exception.py
 firstlanguage_python/exceptions/api_exception.py
@@ -34,7 +35,7 @@ firstlanguage_python/http/http_request.py
 firstlanguage_python/http/http_response.py
 firstlanguage_python/http/requests_client.py
 firstlanguage_python/http/auth/__init__.py
-firstlanguage_python/http/auth/custom_header_auth.py
+firstlanguage_python/http/auth/custom_header_authentication.py
 firstlanguage_python/models/__init__.py
 firstlanguage_python/models/api_ner_request.py
 firstlanguage_python/models/api_ner_request_1.py
@@ -42,9 +43,14 @@ firstlanguage_python/models/api_ner_response.py
 firstlanguage_python/models/api_qa_request.py
 firstlanguage_python/models/api_qa_request_1.py
 firstlanguage_python/models/api_qa_response.py
+firstlanguage_python/models/api_question_request.py
+firstlanguage_python/models/api_question_response.py
 firstlanguage_python/models/api_summary_request.py
 firstlanguage_python/models/api_summary_request_1.py
 firstlanguage_python/models/api_summary_response.py
+firstlanguage_python/models/api_tableqa_request.py
+firstlanguage_python/models/api_tableqa_request_1.py
+firstlanguage_python/models/api_tableqa_response.py
 firstlanguage_python/models/api_translate_request.py
 firstlanguage_python/models/api_translate_request_1.py
 firstlanguage_python/models/api_translate_response.py
@@ -54,6 +60,9 @@ firstlanguage_python/models/input_1.py
 firstlanguage_python/models/input_10.py
 firstlanguage_python/models/input_11.py
 firstlanguage_python/models/input_12.py
+firstlanguage_python/models/input_13.py
+firstlanguage_python/models/input_14.py
+firstlanguage_python/models/input_15.py
 firstlanguage_python/models/input_2.py
 firstlanguage_python/models/input_3.py
 firstlanguage_python/models/input_4.py
@@ -81,4 +90,6 @@ tests/http_response_catcher.py
 tests/test_helper.py
 tests/controllers/__init__.py
 tests/controllers/controller_test_base.py
-tests/controllers/test_advanced_ap_is_controller.py
\ No newline at end of file
+tests/controllers/test_advanced_ap_is_controller.py
+tests/controllers/test_basic_ap_is_controller.py
+tests/controllers/test_enterprise_only_controller.py
\ No newline at end of file
diff --git a/firstlanguage_python.egg-info/requires.txt b/firstlanguage_python.egg-info/requires.txt
index 970bfb9..b68d62f 100644
--- a/firstlanguage_python.egg-info/requires.txt
+++ b/firstlanguage_python.egg-info/requires.txt
@@ -3,4 +3,4 @@ enum34>=1.1.10,~=1.1
 jsonpickle>=1.4.1,~=1.4
 jsonschema~=3.2.0
 python-dateutil~=2.8.1
-requests~=2.24
+requests~=2.25
diff --git a/firstlanguage_python/controllers/__pycache__/advanced_api_controller.cpython-39.pyc b/firstlanguage_python/controllers/__pycache__/advanced_api_controller.cpython-39.pyc
index ec107cd1562683c83ad1ba5657de9934daabf401..aa14376c3001fa39af3c1b95b0b755b6c9ff9c0f 100644
GIT binary patch
diff --git a/firstlanguage_python/controllers/advanced_api_controller.py b/firstlanguage_python/controllers/advanced_api_controller.py
index f66150c..18130e9 100644
--- a/firstlanguage_python/controllers/advanced_api_controller.py
+++ b/firstlanguage_python/controllers/advanced_api_controller.py
@@ -13,6 +13,7 @@
 from firstlanguage_python.models.responseclassify import Responseclassify
 from firstlanguage_python.models.api_qa_response import ApiQaResponse
 from firstlanguage_python.models.api_tableqa_response import ApiTableqaResponse
+from firstlanguage_python.models.api_imagecaption_response import ApiImagecaptionResponse
 from firstlanguage_python.models.api_ner_response import ApiNerResponse
 from firstlanguage_python.models.api_summary_response import ApiSummaryResponse
 from firstlanguage_python.models.api_translate_response import ApiTranslateResponse
@@ -251,6 +252,75 @@ def get_table_qa(self,
 
         return decoded
 
+    def get_image_caption(self,
+                          body=None):
+        """Does a POST request to /api/imagecaption.
+
+        # Image Captioning with Visual Attention : Defintion and it's usage
+        Image Captioning is the process of generating textual description of
+        an image. It uses both Natural Language Processing and Computer Vision
+        to generate the captions.
+        This API works generates only English Captions
+        <b>Enterprise Plan Alert:</b> For Enterprise Users GPU powered
+        endpoint can be provisioned. <b> This will reduce the response time of
+        the API by alomst 90%.</b> 
+
+        Args:
+            body (ApiImagecaptionRequest, optional): Add a JSON Input as per
+                the schema defined below.   For URL, if you are providing
+                Google drive or Google Spreadsheet url ensure that you provide
+                a link which can download the file directly and not the share
+                link.  Example: For Google Spreadsheet, the url format will be
+                like below:
+                https://docs.google.com/spreadsheets/d/1TtzPAHqpaTB7Ltdq0zwZ8Fa
+                mF7OwI/export?format=csv&gid=151344200  Or for Google Drive,
+                it will be like below:
+                https://drive.google.com/uc?id=idofthefile
+
+        Returns:
+            ApiImagecaptionResponse: Response from the API. Generates caption
+                for the provided image.
+
+        Raises:
+            APIException: When an error occurs while fetching the data from
+                the remote API. This exception includes the HTTP Response
+                code, an error message, and the HTTP body that was received in
+                the request.
+
+        """
+
+        # Prepare query URL
+        _url_path = '/api/imagecaption'
+        _query_builder = self.config.get_base_uri()
+        _query_builder += _url_path
+        _query_url = APIHelper.clean_url(_query_builder)
+
+        # Prepare headers
+        _headers = {
+            'accept': 'application/json',
+            'Content-Type': 'application/json'
+        }
+
+        # Prepare and execute request
+        _request = self.config.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body))
+        # Apply authentication scheme on request
+        self.apply_auth_schemes(_request, 'global')
+
+        _response = self.execute_request(_request)
+
+        # Endpoint and global error handling using HTTP status codes.
+        if _response.status_code == 400:
+            raise ErrorsException('Bad Request', _response)
+        elif _response.status_code == 426:
+            raise M426ErrorException('Please use HTTPS protocol', _response)
+        elif _response.status_code == 429:
+            raise APIException('Too Many Requests', _response)
+        self.validate_response(_response)
+
+        decoded = APIHelper.json_deserialize(_response.text, ApiImagecaptionResponse.from_dictionary)
+
+        return decoded
+
     def get_ner(self,
                 body=None):
         """Does a POST request to /api/ner.
diff --git a/firstlanguage_python/models/__init__.py b/firstlanguage_python/models/__init__.py
index 5d24e3c..5d52411 100644
--- a/firstlanguage_python/models/__init__.py
+++ b/firstlanguage_python/models/__init__.py
@@ -6,6 +6,8 @@
     'text_input_tamil',
     'url_input',
     'url_input_classify',
+    'api_imagecaption_request',
+    'api_imagecaption_response',
     'api_ner_request',
     'api_ner_request_1',
     'api_ner_response',
@@ -40,6 +42,7 @@
     'input_13',
     'input_14',
     'input_15',
+    'input_16',
     'orignal_string',
     'responselemma',
     'responsepo',
diff --git a/firstlanguage_python/models/__pycache__/__init__.cpython-39.pyc b/firstlanguage_python/models/__pycache__/__init__.cpython-39.pyc
index cd693a77c0ee124e5f716eec5aeaba8baef79e0a..a7f1fa602b4b0847f2fd23fda83495762a688ae7 100644
GIT binary patch
diff --git a/firstlanguage_python/models/api_imagecaption_request.py b/firstlanguage_python/models/api_imagecaption_request.py
new file mode 100644
index 0000000..e43c3db
--- /dev/null
+++ b/firstlanguage_python/models/api_imagecaption_request.py
@@ -0,0 +1,73 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage_python
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+from firstlanguage_python.models.input_9 import Input9
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class ApiImagecaptionRequest(object):
+
+    """Implementation of the 'Api Imagecaption Request' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        input (Input9): TODO: type description here.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "input": 'input'
+    }
+
+    def __init__(self,
+                 input=None):
+        """Constructor for the ApiImagecaptionRequest class"""
+
+        # Initialize members of the class
+        self.input = input
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        input = Input9.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+
+        # Return an object of this model
+        return cls(input)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/api_imagecaption_response.py b/firstlanguage_python/models/api_imagecaption_response.py
new file mode 100644
index 0000000..557a3c5
--- /dev/null
+++ b/firstlanguage_python/models/api_imagecaption_response.py
@@ -0,0 +1,72 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage_python
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class ApiImagecaptionResponse(object):
+
+    """Implementation of the 'Api Imagecaption Response' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        generated_caption (string): TODO: type description here.
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "generated_caption": 'generated_caption'
+    }
+
+    def __init__(self,
+                 generated_caption=None):
+        """Constructor for the ApiImagecaptionResponse class"""
+
+        # Initialize members of the class
+        self.generated_caption = generated_caption
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        generated_caption = dictionary.get('generated_caption')
+
+        # Return an object of this model
+        return cls(generated_caption)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/api_ner_request.py b/firstlanguage_python/models/api_ner_request.py
index ee2b0ca..f1ef451 100644
--- a/firstlanguage_python/models/api_ner_request.py
+++ b/firstlanguage_python/models/api_ner_request.py
@@ -6,7 +6,7 @@
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
-from firstlanguage_python.models.input_10 import Input10
+from firstlanguage_python.models.input_11 import Input11
 import os
 from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
 from jsonschema import ValidationError
@@ -20,7 +20,7 @@ class ApiNerRequest(object):
     TODO: type model description here.
 
     Attributes:
-        input (Input10): TODO: type description here.
+        input (Input11): TODO: type description here.
 
     """
 
@@ -54,7 +54,7 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
-        input = Input10.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+        input = Input11.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
 
         # Return an object of this model
         return cls(input)
diff --git a/firstlanguage_python/models/api_ner_request_1.py b/firstlanguage_python/models/api_ner_request_1.py
index 6db97ec..00d5c14 100644
--- a/firstlanguage_python/models/api_ner_request_1.py
+++ b/firstlanguage_python/models/api_ner_request_1.py
@@ -6,7 +6,7 @@
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
-from firstlanguage_python.models.input_11 import Input11
+from firstlanguage_python.models.input_12 import Input12
 import os
 from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
 from jsonschema import ValidationError
@@ -20,7 +20,7 @@ class ApiNerRequest1(object):
     TODO: type model description here.
 
     Attributes:
-        input (Input11): TODO: type description here.
+        input (Input12): TODO: type description here.
 
     """
 
@@ -54,7 +54,7 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
-        input = Input11.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+        input = Input12.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
 
         # Return an object of this model
         return cls(input)
diff --git a/firstlanguage_python/models/api_question_request.py b/firstlanguage_python/models/api_question_request.py
index 9727d9e..e2ef2c2 100644
--- a/firstlanguage_python/models/api_question_request.py
+++ b/firstlanguage_python/models/api_question_request.py
@@ -6,7 +6,7 @@
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
-from firstlanguage_python.models.input_9 import Input9
+from firstlanguage_python.models.input_10 import Input10
 import os
 from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
 from jsonschema import ValidationError
@@ -20,7 +20,7 @@ class ApiQuestionRequest(object):
     TODO: type model description here.
 
     Attributes:
-        input (Input9): TODO: type description here.
+        input (Input10): TODO: type description here.
 
     """
 
@@ -54,7 +54,7 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
-        input = Input9.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+        input = Input10.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
 
         # Return an object of this model
         return cls(input)
diff --git a/firstlanguage_python/models/api_summary_request.py b/firstlanguage_python/models/api_summary_request.py
index 60f552b..da23dd6 100644
--- a/firstlanguage_python/models/api_summary_request.py
+++ b/firstlanguage_python/models/api_summary_request.py
@@ -6,7 +6,7 @@
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
-from firstlanguage_python.models.input_12 import Input12
+from firstlanguage_python.models.input_13 import Input13
 import os
 from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
 from jsonschema import ValidationError
@@ -20,7 +20,7 @@ class ApiSummaryRequest(object):
     TODO: type model description here.
 
     Attributes:
-        input (Input12): TODO: type description here.
+        input (Input13): TODO: type description here.
 
     """
 
@@ -54,7 +54,7 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
-        input = Input12.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+        input = Input13.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
 
         # Return an object of this model
         return cls(input)
diff --git a/firstlanguage_python/models/api_summary_request_1.py b/firstlanguage_python/models/api_summary_request_1.py
index 5ba6ae4..94c22c0 100644
--- a/firstlanguage_python/models/api_summary_request_1.py
+++ b/firstlanguage_python/models/api_summary_request_1.py
@@ -6,7 +6,7 @@
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
-from firstlanguage_python.models.input_13 import Input13
+from firstlanguage_python.models.input_14 import Input14
 import os
 from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
 from jsonschema import ValidationError
@@ -20,7 +20,7 @@ class ApiSummaryRequest1(object):
     TODO: type model description here.
 
     Attributes:
-        input (Input13): TODO: type description here.
+        input (Input14): TODO: type description here.
 
     """
 
@@ -54,7 +54,7 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
-        input = Input13.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+        input = Input14.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
 
         # Return an object of this model
         return cls(input)
diff --git a/firstlanguage_python/models/api_translate_request.py b/firstlanguage_python/models/api_translate_request.py
index d8f5947..c894cb9 100644
--- a/firstlanguage_python/models/api_translate_request.py
+++ b/firstlanguage_python/models/api_translate_request.py
@@ -6,7 +6,7 @@
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
-from firstlanguage_python.models.input_14 import Input14
+from firstlanguage_python.models.input_15 import Input15
 import os
 from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
 from jsonschema import ValidationError
@@ -20,7 +20,7 @@ class ApiTranslateRequest(object):
     TODO: type model description here.
 
     Attributes:
-        input (Input14): TODO: type description here.
+        input (Input15): TODO: type description here.
 
     """
 
@@ -54,7 +54,7 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
-        input = Input14.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+        input = Input15.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
 
         # Return an object of this model
         return cls(input)
diff --git a/firstlanguage_python/models/api_translate_request_1.py b/firstlanguage_python/models/api_translate_request_1.py
index caf5d92..b356d4f 100644
--- a/firstlanguage_python/models/api_translate_request_1.py
+++ b/firstlanguage_python/models/api_translate_request_1.py
@@ -6,7 +6,7 @@
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
-from firstlanguage_python.models.input_15 import Input15
+from firstlanguage_python.models.input_16 import Input16
 import os
 from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
 from jsonschema import ValidationError
@@ -20,7 +20,7 @@ class ApiTranslateRequest1(object):
     TODO: type model description here.
 
     Attributes:
-        input (Input15): TODO: type description here.
+        input (Input16): TODO: type description here.
 
     """
 
@@ -54,7 +54,7 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
-        input = Input15.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
+        input = Input16.from_dictionary(dictionary.get('input')) if dictionary.get('input') else None
 
         # Return an object of this model
         return cls(input)
diff --git a/firstlanguage_python/models/input_10.py b/firstlanguage_python/models/input_10.py
index 2d2e72a..1617cae 100644
--- a/firstlanguage_python/models/input_10.py
+++ b/firstlanguage_python/models/input_10.py
@@ -19,26 +19,25 @@ class Input10(object):
     TODO: type model description here.
 
     Attributes:
-        text (string): Named Entities will be marked from this text. Special
-            characters will not be stripped.
-        lang (string): Allowed language code. Refer Allowed languages
-            section.
+        question (string): Question to be answered from the context loaded in
+            memory
+        lang (string): Language of the question
 
     """
 
     # Create a mapping from Model property names to API property names
     _names = {
-        "text": 'text',
+        "question": 'question',
         "lang": 'lang'
     }
 
     def __init__(self,
-                 text=None,
+                 question=None,
                  lang=None):
         """Constructor for the Input10 class"""
 
         # Initialize members of the class
-        self.text = text
+        self.question = question
         self.lang = lang
 
     @classmethod
@@ -59,11 +58,11 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
-        text = dictionary.get('text')
+        question = dictionary.get('question')
         lang = dictionary.get('lang')
 
         # Return an object of this model
-        return cls(text,
+        return cls(question,
                    lang)
 
     @classmethod
diff --git a/firstlanguage_python/models/input_11.py b/firstlanguage_python/models/input_11.py
index 7e50339..18bf38e 100644
--- a/firstlanguage_python/models/input_11.py
+++ b/firstlanguage_python/models/input_11.py
@@ -19,32 +19,27 @@ class Input11(object):
     TODO: type model description here.
 
     Attributes:
+        text (string): Named Entities will be marked from this text. Special
+            characters will not be stripped.
         lang (string): Allowed language code. Refer Allowed languages
             section.
-        content_type (string): Allowed values or html or text. If html is
-            specified all html tags and special characters will be stripped
-            before processing.
-        url (string): URL where the text for the NER task is stored.
 
     """
 
     # Create a mapping from Model property names to API property names
     _names = {
-        "lang": 'lang',
-        "content_type": 'contentType',
-        "url": 'url'
+        "text": 'text',
+        "lang": 'lang'
     }
 
     def __init__(self,
-                 lang=None,
-                 content_type=None,
-                 url=None):
+                 text=None,
+                 lang=None):
         """Constructor for the Input11 class"""
 
         # Initialize members of the class
+        self.text = text
         self.lang = lang
-        self.content_type = content_type
-        self.url = url
 
     @classmethod
     def from_dictionary(cls,
@@ -64,14 +59,12 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
+        text = dictionary.get('text')
         lang = dictionary.get('lang')
-        content_type = dictionary.get('contentType')
-        url = dictionary.get('url')
 
         # Return an object of this model
-        return cls(lang,
-                   content_type,
-                   url)
+        return cls(text,
+                   lang)
 
     @classmethod
     def validate(cls, val):
diff --git a/firstlanguage_python/models/input_12.py b/firstlanguage_python/models/input_12.py
index b703d1b..2edd52c 100644
--- a/firstlanguage_python/models/input_12.py
+++ b/firstlanguage_python/models/input_12.py
@@ -19,26 +19,32 @@ class Input12(object):
     TODO: type model description here.
 
     Attributes:
-        text (string): Text for which summary should be generated
         lang (string): Allowed language code. Refer Allowed languages
             section.
+        content_type (string): Allowed values or html or text. If html is
+            specified all html tags and special characters will be stripped
+            before processing.
+        url (string): URL where the text for the NER task is stored.
 
     """
 
     # Create a mapping from Model property names to API property names
     _names = {
-        "text": 'text',
-        "lang": 'lang'
+        "lang": 'lang',
+        "content_type": 'contentType',
+        "url": 'url'
     }
 
     def __init__(self,
-                 text=None,
-                 lang=None):
+                 lang=None,
+                 content_type=None,
+                 url=None):
         """Constructor for the Input12 class"""
 
         # Initialize members of the class
-        self.text = text
         self.lang = lang
+        self.content_type = content_type
+        self.url = url
 
     @classmethod
     def from_dictionary(cls,
@@ -58,12 +64,14 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
-        text = dictionary.get('text')
         lang = dictionary.get('lang')
+        content_type = dictionary.get('contentType')
+        url = dictionary.get('url')
 
         # Return an object of this model
-        return cls(text,
-                   lang)
+        return cls(lang,
+                   content_type,
+                   url)
 
     @classmethod
     def validate(cls, val):
diff --git a/firstlanguage_python/models/input_13.py b/firstlanguage_python/models/input_13.py
index 43a63f3..7e50bf0 100644
--- a/firstlanguage_python/models/input_13.py
+++ b/firstlanguage_python/models/input_13.py
@@ -19,32 +19,26 @@ class Input13(object):
     TODO: type model description here.
 
     Attributes:
+        text (string): Text for which summary should be generated
         lang (string): Allowed language code. Refer Allowed languages
             section.
-        content_type (string): Allowed values or html or text. If html is
-            specified all html tags and special characters will be stripped
-            before processing.
-        url (string): Text from this URL will be read and a summary generated
 
     """
 
     # Create a mapping from Model property names to API property names
     _names = {
-        "lang": 'lang',
-        "content_type": 'contentType',
-        "url": 'url'
+        "text": 'text',
+        "lang": 'lang'
     }
 
     def __init__(self,
-                 lang=None,
-                 content_type=None,
-                 url=None):
+                 text=None,
+                 lang=None):
         """Constructor for the Input13 class"""
 
         # Initialize members of the class
+        self.text = text
         self.lang = lang
-        self.content_type = content_type
-        self.url = url
 
     @classmethod
     def from_dictionary(cls,
@@ -64,14 +58,12 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
+        text = dictionary.get('text')
         lang = dictionary.get('lang')
-        content_type = dictionary.get('contentType')
-        url = dictionary.get('url')
 
         # Return an object of this model
-        return cls(lang,
-                   content_type,
-                   url)
+        return cls(text,
+                   lang)
 
     @classmethod
     def validate(cls, val):
diff --git a/firstlanguage_python/models/input_14.py b/firstlanguage_python/models/input_14.py
index e8fa59f..2a6cfc7 100644
--- a/firstlanguage_python/models/input_14.py
+++ b/firstlanguage_python/models/input_14.py
@@ -19,26 +19,32 @@ class Input14(object):
     TODO: type model description here.
 
     Attributes:
-        text (string): Text for which translation should be generated
         lang (string): Allowed language code. Refer Allowed languages
             section.
+        content_type (string): Allowed values or html or text. If html is
+            specified all html tags and special characters will be stripped
+            before processing.
+        url (string): Text from this URL will be read and a summary generated
 
     """
 
     # Create a mapping from Model property names to API property names
     _names = {
-        "text": 'text',
-        "lang": 'lang'
+        "lang": 'lang',
+        "content_type": 'contentType',
+        "url": 'url'
     }
 
     def __init__(self,
-                 text=None,
-                 lang=None):
+                 lang=None,
+                 content_type=None,
+                 url=None):
         """Constructor for the Input14 class"""
 
         # Initialize members of the class
-        self.text = text
         self.lang = lang
+        self.content_type = content_type
+        self.url = url
 
     @classmethod
     def from_dictionary(cls,
@@ -58,12 +64,14 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
-        text = dictionary.get('text')
         lang = dictionary.get('lang')
+        content_type = dictionary.get('contentType')
+        url = dictionary.get('url')
 
         # Return an object of this model
-        return cls(text,
-                   lang)
+        return cls(lang,
+                   content_type,
+                   url)
 
     @classmethod
     def validate(cls, val):
diff --git a/firstlanguage_python/models/input_15.py b/firstlanguage_python/models/input_15.py
index 7a27b2b..cf69d82 100644
--- a/firstlanguage_python/models/input_15.py
+++ b/firstlanguage_python/models/input_15.py
@@ -19,33 +19,26 @@ class Input15(object):
     TODO: type model description here.
 
     Attributes:
+        text (string): Text for which translation should be generated
         lang (string): Allowed language code. Refer Allowed languages
             section.
-        content_type (string): Allowed values or html or text. If html is
-            specified all html tags and special characters will be stripped
-            before processing.
-        url (string): Text from this URL will be read and a translation
-            generated
 
     """
 
     # Create a mapping from Model property names to API property names
     _names = {
-        "lang": 'lang',
-        "content_type": 'contentType',
-        "url": 'url'
+        "text": 'text',
+        "lang": 'lang'
     }
 
     def __init__(self,
-                 lang=None,
-                 content_type=None,
-                 url=None):
+                 text=None,
+                 lang=None):
         """Constructor for the Input15 class"""
 
         # Initialize members of the class
+        self.text = text
         self.lang = lang
-        self.content_type = content_type
-        self.url = url
 
     @classmethod
     def from_dictionary(cls,
@@ -65,14 +58,12 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
+        text = dictionary.get('text')
         lang = dictionary.get('lang')
-        content_type = dictionary.get('contentType')
-        url = dictionary.get('url')
 
         # Return an object of this model
-        return cls(lang,
-                   content_type,
-                   url)
+        return cls(text,
+                   lang)
 
     @classmethod
     def validate(cls, val):
diff --git a/firstlanguage_python/models/input_16.py b/firstlanguage_python/models/input_16.py
new file mode 100644
index 0000000..165f443
--- /dev/null
+++ b/firstlanguage_python/models/input_16.py
@@ -0,0 +1,88 @@
+# -*- coding: utf-8 -*-
+
+"""
+firstlanguage_python
+
+This file was automatically generated by APIMATIC v3.0 (
+ https://www.apimatic.io ).
+"""
+import os
+from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
+from jsonschema import ValidationError
+from firstlanguage_python.api_helper import APIHelper
+
+
+class Input16(object):
+
+    """Implementation of the 'Input16' model.
+
+    TODO: type model description here.
+
+    Attributes:
+        lang (string): Allowed language code. Refer Allowed languages
+            section.
+        content_type (string): Allowed values or html or text. If html is
+            specified all html tags and special characters will be stripped
+            before processing.
+        url (string): Text from this URL will be read and a translation
+            generated
+
+    """
+
+    # Create a mapping from Model property names to API property names
+    _names = {
+        "lang": 'lang',
+        "content_type": 'contentType',
+        "url": 'url'
+    }
+
+    def __init__(self,
+                 lang=None,
+                 content_type=None,
+                 url=None):
+        """Constructor for the Input16 class"""
+
+        # Initialize members of the class
+        self.lang = lang
+        self.content_type = content_type
+        self.url = url
+
+    @classmethod
+    def from_dictionary(cls,
+                        dictionary):
+        """Creates an instance of this model from a dictionary
+
+        Args:
+            dictionary (dictionary): A dictionary representation of the object
+            as obtained from the deserialization of the server's response. The
+            keys MUST match property names in the API description.
+
+        Returns:
+            object: An instance of this structure class.
+
+        """
+        if dictionary is None:
+            return None
+
+        # Extract variables from the dictionary
+        lang = dictionary.get('lang')
+        content_type = dictionary.get('contentType')
+        url = dictionary.get('url')
+
+        # Return an object of this model
+        return cls(lang,
+                   content_type,
+                   url)
+
+    @classmethod
+    def validate(cls, val):
+        """Validates value against class schema
+
+        Args:
+            val: the value to be validated
+
+        Returns:
+            boolean : if value is valid against schema.
+
+        """
+        return SchemaValidatorWrapper.getValidator(APIHelper.get_schema_path(os.path.abspath(__file__))).is_valid(val)
diff --git a/firstlanguage_python/models/input_9.py b/firstlanguage_python/models/input_9.py
index 103c23f..797f8a6 100644
--- a/firstlanguage_python/models/input_9.py
+++ b/firstlanguage_python/models/input_9.py
@@ -19,26 +19,21 @@ class Input9(object):
     TODO: type model description here.
 
     Attributes:
-        question (string): Question to be answered from the context loaded in
-            memory
-        lang (string): Language of the question
+        url (string): TODO: type description here.
 
     """
 
     # Create a mapping from Model property names to API property names
     _names = {
-        "question": 'question',
-        "lang": 'lang'
+        "url": 'url'
     }
 
     def __init__(self,
-                 question=None,
-                 lang=None):
+                 url=None):
         """Constructor for the Input9 class"""
 
         # Initialize members of the class
-        self.question = question
-        self.lang = lang
+        self.url = url
 
     @classmethod
     def from_dictionary(cls,
@@ -58,12 +53,10 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
-        question = dictionary.get('question')
-        lang = dictionary.get('lang')
+        url = dictionary.get('url')
 
         # Return an object of this model
-        return cls(question,
-                   lang)
+        return cls(url)
 
     @classmethod
     def validate(cls, val):
diff --git a/firstlanguage_python/schemas/api_imagecaption_request.json b/firstlanguage_python/schemas/api_imagecaption_request.json
new file mode 100644
index 0000000..3532f27
--- /dev/null
+++ b/firstlanguage_python/schemas/api_imagecaption_request.json
@@ -0,0 +1,22 @@
+{
+  "id": "Api Imagecaption Request",
+  "title": "Api Imagecaption Request",
+  "extensions": {
+    "x-examples": {
+      "example-1": {
+        "input": {
+          "url": "https://i.redd.it/v1fvin01ynv51.jpg"
+        }
+      }
+    }
+  },
+  "type": "object",
+  "properties": {
+    "input": {
+      "$ref": "Input9"
+    }
+  },
+  "required": [
+    "input"
+  ]
+}
diff --git a/firstlanguage_python/schemas/api_imagecaption_response.json b/firstlanguage_python/schemas/api_imagecaption_response.json
new file mode 100644
index 0000000..f0f8a22
--- /dev/null
+++ b/firstlanguage_python/schemas/api_imagecaption_response.json
@@ -0,0 +1,20 @@
+{
+  "id": "Api Imagecaption Response",
+  "title": "Api Imagecaption Response",
+  "extensions": {
+    "x-examples": {
+      "example-1": {
+        "generated_caption": "A view of a beach with a sun shining over it"
+      }
+    }
+  },
+  "type": "object",
+  "properties": {
+    "generated_caption": {
+      "type": "string"
+    }
+  },
+  "required": [
+    "generated_caption"
+  ]
+}
diff --git a/firstlanguage_python/schemas/api_ner_request.json b/firstlanguage_python/schemas/api_ner_request.json
index aafaee3..f1eb414 100644
--- a/firstlanguage_python/schemas/api_ner_request.json
+++ b/firstlanguage_python/schemas/api_ner_request.json
@@ -4,7 +4,7 @@
   "type": "object",
   "properties": {
     "input": {
-      "$ref": "Input10"
+      "$ref": "Input11"
     }
   },
   "required": [
diff --git a/firstlanguage_python/schemas/api_ner_request_1.json b/firstlanguage_python/schemas/api_ner_request_1.json
index 2d7b44c..7fcd3be 100644
--- a/firstlanguage_python/schemas/api_ner_request_1.json
+++ b/firstlanguage_python/schemas/api_ner_request_1.json
@@ -4,7 +4,7 @@
   "type": "object",
   "properties": {
     "input": {
-      "$ref": "Input11"
+      "$ref": "Input12"
     }
   },
   "required": [
diff --git a/firstlanguage_python/schemas/api_question_request.json b/firstlanguage_python/schemas/api_question_request.json
index 1b19cb8..1214a65 100644
--- a/firstlanguage_python/schemas/api_question_request.json
+++ b/firstlanguage_python/schemas/api_question_request.json
@@ -14,7 +14,7 @@
   "type": "object",
   "properties": {
     "input": {
-      "$ref": "Input9"
+      "$ref": "Input10"
     }
   },
   "required": [
diff --git a/firstlanguage_python/schemas/api_summary_request.json b/firstlanguage_python/schemas/api_summary_request.json
index ec607f6..d8d68ab 100644
--- a/firstlanguage_python/schemas/api_summary_request.json
+++ b/firstlanguage_python/schemas/api_summary_request.json
@@ -4,7 +4,7 @@
   "type": "object",
   "properties": {
     "input": {
-      "$ref": "Input12"
+      "$ref": "Input13"
     }
   },
   "required": [
diff --git a/firstlanguage_python/schemas/api_summary_request_1.json b/firstlanguage_python/schemas/api_summary_request_1.json
index 68505f5..8757751 100644
--- a/firstlanguage_python/schemas/api_summary_request_1.json
+++ b/firstlanguage_python/schemas/api_summary_request_1.json
@@ -4,7 +4,7 @@
   "type": "object",
   "properties": {
     "input": {
-      "$ref": "Input13"
+      "$ref": "Input14"
     }
   },
   "required": [
diff --git a/firstlanguage_python/schemas/api_translate_request.json b/firstlanguage_python/schemas/api_translate_request.json
index 2a5a005..c0aaf14 100644
--- a/firstlanguage_python/schemas/api_translate_request.json
+++ b/firstlanguage_python/schemas/api_translate_request.json
@@ -4,7 +4,7 @@
   "type": "object",
   "properties": {
     "input": {
-      "$ref": "Input14"
+      "$ref": "Input15"
     }
   },
   "required": [
diff --git a/firstlanguage_python/schemas/api_translate_request_1.json b/firstlanguage_python/schemas/api_translate_request_1.json
index d6fc1ce..c99d2a5 100644
--- a/firstlanguage_python/schemas/api_translate_request_1.json
+++ b/firstlanguage_python/schemas/api_translate_request_1.json
@@ -4,7 +4,7 @@
   "type": "object",
   "properties": {
     "input": {
-      "$ref": "Input15"
+      "$ref": "Input16"
     }
   },
   "required": [
diff --git a/firstlanguage_python/schemas/input_10.json b/firstlanguage_python/schemas/input_10.json
index a068a02..b6d6972 100644
--- a/firstlanguage_python/schemas/input_10.json
+++ b/firstlanguage_python/schemas/input_10.json
@@ -3,17 +3,17 @@
   "title": "Input10",
   "type": "object",
   "properties": {
-    "text": {
-      "description": "Named Entities will be marked from this text. Special characters will not be stripped.",
+    "question": {
+      "description": "Question to be answered from the context loaded in memory",
       "type": "string"
     },
     "lang": {
-      "description": "Allowed language code. Refer Allowed languages section.",
+      "description": "Language of the question",
       "type": "string"
     }
   },
   "required": [
-    "text",
+    "question",
     "lang"
   ]
 }
diff --git a/firstlanguage_python/schemas/input_11.json b/firstlanguage_python/schemas/input_11.json
index 2c55bcf..520d258 100644
--- a/firstlanguage_python/schemas/input_11.json
+++ b/firstlanguage_python/schemas/input_11.json
@@ -3,22 +3,17 @@
   "title": "Input11",
   "type": "object",
   "properties": {
-    "lang": {
-      "description": "Allowed language code. Refer Allowed languages section.",
-      "type": "string"
-    },
-    "contentType": {
-      "description": "Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing.",
+    "text": {
+      "description": "Named Entities will be marked from this text. Special characters will not be stripped.",
       "type": "string"
     },
-    "url": {
-      "description": "URL where the text for the NER task is stored.",
+    "lang": {
+      "description": "Allowed language code. Refer Allowed languages section.",
       "type": "string"
     }
   },
   "required": [
-    "lang",
-    "contentType",
-    "url"
+    "text",
+    "lang"
   ]
 }
diff --git a/firstlanguage_python/schemas/input_12.json b/firstlanguage_python/schemas/input_12.json
index 50e9287..5614d59 100644
--- a/firstlanguage_python/schemas/input_12.json
+++ b/firstlanguage_python/schemas/input_12.json
@@ -3,17 +3,22 @@
   "title": "Input12",
   "type": "object",
   "properties": {
-    "text": {
-      "description": "Text for which summary should be generated",
-      "type": "string"
-    },
     "lang": {
       "description": "Allowed language code. Refer Allowed languages section.",
       "type": "string"
+    },
+    "contentType": {
+      "description": "Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing.",
+      "type": "string"
+    },
+    "url": {
+      "description": "URL where the text for the NER task is stored.",
+      "type": "string"
     }
   },
   "required": [
-    "text",
-    "lang"
+    "lang",
+    "contentType",
+    "url"
   ]
 }
diff --git a/firstlanguage_python/schemas/input_13.json b/firstlanguage_python/schemas/input_13.json
index a30f8f6..71a5483 100644
--- a/firstlanguage_python/schemas/input_13.json
+++ b/firstlanguage_python/schemas/input_13.json
@@ -3,22 +3,17 @@
   "title": "Input13",
   "type": "object",
   "properties": {
-    "lang": {
-      "description": "Allowed language code. Refer Allowed languages section.",
-      "type": "string"
-    },
-    "contentType": {
-      "description": "Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing.",
+    "text": {
+      "description": "Text for which summary should be generated",
       "type": "string"
     },
-    "url": {
-      "description": "Text from this URL will be read and a summary generated",
+    "lang": {
+      "description": "Allowed language code. Refer Allowed languages section.",
       "type": "string"
     }
   },
   "required": [
-    "lang",
-    "contentType",
-    "url"
+    "text",
+    "lang"
   ]
 }
diff --git a/firstlanguage_python/schemas/input_14.json b/firstlanguage_python/schemas/input_14.json
index b8e13ca..27c2d29 100644
--- a/firstlanguage_python/schemas/input_14.json
+++ b/firstlanguage_python/schemas/input_14.json
@@ -3,17 +3,22 @@
   "title": "Input14",
   "type": "object",
   "properties": {
-    "text": {
-      "description": "Text for which translation should be generated",
-      "type": "string"
-    },
     "lang": {
       "description": "Allowed language code. Refer Allowed languages section.",
       "type": "string"
+    },
+    "contentType": {
+      "description": "Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing.",
+      "type": "string"
+    },
+    "url": {
+      "description": "Text from this URL will be read and a summary generated",
+      "type": "string"
     }
   },
   "required": [
-    "text",
-    "lang"
+    "lang",
+    "contentType",
+    "url"
   ]
 }
diff --git a/firstlanguage_python/schemas/input_15.json b/firstlanguage_python/schemas/input_15.json
index 13246aa..92875f2 100644
--- a/firstlanguage_python/schemas/input_15.json
+++ b/firstlanguage_python/schemas/input_15.json
@@ -3,22 +3,17 @@
   "title": "Input15",
   "type": "object",
   "properties": {
-    "lang": {
-      "description": "Allowed language code. Refer Allowed languages section.",
-      "type": "string"
-    },
-    "contentType": {
-      "description": "Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing.",
+    "text": {
+      "description": "Text for which translation should be generated",
       "type": "string"
     },
-    "url": {
-      "description": "Text from this URL will be read and a translation generated",
+    "lang": {
+      "description": "Allowed language code. Refer Allowed languages section.",
       "type": "string"
     }
   },
   "required": [
-    "lang",
-    "contentType",
-    "url"
+    "text",
+    "lang"
   ]
 }
diff --git a/firstlanguage_python/schemas/input_16.json b/firstlanguage_python/schemas/input_16.json
new file mode 100644
index 0000000..caf77fb
--- /dev/null
+++ b/firstlanguage_python/schemas/input_16.json
@@ -0,0 +1,24 @@
+{
+  "id": "Input16",
+  "title": "Input16",
+  "type": "object",
+  "properties": {
+    "lang": {
+      "description": "Allowed language code. Refer Allowed languages section.",
+      "type": "string"
+    },
+    "contentType": {
+      "description": "Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing.",
+      "type": "string"
+    },
+    "url": {
+      "description": "Text from this URL will be read and a translation generated",
+      "type": "string"
+    }
+  },
+  "required": [
+    "lang",
+    "contentType",
+    "url"
+  ]
+}
diff --git a/firstlanguage_python/schemas/input_9.json b/firstlanguage_python/schemas/input_9.json
index 7a62279..443bce0 100644
--- a/firstlanguage_python/schemas/input_9.json
+++ b/firstlanguage_python/schemas/input_9.json
@@ -3,17 +3,11 @@
   "title": "Input9",
   "type": "object",
   "properties": {
-    "question": {
-      "description": "Question to be answered from the context loaded in memory",
-      "type": "string"
-    },
-    "lang": {
-      "description": "Language of the question",
+    "url": {
       "type": "string"
     }
   },
   "required": [
-    "question",
-    "lang"
+    "url"
   ]
 }
diff --git a/setup.py b/setup.py
index 2f18d67..322ce8b 100644
--- a/setup.py
+++ b/setup.py
@@ -4,22 +4,22 @@
 from setuptools import setup, find_packages
 
 if sys.version_info[0] < 3:
-    with open('README.html', 'r') as fh:
+    with open('README.md', 'r') as fh:
         long_description = fh.read()
 else:
-    with open('README.html', 'r', encoding='utf-8') as fh:
+    with open('README.md', 'r', encoding='utf-8') as fh:
         long_description = fh.read()
 
 setup(
     name='firstlanguage_python',
-    version='1.0.2',
+    version='2.1',
     description='Python client library for FirstLanguage API',
     long_description=long_description,
     long_description_content_type="text/markdown",
     author='FirstLanguage',
     author_email='info@firstlanguage.in',
     url='https://www.firstlanguage.in/contactus',
-    download_url = 'https://github.com/FirstLanguage/firstlanguage_python/archive/refs/tags/v_1.tar.gz',
+    download_url = 'https://github.com/FirstLanguage/firstlanguage_python/archive/refs/tags/v2.0.tar.gz',
     keywords = ['FirstLanguage API', 'NLP', 'SDK', 'Python', 'Natural Language Processing'],  
     packages=find_packages(),
     install_requires=[

From 4c658324d455e5e8de60787da6b18186d3b28f0c Mon Sep 17 00:00:00 2001
From: Subalalitha <subalalitha@firstlanguage.in>
Date: Wed, 9 Mar 2022 15:49:14 +0530
Subject: [PATCH 30/34] PDF and DOCX changes

---
 .gitignore                                    |   2 +
 README.md                                     |   2 +
 dist/firstlanguage_python-2.1.tar.gz          | Bin 0 -> 41168 bytes
 doc/client.md                                 |  10 +-
 doc/controllers/advanced-ap-is.md             |  80 ++++++-------
 doc/controllers/basic-ap-is.md                |  48 ++++----
 doc/controllers/enterprise-only.md            |  14 +--
 doc/models/api-imagecaption-request.md        |   2 +-
 doc/models/api-ner-request-1.md               |   2 +-
 doc/models/api-ner-request.md                 |   2 +-
 doc/models/api-qa-request-1.md                |   2 +-
 doc/models/api-qa-request.md                  |   2 +-
 doc/models/api-question-request.md            |   2 +-
 doc/models/api-summary-request-1.md           |   2 +-
 doc/models/api-summary-request.md             |   2 +-
 doc/models/api-tableqa-request-1.md           |   2 +-
 doc/models/api-tableqa-request.md             |   2 +-
 doc/models/api-translate-request-1.md         |   5 +-
 doc/models/api-translate-request.md           |   2 +-
 doc/models/errors-exception.md                |   2 +-
 doc/models/input-1.md                         |   4 +-
 doc/models/input-12.md                        |   2 +-
 doc/models/input-14.md                        |   2 +-
 doc/models/input-16.md                        |   6 +-
 doc/models/input-3.md                         |   2 +-
 doc/models/input-6.md                         |   2 +-
 doc/models/responsemorph.md                   |   2 +-
 doc/models/text-input-classify.md             |   2 +-
 doc/models/text-input-tamil.md                |   2 +-
 doc/models/text-input.md                      |   2 +-
 doc/models/url-input-classify.md              |   2 +-
 doc/models/url-input.md                       |   2 +-
 example_Stemmer.py                            |  24 ++--
 firstlanguage_python.egg-info/PKG-INFO        |  97 ++++------------
 firstlanguage_python.egg-info/SOURCES.txt     |   3 +
 .../firstlanguage_client.cpython-39.pyc       | Bin 2497 -> 2478 bytes
 firstlanguage_python/controllers/__init__.py  |   4 +-
 .../__pycache__/__init__.cpython-39.pyc       | Bin 291 -> 287 bytes
 .../advanced_api_controller.cpython-39.pyc    | Bin 21268 -> 24048 bytes
 .../basic_api_controller.cpython-39.pyc       | Bin 12038 -> 13726 bytes
 .../controllers/advanced_api_controller.py    | 107 ++++++++++++------
 .../controllers/basic_api_controller.py       |  66 +++++++----
 .../controllers/enterprise_only_controller.py |   4 +-
 firstlanguage_python/firstlanguage_client.py  |   2 +-
 firstlanguage_python/models/input_1.py        |  10 +-
 firstlanguage_python/models/input_12.py       |   7 +-
 firstlanguage_python/models/input_14.py       |   7 +-
 firstlanguage_python/models/input_16.py       |  19 +++-
 firstlanguage_python/models/input_3.py        |   7 +-
 firstlanguage_python/models/input_6.py        |   7 +-
 firstlanguage_python/models/url_input.py      |   1 -
 firstlanguage_python/schemas/input_1.json     |   4 +-
 firstlanguage_python/schemas/input_12.json    |   2 +-
 firstlanguage_python/schemas/input_14.json    |   2 +-
 firstlanguage_python/schemas/input_16.json    |   9 +-
 firstlanguage_python/schemas/input_3.json     |   2 +-
 firstlanguage_python/schemas/input_6.json     |   2 +-
 setup.py                                      |   4 +-
 58 files changed, 311 insertions(+), 294 deletions(-)
 create mode 100644 dist/firstlanguage_python-2.1.tar.gz

diff --git a/.gitignore b/.gitignore
index 94487b9..ed60fe2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,3 @@
 *.pyc
+output.docx
+output.pdf
diff --git a/README.md b/README.md
index 31d093b..2661d95 100644
--- a/README.md
+++ b/README.md
@@ -100,6 +100,7 @@ The following parameters are configurable for the API Client:
 | `backoff_factor` | `float` | A backoff factor to apply between attempts after the second try. <br> **Default: 2** |
 | `retry_statuses` | `Array of int` | The http statuses on which retry is to be done. <br> **Default: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524]** |
 | `retry_methods` | `Array of string` | The http methods on which retry is to be done. <br> **Default: ['GET', 'PUT']** |
+| `apikey` | `string` |  |
 
 The API client can be initialized as follows:
 
@@ -108,6 +109,7 @@ from firstlanguage_python.firstlanguage_python_client import FirstlanguageapiCli
 from firstlanguage_python.configuration import Environment
 
 client = FirstlanguageapiClient(
+    apikey='apikey',
     environment=Environment.PRODUCTION,)
 ```
 
diff --git a/dist/firstlanguage_python-2.1.tar.gz b/dist/firstlanguage_python-2.1.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..d35bf38f418c754454f68a6c725ea79ae45c0ae2
GIT binary patch
diff --git a/doc/client.md b/doc/client.md
index 27a20db..b64d191 100644
--- a/doc/client.md
+++ b/doc/client.md
@@ -5,7 +5,6 @@ The following parameters are configurable for the API Client:
 
 | Parameter | Type | Description |
 |  --- | --- | --- |
-| `apikey` | `string` | API Key can be copied from your dashboard |
 | `http_client_instance` | `HttpClient` | The Http Client passed from the sdk user for making requests |
 | `override_http_client_configuration` | `bool` | The value which determines to override properties of the passed Http Client from the sdk user |
 | `timeout` | `float` | The value to use for connection timeout. <br> **Default: 60** |
@@ -13,6 +12,7 @@ The following parameters are configurable for the API Client:
 | `backoff_factor` | `float` | A backoff factor to apply between attempts after the second try. <br> **Default: 2** |
 | `retry_statuses` | `Array of int` | The http statuses on which retry is to be done. <br> **Default: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524]** |
 | `retry_methods` | `Array of string` | The http methods on which retry is to be done. <br> **Default: ['GET', 'PUT']** |
+| `apikey` | `string` |  |
 
 The API client can be initialized as follows:
 
@@ -20,8 +20,8 @@ The API client can be initialized as follows:
 from firstlanguageapi.firstlanguageapi_client import FirstlanguageapiClient
 from firstlanguageapi.configuration import Environment
 
-client = FirstlanguageapiClient(
-    apikey='apikey',
+client = FirstlanguageapiClient(
+    apikey='apikey',
     environment=Environment.PRODUCTION,)
 ```
 
@@ -33,7 +33,7 @@ The gateway for the SDK. This class acts as a factory for the Controllers and al
 
 | Name | Description |
 |  --- | --- |
-| basic_api | Gets BasicAPIsController |
-| advanced_api | Gets AdvancedAPIsController |
+| basic_ap_is | Gets BasicAPIsController |
+| advanced_ap_is | Gets AdvancedAPIsController |
 | enterprise_only | Gets EnterpriseOnlyController |
 
diff --git a/doc/controllers/advanced-ap-is.md b/doc/controllers/advanced-ap-is.md
index b1ae54e..12afdb0 100644
--- a/doc/controllers/advanced-ap-is.md
+++ b/doc/controllers/advanced-ap-is.md
@@ -10,19 +10,17 @@ advanced_ap_is_controller = client.advanced_ap_is
 
 ## Methods
 
-* [Get Classification](/doc/controllers/advanced-ap-is.md#get-classification)
-* [Get QA](/doc/controllers/advanced-ap-is.md#get-qa)
-* [Get Table QA](/doc/controllers/advanced-ap-is.md#get-table-qa)
-* [Get Image Caption](/doc/controllers/advanced-ap-is.md#get-image-caption)
-* [Get NER](/doc/controllers/advanced-ap-is.md#get-ner)
-* [Get Summary](/doc/controllers/advanced-ap-is.md#get-summary)
-* [Get Translate](/doc/controllers/advanced-ap-is.md#get-translate)
+* [Get Classification](../../doc/controllers/advanced-ap-is.md#get-classification)
+* [Get QA](../../doc/controllers/advanced-ap-is.md#get-qa)
+* [Get Table QA](../../doc/controllers/advanced-ap-is.md#get-table-qa)
+* [Get Image Caption](../../doc/controllers/advanced-ap-is.md#get-image-caption)
+* [Get NER](../../doc/controllers/advanced-ap-is.md#get-ner)
+* [Get Summary](../../doc/controllers/advanced-ap-is.md#get-summary)
+* [Get Translate](../../doc/controllers/advanced-ap-is.md#get-translate)
 
 
 # Get Classification
 
-# Text Classification  : Defintion and it's usage
-
 A text classifier identifies the categories of the text given as input. Classifying the texts is one of the powerful preprocessing technique in topic identification and sentiment classification (product reviews, movie reviews etc)and indexing the texts while building a search system.
 
 # Languages covered:
@@ -54,11 +52,11 @@ def get_classification(self,
 
 | Parameter | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `body` | [`object`]($m/) | Body, Required | Add a JSON Input as per the schema defined below |
+| `body` | [`object`](../../$m/) | Body, Required | Add a JSON Input as per the schema defined below<br><br>**Size limit:**<br><br>1MB for both text and URL input<br><br>**URL Input:**<br><br>For URL, we now accept 4 contentTypes.<br><br>* html<br>* plaintext<br>* pdf<br>* docx<br><br>If you are providing Google drive or Google Spreadsheet url, ensure that you provide a link which can download the file directly and not the share link.<br><br>Example for Google Drive link:<br><br>https://drive.google.com/uc?id=idofthefile |
 
 ## Response Type
 
-[`Responseclassify`](/doc/models/responseclassify.md)
+[`Responseclassify`](../../doc/models/responseclassify.md)
 
 ## Example Usage
 
@@ -87,15 +85,13 @@ result = advanced_ap_is_controller.get_classification(body)
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Error output | [`ErrorsException`](/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`ApiClassify426ErrorException`](/doc/models/api-classify-426-error-exception.md) |
+| 400 | Error output | [`ErrorsException`](../../doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`ApiClassify426ErrorException`](../../doc/models/api-classify-426-error-exception.md) |
 | 429 | Too Many Requests | `APIException` |
 
 
 # Get QA
 
-# QA : Defintion and it's usage
-
 A Question Answering System retrieves the answer relevant to the question given by the user. A question answering system can be used for building a text based chatbots, search engines etc. Our question answering system  is mutilingual and supports 100 + languages. Please use ISO 639-2 2 digit language code  to get results. For example, use 'en' for English, 'ta' for Tamil, 'hi' for Hindi, 'fr' for French etc.
 
 For ISO code reference, please check the link https://www.loc.gov/standards/iso639-2/php/code_list.php
@@ -109,11 +105,11 @@ def get_qa(self,
 
 | Parameter | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `body` | [`object`]($m/) | Body, Optional | Add a JSON Input as per the schema defined below |
+| `body` | [`object`](../../$m/) | Body, Optional | Add a JSON Input as per the schema defined below<br><br>**Size limit:**<br><br>1MB for both text and URL input<br><br>**URL Input:**<br><br>For URL, we now accept 4 contentTypes.<br><br>* html<br>* plaintext<br>* pdf<br>* docx<br><br>If you are providing Google drive or Google Spreadsheet url, ensure that you provide a link which can download the file directly and not the share link.<br><br>Example for Google Drive link:<br><br>https://drive.google.com/uc?id=idofthefile |
 
 ## Response Type
 
-[`ApiQaResponse`](/doc/models/api-qa-response.md)
+[`ApiQaResponse`](../../doc/models/api-qa-response.md)
 
 ## Example Usage
 
@@ -138,8 +134,8 @@ result = advanced_ap_is_controller.get_qa(body)
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Bad Request | [`ErrorsException`](/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`M426ErrorException`](/doc/models/m426-error-exception.md) |
+| 400 | Bad Request | [`ErrorsException`](../../doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`M426ErrorException`](../../doc/models/m426-error-exception.md) |
 | 429 | Too Many Requests | `APIException` |
 
 
@@ -165,11 +161,11 @@ def get_table_qa(self,
 
 | Parameter | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `body` | [`object`]($m/) | Body, Optional | Add a JSON Input as per the schema defined below. For URL input, if you are providing Google drive or Google Spreadsheet url ensure that you provide a link which can download the file directly and not the share link.<br><br>Example: For Google Spreadsheet, the url format will be like below:<br>https://docs.google.com/spreadsheets/d/1TtzPAHqpaTB7Ltdq0zwZ8FamF7O9aC4KH4EpmwI/export?format=csv&gid=151344200<br><br>Or for Google Drive, it will be like below:<br>https://drive.google.com/uc?id=idofthefile<br><br>For Flat table input check the example out. |
+| `body` | [`object`](../../$m/) | Body, Optional | Add a JSON Input as per the schema defined below. For URL input, if you are providing Google drive or Google Spreadsheet url ensure that you provide a link which can download the file directly and not the share link.<br><br>Example for Google Spreadsheet link:<br><br>https://docs.google.com/spreadsheets/d/1TtzPAHqpaTB7Ltdq0zwZ8FamF7O9aC4KH4EpmwI/export?format=csv&gid=151344200<br><br>Example for Google Drive link:<br><br>https://drive.google.com/uc?id=idofthefile<br><br>For Flat table input check the example. |
 
 ## Response Type
 
-[`List of ApiTableqaResponse`](/doc/models/api-tableqa-response.md)
+[`List of ApiTableqaResponse`](../../doc/models/api-tableqa-response.md)
 
 ## Example Usage
 
@@ -209,8 +205,8 @@ result = advanced_ap_is_controller.get_table_qa(body)
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Bad Request | [`ErrorsException`](/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`M426ErrorException`](/doc/models/m426-error-exception.md) |
+| 400 | Bad Request | [`ErrorsException`](../../doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`M426ErrorException`](../../doc/models/m426-error-exception.md) |
 | 429 | Too Many Requests | `APIException` |
 
 
@@ -233,11 +229,11 @@ def get_image_caption(self,
 
 | Parameter | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `body` | [`ApiImagecaptionRequest`](/doc/models/api-imagecaption-request.md) | Body, Optional | Add a JSON Input as per the schema defined below.<br><br>For URL, if you are providing Google drive or Google Spreadsheet url ensure that you provide a link which can download the file directly and not the share link.<br><br>Example: For Google Spreadsheet, the url format will be like below:<br>https://docs.google.com/spreadsheets/d/1TtzPAHqpaTB7Ltdq0zwZ8FamF7OwI/export?format=csv&gid=151344200<br><br>Or for Google Drive, it will be like below:<br>https://drive.google.com/uc?id=idofthefile |
+| `body` | [`ApiImagecaptionRequest`](../../doc/models/api-imagecaption-request.md) | Body, Optional | Add a JSON Input as per the schema defined below.<br><br>For URL, if you are providing Google drive or Google Spreadsheet url ensure that you provide a link which can download the file directly and not the share link.<br><br>Example for Google Drive:<br><br>https://drive.google.com/uc?id=idofthefile |
 
 ## Response Type
 
-[`ApiImagecaptionResponse`](/doc/models/api-imagecaption-response.md)
+[`ApiImagecaptionResponse`](../../doc/models/api-imagecaption-response.md)
 
 ## Example Usage
 
@@ -261,15 +257,13 @@ result = advanced_ap_is_controller.get_image_caption(body)
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Bad Request | [`ErrorsException`](/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`M426ErrorException`](/doc/models/m426-error-exception.md) |
+| 400 | Bad Request | [`ErrorsException`](../../doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`M426ErrorException`](../../doc/models/m426-error-exception.md) |
 | 429 | Too Many Requests | `APIException` |
 
 
 # Get NER
 
-# Named Entity Recognition : Defintion and it's usage
-
 Named Entity Recognitiion  (NER) is extracting the specific Nouns such as, Person Names, Location names, Organization Names, Currency , Dates. It is a classification task. NER can be used as a sub-task in applications such as Search Systems, Chatbots, Question Answering systems, Text Summarization etc.
 
 # Languages covered:
@@ -299,11 +293,11 @@ def get_ner(self,
 
 | Parameter | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `body` | [`object`]($m/) | Body, Optional | Add a JSON Input as per the schema defined below |
+| `body` | [`object`](../../$m/) | Body, Optional | Add a JSON Input as per the schema defined below<br><br>**Size limit:**<br><br>1MB for both text and URL input<br><br>**URL Input:**<br><br>For URL, we now accept 4 contentTypes.<br><br>* html<br>* plaintext<br>* pdf<br>* docx<br><br>If you are providing Google drive or Google Spreadsheet url, ensure that you provide a link which can download the file directly and not the share link.<br><br>Example for Google Drive link:<br><br>https://drive.google.com/uc?id=idofthefile |
 
 ## Response Type
 
-[`List of ApiNerResponse`](/doc/models/api-ner-response.md)
+[`List of ApiNerResponse`](../../doc/models/api-ner-response.md)
 
 ## Example Usage
 
@@ -336,15 +330,13 @@ result = advanced_ap_is_controller.get_ner(body)
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Bad Request | [`ErrorsException`](/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`M426ErrorException`](/doc/models/m426-error-exception.md) |
+| 400 | Bad Request | [`ErrorsException`](../../doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`M426ErrorException`](../../doc/models/m426-error-exception.md) |
 | 429 | Too Many Requests | `APIException` |
 
 
 # Get Summary
 
-# Summarization : Defintion and it's usage
-
 Summarization generates a crisp content of the large input text which is highly coherent.
 
 | Languages               | ISO Code |
@@ -401,11 +393,11 @@ def get_summary(self,
 
 | Parameter | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `body` | [`object`]($m/) | Body, Optional | Add a JSON Input as per the schema defined below |
+| `body` | [`object`](../../$m/) | Body, Optional | Add a JSON Input as per the schema defined below<br><br>**Size limit:**<br><br>1MB for both text and URL input<br><br>**URL Input:**<br><br>For URL, we now accept 4 contentTypes.<br><br>* html<br>* plaintext<br>* pdf<br>* docx<br><br>If you are providing Google drive or Google Spreadsheet url, ensure that you provide a link which can download the file directly and not the share link.<br><br>Example for Google Drive link:<br><br>https://drive.google.com/uc?id=idofthefile |
 
 ## Response Type
 
-[`ApiSummaryResponse`](/doc/models/api-summary-response.md)
+[`ApiSummaryResponse`](../../doc/models/api-summary-response.md)
 
 ## Example Usage
 
@@ -427,15 +419,13 @@ result = advanced_ap_is_controller.get_summary(body)
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Bad Request | [`ErrorsException`](/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`M426ErrorException`](/doc/models/m426-error-exception.md) |
+| 400 | Bad Request | [`ErrorsException`](../../doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`M426ErrorException`](../../doc/models/m426-error-exception.md) |
 | 429 | Too Many Requests | `APIException` |
 
 
 # Get Translate
 
-# Translation : Defintion and it's usage
-
 Machine Translation is translating the text automatically from  one language to another langauge.
 
 # Languages covered:
@@ -508,11 +498,11 @@ def get_translate(self,
 
 | Parameter | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `body` | [`object`]($m/) | Body, Optional | Add a JSON Input as per the schema defined below |
+| `body` | [`object`](../../$m/) | Body, Optional | Add a JSON Input as per the schema defined below<br><br>**Size limit:**<br><br>1MB for both text and URL input<br><br>**URL Input:**<br><br>For URL, we now accept 4 contentTypes.<br><br>* html<br>* plaintext<br>* pdf<br>* docx<br><br>If you are providing Google drive or Google Spreadsheet url, ensure that you provide a link which can download the file directly and not the share link.<br><br>Example for Google Drive link:<br><br>https://drive.google.com/uc?id=idofthefile<br><br>**preserveFormat Flag:**<br><br>When true:<br><br>This applies only for PDF and DOCX content types. The API will try to maintain the source file formatting. DOCX files will mostly work without any issues. But for PDF files, the API will try to maintain the format but it is not guaranteed. Scanned documents will also not work. For PDF files, if the target language font is not renderred properly, please report the issue at info@firstlanguage.in<br><br>When false:<br><br>If the flag is false, then the API will simply read all text in the PDF and docx files and translate and send the response back as plaintext. |
 
 ## Response Type
 
-[`ApiTranslateResponse`](/doc/models/api-translate-response.md)
+[`ApiTranslateResponse`](../../doc/models/api-translate-response.md)
 
 ## Example Usage
 
@@ -534,7 +524,7 @@ result = advanced_ap_is_controller.get_translate(body)
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Bad Request | [`ErrorsException`](/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`M426ErrorException`](/doc/models/m426-error-exception.md) |
+| 400 | Bad Request | [`ErrorsException`](../../doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`M426ErrorException`](../../doc/models/m426-error-exception.md) |
 | 429 | Too Many Requests | `APIException` |
 
diff --git a/doc/controllers/basic-ap-is.md b/doc/controllers/basic-ap-is.md
index 8f5280e..2f7ff09 100644
--- a/doc/controllers/basic-ap-is.md
+++ b/doc/controllers/basic-ap-is.md
@@ -10,16 +10,14 @@ basic_ap_is_controller = client.basic_ap_is
 
 ## Methods
 
-* [Get Stemmer](/doc/controllers/basic-ap-is.md#get-stemmer)
-* [Get Lemma](/doc/controllers/basic-ap-is.md#get-lemma)
-* [Get Morph](/doc/controllers/basic-ap-is.md#get-morph)
-* [Get Postag](/doc/controllers/basic-ap-is.md#get-postag)
+* [Get Stemmer](../../doc/controllers/basic-ap-is.md#get-stemmer)
+* [Get Lemma](../../doc/controllers/basic-ap-is.md#get-lemma)
+* [Get Morph](../../doc/controllers/basic-ap-is.md#get-morph)
+* [Get Postag](../../doc/controllers/basic-ap-is.md#get-postag)
 
 
 # Get Stemmer
 
-# Stemmer : Defintion and it's usage
-
 A word takes different inflectional forms. For instance, the word, "Compute" can take the forms, "computing", "computation",  and "computerize". The NLP applications such as Search Engines and Information Extraction would want to store the base or stem of the word, i.e "Compute" instead of accomodating all its inflected forms. This will yield in dimensionality reduction and incerases the efficiency of the system. The stemmer cuts the prefix and suffix of a word.
 
 # Languages covered:
@@ -64,11 +62,11 @@ def get_stemmer(self,
 
 | Parameter | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `body` | [`object`]($m/) | Body, Required | Add a JSON Input as per the schema defined below |
+| `body` | [`object`](../../$m/) | Body, Required | Add a JSON Input as per the schema defined below<br><br>**Size limit:**<br><br>1MB for both text and URL input<br><br>**URL Input:**<br><br>For URL, we now accept 4 contentTypes.<br><br>* html<br>* plaintext<br>* pdf<br>* docx<br><br>If you are providing Google drive or Google Spreadsheet url, ensure that you provide a link which can download the file directly and not the share link.<br><br>Example for Google Drive link:<br><br>https://drive.google.com/uc?id=idofthefile |
 
 ## Response Type
 
-[`List of Responsestem`](/doc/models/responsestem.md)
+[`List of Responsestem`](../../doc/models/responsestem.md)
 
 ## Example Usage
 
@@ -101,15 +99,13 @@ result = basic_ap_is_controller.get_stemmer(body)
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Error output | [`ErrorsException`](/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`ApiStemmer426ErrorException`](/doc/models/api-stemmer-426-error-exception.md) |
+| 400 | Error output | [`ErrorsException`](../../doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`ApiStemmer426ErrorException`](../../doc/models/api-stemmer-426-error-exception.md) |
 | 429 | Too Many Requests | `APIException` |
 
 
 # Get Lemma
 
-# Lemmatizer : Defintion and it's usage
-
 Lemmatizer is similar to stemmer that gives the stemmed version of a word but lemmatizer differs from the stemmer in giving a meaningful stem or the lemma. For instance, for the word, "smiling", the stemmer would give, "smil", stemming the suffix, "ing" but the lemmatizer would give the meaningful stem, "smile". lemmatizers can be used in applications such as,  Machine Translation, Search Engines, Text Summarization etc.
 
 # Languages covered:
@@ -142,11 +138,11 @@ def get_lemma(self,
 
 | Parameter | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `body` | [`object`]($m/) | Body, Required | Add a JSON Input as per the schema defined below |
+| `body` | [`object`](../../$m/) | Body, Required | Add a JSON Input as per the schema defined below<br><br>**Size limit:**<br><br>1MB for both text and URL input<br><br>**URL Input:**<br><br>For URL, we now accept 4 contentTypes.<br><br>* html<br>* plaintext<br>* pdf<br>* docx<br><br>If you are providing Google drive or Google Spreadsheet url, ensure that you provide a link which can download the file directly and not the share link.<br><br>Example for Google Drive link:<br><br>https://drive.google.com/uc?id=idofthefile |
 
 ## Response Type
 
-[`List of Responselemma`](/doc/models/responselemma.md)
+[`List of Responselemma`](../../doc/models/responselemma.md)
 
 ## Example Usage
 
@@ -183,15 +179,13 @@ result = basic_ap_is_controller.get_lemma(body)
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Error output | [`ErrorsException`](/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`ApiLemmatize426ErrorException`](/doc/models/api-lemmatize-426-error-exception.md) |
+| 400 | Error output | [`ErrorsException`](../../doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`ApiLemmatize426ErrorException`](../../doc/models/api-lemmatize-426-error-exception.md) |
 | 429 | Too Many Requests | `APIException` |
 
 
 # Get Morph
 
-# Morphological Analyzer : Defintion and it's usage
-
 Morphological Analyzer analyzes how a word is formed. It breaks a word into smaller units called, "morphemes" and gives a clue on the pattern of words of a particular langauge.  It can be used for building applications such as,  Machine Translation, Text Summarization, Search systems etc.
 
 # Languages covered:
@@ -224,11 +218,11 @@ def get_morph(self,
 
 | Parameter | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `body` | [`object`]($m/) | Body, Required | Add a JSON Input as per the schema defined below |
+| `body` | [`object`](../../$m/) | Body, Required | Add a JSON Input as per the schema defined below<br><br>**Size limit:**<br><br>1MB for both text and URL input<br><br>**URL Input:**<br><br>For URL, we now accept 4 contentTypes.<br><br>* html<br>* plaintext<br>* pdf<br>* docx<br><br>If you are providing Google drive or Google Spreadsheet url, ensure that you provide a link which can download the file directly and not the share link.<br><br>Example for Google Drive link:<br><br>https://drive.google.com/uc?id=idofthefile |
 
 ## Response Type
 
-[`Responsemorph`](/doc/models/responsemorph.md)
+[`Responsemorph`](../../doc/models/responsemorph.md)
 
 ## Example Usage
 
@@ -410,15 +404,13 @@ result = basic_ap_is_controller.get_morph(body)
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Error output | [`ErrorsException`](/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`ApiMorph426ErrorException`](/doc/models/api-morph-426-error-exception.md) |
+| 400 | Error output | [`ErrorsException`](../../doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`ApiMorph426ErrorException`](../../doc/models/api-morph-426-error-exception.md) |
 | 429 | Too Many Requests | `APIException` |
 
 
 # Get Postag
 
-# Parts of Speech Tagger : Defintion and it's usage
-
 Parts of Speech Tagger, which is shortly known as POS Tagger is a software that automatically finds the word classes, when a text input is given. The text input can be a word, a sentence or a set of sentences. The word classes are the grammatical categories such as, Noun, Verb, Adverb etc. The category assigned to each word is called as a tag. A set of tags, each indicating a grammatical category is called, "tagsets". POS tagging is a mandatory pre-processing for most of the Natural Language Processing Applications such as, Information Extraction, Information Retreival systems and Summary generation systems. A POS Tagger is a language-dependent software as the grammar rules will differ for every language. For instance, a word ending with "ing" might indicate a "Verb" in English but this will not be applicable for other languages.
 
 # Languages covered:
@@ -444,11 +436,11 @@ def get_postag(self,
 
 | Parameter | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `body` | [`object`]($m/) | Body, Required | Add a JSON Input as per the schema defined below |
+| `body` | [`object`](../../$m/) | Body, Required | Add a JSON Input as per the schema defined below<br><br>**Size limit:**<br><br>1MB for both text and URL input<br><br>**URL Input:**<br><br>For URL, we now accept 4 contentTypes.<br><br>* html<br>* plaintext<br>* pdf<br>* docx<br><br>If you are providing Google drive or Google Spreadsheet url, ensure that you provide a link which can download the file directly and not the share link.<br><br>Example for Google Drive link:<br><br>https://drive.google.com/uc?id=idofthefile |
 
 ## Response Type
 
-[`List of Responsepo`](/doc/models/responsepo.md)
+[`List of Responsepo`](../../doc/models/responsepo.md)
 
 ## Example Usage
 
@@ -497,7 +489,7 @@ result = basic_ap_is_controller.get_postag(body)
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Error output | [`ErrorsException`](/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`ApiPostag426ErrorException`](/doc/models/api-postag-426-error-exception.md) |
+| 400 | Error output | [`ErrorsException`](../../doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`ApiPostag426ErrorException`](../../doc/models/api-postag-426-error-exception.md) |
 | 429 | Too Many Requests | `APIException` |
 
diff --git a/doc/controllers/enterprise-only.md b/doc/controllers/enterprise-only.md
index 805084b..9d8c88b 100644
--- a/doc/controllers/enterprise-only.md
+++ b/doc/controllers/enterprise-only.md
@@ -11,11 +11,11 @@ enterprise_only_controller = client.enterprise_only
 
 # Get QA Enterprise
 
-# QA : Defintion and it's usage
-
 A Question Answering System retrieves the answer relevant to the question given by the user. A question answering system can be used for building a text based chatbots, search engines etc. Our question answering system  is mutilingual and supports 100 + languages. Please use ISO 639-2 2 digit language code  to get results. For example, use 'en' for English, 'ta' for Tamil, 'hi' for Hindi, 'fr' for French etc.
 
-For ISO code reference, please check the link https://www.loc.gov/standards/iso639-2/php/code_list.php
+For ISO code reference, please check the link https://www.loc.gov/standards/iso639-2/php/code_list.php
+
+For enterprise, the context for the questions will be stored in memory. The context can be read from wide range of file and any number of files.
 
 ```python
 def get_qa_enterprise(self,
@@ -26,11 +26,11 @@ def get_qa_enterprise(self,
 
 | Parameter | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `body` | [`ApiQuestionRequest`](/doc/models/api-question-request.md) | Body, Optional | Add a JSON Input as per the schema defined below |
+| `body` | [`ApiQuestionRequest`](../../doc/models/api-question-request.md) | Body, Optional | Add a JSON Input as per the schema defined below |
 
 ## Response Type
 
-[`ApiQuestionResponse`](/doc/models/api-question-response.md)
+[`ApiQuestionResponse`](../../doc/models/api-question-response.md)
 
 ## Example Usage
 
@@ -55,7 +55,7 @@ result = enterprise_only_controller.get_qa_enterprise(body)
 
 | HTTP Status Code | Error Description | Exception Class |
 |  --- | --- | --- |
-| 400 | Bad Request | [`ErrorsException`](/doc/models/errors-exception.md) |
-| 426 | Please use HTTPS protocol | [`M426ErrorException`](/doc/models/m426-error-exception.md) |
+| 400 | Bad Request | [`ErrorsException`](../../doc/models/errors-exception.md) |
+| 426 | Please use HTTPS protocol | [`M426ErrorException`](../../doc/models/m426-error-exception.md) |
 | 429 | Too Many Requests | `APIException` |
 
diff --git a/doc/models/api-imagecaption-request.md b/doc/models/api-imagecaption-request.md
index 430c1a2..846cb9e 100644
--- a/doc/models/api-imagecaption-request.md
+++ b/doc/models/api-imagecaption-request.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input9`](/doc/models/input-9.md) | Required | - |
+| `input` | [`Input9`](../../doc/models/input-9.md) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/api-ner-request-1.md b/doc/models/api-ner-request-1.md
index 8b6461a..ecd3c62 100644
--- a/doc/models/api-ner-request-1.md
+++ b/doc/models/api-ner-request-1.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input12`](/doc/models/input-12.md) | Required | - |
+| `input` | [`Input12`](../../doc/models/input-12.md) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/api-ner-request.md b/doc/models/api-ner-request.md
index d1a27e3..fd1e5b7 100644
--- a/doc/models/api-ner-request.md
+++ b/doc/models/api-ner-request.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input11`](/doc/models/input-11.md) | Required | - |
+| `input` | [`Input11`](../../doc/models/input-11.md) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/api-qa-request-1.md b/doc/models/api-qa-request-1.md
index b5cf44f..1be7ade 100644
--- a/doc/models/api-qa-request-1.md
+++ b/doc/models/api-qa-request-1.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input6`](/doc/models/input-6.md) | Required | - |
+| `input` | [`Input6`](../../doc/models/input-6.md) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/api-qa-request.md b/doc/models/api-qa-request.md
index e013098..3491bd3 100644
--- a/doc/models/api-qa-request.md
+++ b/doc/models/api-qa-request.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input5`](/doc/models/input-5.md) | Required | - |
+| `input` | [`Input5`](../../doc/models/input-5.md) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/api-question-request.md b/doc/models/api-question-request.md
index 91606b3..05ef9d2 100644
--- a/doc/models/api-question-request.md
+++ b/doc/models/api-question-request.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input10`](/doc/models/input-10.md) | Required | - |
+| `input` | [`Input10`](../../doc/models/input-10.md) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/api-summary-request-1.md b/doc/models/api-summary-request-1.md
index 137912c..2ec95ea 100644
--- a/doc/models/api-summary-request-1.md
+++ b/doc/models/api-summary-request-1.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input14`](/doc/models/input-14.md) | Required | - |
+| `input` | [`Input14`](../../doc/models/input-14.md) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/api-summary-request.md b/doc/models/api-summary-request.md
index 503269b..c10a346 100644
--- a/doc/models/api-summary-request.md
+++ b/doc/models/api-summary-request.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input13`](/doc/models/input-13.md) | Required | - |
+| `input` | [`Input13`](../../doc/models/input-13.md) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/api-tableqa-request-1.md b/doc/models/api-tableqa-request-1.md
index 80a5100..0074976 100644
--- a/doc/models/api-tableqa-request-1.md
+++ b/doc/models/api-tableqa-request-1.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input8`](/doc/models/input-8.md) | Required | - |
+| `input` | [`Input8`](../../doc/models/input-8.md) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/api-tableqa-request.md b/doc/models/api-tableqa-request.md
index 574fcaa..78d1e87 100644
--- a/doc/models/api-tableqa-request.md
+++ b/doc/models/api-tableqa-request.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input7`](/doc/models/input-7.md) | Required | - |
+| `input` | [`Input7`](../../doc/models/input-7.md) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/api-translate-request-1.md b/doc/models/api-translate-request-1.md
index 88482e1..2caedcb 100644
--- a/doc/models/api-translate-request-1.md
+++ b/doc/models/api-translate-request-1.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input16`](/doc/models/input-16.md) | Required | - |
+| `input` | [`Input16`](../../doc/models/input-16.md) | Required | - |
 
 ## Example (as JSON)
 
@@ -18,7 +18,8 @@
   "input": {
     "lang": "lang0",
     "contentType": "contentType4",
-    "url": "url2"
+    "url": "url2",
+    "preserveFormat": "preserveFormat8"
   }
 }
 ```
diff --git a/doc/models/api-translate-request.md b/doc/models/api-translate-request.md
index 2736557..3885a01 100644
--- a/doc/models/api-translate-request.md
+++ b/doc/models/api-translate-request.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input15`](/doc/models/input-15.md) | Required | - |
+| `input` | [`Input15`](../../doc/models/input-15.md) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/errors-exception.md b/doc/models/errors-exception.md
index ff1263e..e35bc67 100644
--- a/doc/models/errors-exception.md
+++ b/doc/models/errors-exception.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `errors` | [`List of Errors1`](/doc/models/errors-1.md) | Optional | - |
+| `errors` | [`List of Errors1`](../../doc/models/errors-1.md) | Optional | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/input-1.md b/doc/models/input-1.md
index e44d0fb..d760736 100644
--- a/doc/models/input-1.md
+++ b/doc/models/input-1.md
@@ -1,7 +1,7 @@
 
 # Input 1
 
-Text for processing will be read from the given URL. Only HTML pages or text pages will be processed at this time.
+Text for processing will be read from the given URL.
 
 ## Structure
 
@@ -13,7 +13,7 @@ Text for processing will be read from the given URL. Only HTML pages or text pag
 |  --- | --- | --- | --- |
 | `url` | `string` | Required | URL where the content is hosted. |
 | `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
-| `content_type` | `string` | Required | Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing. |
+| `content_type` | `string` | Required | Allowed values are:html,plaintext, pdf, docx<br>If html is specified all html tags and special characters will be stripped before processing.<br>For PDF and docx, all text will be read. Scanned documents will not work. |
 
 ## Example (as JSON)
 
diff --git a/doc/models/input-12.md b/doc/models/input-12.md
index cabe12d..cf5e27b 100644
--- a/doc/models/input-12.md
+++ b/doc/models/input-12.md
@@ -10,7 +10,7 @@
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
 | `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
-| `content_type` | `string` | Required | Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing. |
+| `content_type` | `string` | Required | Allowed values are:html,plaintext, pdf, docx<br>If html is specified all html tags and special characters will be stripped before processing.<br>For PDF and docx, all text will be read. Scanned documents will not work. |
 | `url` | `string` | Required | URL where the text for the NER task is stored. |
 
 ## Example (as JSON)
diff --git a/doc/models/input-14.md b/doc/models/input-14.md
index e0d2e68..4233866 100644
--- a/doc/models/input-14.md
+++ b/doc/models/input-14.md
@@ -10,7 +10,7 @@
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
 | `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
-| `content_type` | `string` | Required | Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing. |
+| `content_type` | `string` | Required | Allowed values are:html,plaintext, pdf, docx<br>If html is specified all html tags and special characters will be stripped before processing.<br>For PDF and docx, all text will be read. Scanned documents will not work. |
 | `url` | `string` | Required | Text from this URL will be read and a summary generated |
 
 ## Example (as JSON)
diff --git a/doc/models/input-16.md b/doc/models/input-16.md
index 5b0b629..425d57c 100644
--- a/doc/models/input-16.md
+++ b/doc/models/input-16.md
@@ -10,8 +10,9 @@
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
 | `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
-| `content_type` | `string` | Required | Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing. |
+| `content_type` | `string` | Required | Allowed values are:html,plaintext, pdf, docx<br>If html is specified all html tags and special characters will be stripped before processing.<br>For PDF and docx, all text will be read. Scanned documents will not work. |
 | `url` | `string` | Required | Text from this URL will be read and a translation generated |
+| `preserve_format` | `string` | Required | Accepted values are true, false. |
 
 ## Example (as JSON)
 
@@ -19,7 +20,8 @@
 {
   "lang": "lang2",
   "contentType": "contentType6",
-  "url": "url4"
+  "url": "url4",
+  "preserveFormat": "preserveFormat0"
 }
 ```
 
diff --git a/doc/models/input-3.md b/doc/models/input-3.md
index 3c635c6..b5fa72c 100644
--- a/doc/models/input-3.md
+++ b/doc/models/input-3.md
@@ -11,7 +11,7 @@
 |  --- | --- | --- | --- |
 | `url` | `string` | Required | URL where the content is hosted. |
 | `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
-| `content_type` | `string` | Required | Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing. |
+| `content_type` | `string` | Required | Allowed values are:html,plaintext, pdf, docx<br>If html is specified all html tags and special characters will be stripped before processing.<br>For PDF and docx, all text will be read. Scanned documents will not work. |
 | `labels` | `List of object` | Required | Labels to classify |
 
 ## Example (as JSON)
diff --git a/doc/models/input-6.md b/doc/models/input-6.md
index 9e59852..c6f331a 100644
--- a/doc/models/input-6.md
+++ b/doc/models/input-6.md
@@ -11,7 +11,7 @@
 |  --- | --- | --- | --- |
 | `question` | `string` | Required | Question to be answered from the context given. Only One question can be asked at a time. Special characters will not be stripped. |
 | `lang` | `string` | Required | Allowed language code. Refer Allowed languages section. |
-| `content_type` | `string` | Required | Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing. |
+| `content_type` | `string` | Required | Allowed values are:html,plaintext, pdf, docx<br>If html is specified all html tags and special characters will be stripped before processing.<br>For PDF and docx, all text will be read. Scanned documents will not work. |
 | `url` | `string` | Required | URL where the context for the question is stored. |
 
 ## Example (as JSON)
diff --git a/doc/models/responsemorph.md b/doc/models/responsemorph.md
index 2189224..7ce0056 100644
--- a/doc/models/responsemorph.md
+++ b/doc/models/responsemorph.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `orignal_string` | [`OrignalString`](/doc/models/orignal-string.md) | Optional | - |
+| `orignal_string` | [`OrignalString`](../../doc/models/orignal-string.md) | Optional | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/text-input-classify.md b/doc/models/text-input-classify.md
index 29bbd21..4947855 100644
--- a/doc/models/text-input-classify.md
+++ b/doc/models/text-input-classify.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input2`](/doc/models/input-2.md) | Required | - |
+| `input` | [`Input2`](../../doc/models/input-2.md) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/text-input-tamil.md b/doc/models/text-input-tamil.md
index e4df4be..6e3e77d 100644
--- a/doc/models/text-input-tamil.md
+++ b/doc/models/text-input-tamil.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input4`](/doc/models/input-4.md) | Required | - |
+| `input` | [`Input4`](../../doc/models/input-4.md) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/text-input.md b/doc/models/text-input.md
index 603f2ff..bd604d1 100644
--- a/doc/models/text-input.md
+++ b/doc/models/text-input.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input`](/doc/models/input.md) | Required | Direct Text Input |
+| `input` | [`Input`](../../doc/models/input.md) | Required | Direct Text Input |
 
 ## Example (as JSON)
 
diff --git a/doc/models/url-input-classify.md b/doc/models/url-input-classify.md
index 41192bf..1c96b4a 100644
--- a/doc/models/url-input-classify.md
+++ b/doc/models/url-input-classify.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input3`](/doc/models/input-3.md) | Required | - |
+| `input` | [`Input3`](../../doc/models/input-3.md) | Required | - |
 
 ## Example (as JSON)
 
diff --git a/doc/models/url-input.md b/doc/models/url-input.md
index 8a86451..f27ac1f 100644
--- a/doc/models/url-input.md
+++ b/doc/models/url-input.md
@@ -9,7 +9,7 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `input` | [`Input1`](/doc/models/input-1.md) | Required | Text for processing will be read from the given URL. Only HTML pages or text pages will be processed at this time. |
+| `input` | [`Input1`](../../doc/models/input-1.md) | Required | Text for processing will be read from the given URL. |
 
 ## Example (as JSON)
 
diff --git a/example_Stemmer.py b/example_Stemmer.py
index 789ba79..8273580 100644
--- a/example_Stemmer.py
+++ b/example_Stemmer.py
@@ -1,7 +1,7 @@
 from firstlanguage_python.firstlanguage_client import Client
 from firstlanguage_python.configuration import Environment
 import jsonpickle
-
+import pickle
 
 client = Client(
     apikey='63af276e-34fe-4fd5-a474-0c69847f25e1',
@@ -20,19 +20,27 @@
   print("Original Text passed: "+res.orginal_text)
   print("Stemmed result: "+res.stem)
 
-reqbody='{"input":{"text":"Welcome to Google and FirstLanguage","lang":"en"} }'
-
+'{"input":{"lang":"ja","url": "https://drive.google.com/uc?id=1JFV4lyT1Ajn_6jfmf5CXxw5bzQ0ra1V5", "contentType":"pdf","preserveFormat":"true"}}'
+#reqbody='{"input":{"text":"Welcome to Google and FirstLanguage","lang":"en"} }'
+reqbody='{"input":{"lang":"ja","url": "https://drive.google.com/uc?id=1JFV4lyT1Ajn_6jfmf5CXxw5bzQ0ra1V5", "contentType":"pdf","preserveFormat":"false"} }'
+#reqbody='{"input":{"lang":"ja","url": "http://www.dhs.state.il.us/OneNetLibrary/27897/documents/Initiatives/IITAA/Sample-Document.docx", "contentType":"docx","preserveFormat":"true"} }'
 body = jsonpickle.decode(reqbody)
 
-result = advanced_api_controller.get_translate(body)
 
+result = advanced_api_controller.get_translate(body)
 print(result)
+# if(body['input']['contentType'] == 'docx'):
+#   #store the binary value returned to a file  
+#   with open('output.docx', 'wb') as f:
+#     f.write(result.text)
+#   f.close()
+# if(body['input']['contentType'] == 'pdf'):
+#   #store the binary value returned to a file  
+#   with open('output.pdf', 'wb') as f:
+#     f.write(result.text)
+#   f.close()
 
-reqbody='{"input":{"url":"https://i.redd.it/v1fvin01ynv51.jpg"} }'
 
-body = jsonpickle.decode(reqbody)
 
-result = advanced_api_controller.get_image_caption(body)
 
-print("generated caption: "+result.generated_caption)
 
diff --git a/firstlanguage_python.egg-info/PKG-INFO b/firstlanguage_python.egg-info/PKG-INFO
index bbea842..7993b7b 100644
--- a/firstlanguage_python.egg-info/PKG-INFO
+++ b/firstlanguage_python.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 2.1
 Name: firstlanguage-python
-Version: 2
+Version: 2.1
 Summary: Python client library for FirstLanguage API
 Home-page: https://www.firstlanguage.in/contactus
 Author: FirstLanguage
 Author-email: info@firstlanguage.in
 License: UNKNOWN
-Download-URL: https://github.com/FirstLanguage/firstlanguage_python/archive/refs/tags/v2.0.tar.gz
+Download-URL: https://github.com/FirstLanguage/firstlanguage_python/archive/refs/tags/v2.1.tar.gz
 Description: 
         # Getting Started with FirstLanguage API
         
@@ -18,66 +18,10 @@ Description:
         
         This API is documented in **OpenAPI v3.0 format**.
         In addition to standard
-        OpenAPI syntax we use a few [vendor extensions](https://github.com/Redocly/redoc/blob/master/docs/redoc-vendor-extensions.html).
+        OpenAPI syntax we use a few [vendor extensions](https://github.com/Redocly/redoc/blob/master/docs/redoc-vendor-extensions.md).
         
         ## Building
         
-        You can use the SDK either from source by cloning from GitHub using our [repo](https://github.com/FirstLanguage/firstlanguage_python.git)
-        
-        Or you can use PIP to install our package directly by using the command.
-        
-        ```
-        pip install firstlanguage-python
-        ```
-        
-        ## Follow below steps if you want to use SDK from our PIP published package
-        
-        Once the package is installed you can directly use our package in your code. Below is a working example. Replace <Your_API_KEY> with your API Key from the dashboard.
-        
-        ```
-        from firstlanguage_python.firstlanguage_client import Client
-        from firstlanguage_python.configuration import Environment
-        import jsonpickle
-        
-        
-        client = Client(
-            apikey='<Your_API_KEY>',
-            environment=Environment.PRODUCTION,)
-        
-        reqbody='{"input":{"text":"அவள் வேகமாக ஓடினாள்","lang":"ta"} }'
-        
-        body = jsonpickle.decode(reqbody)
-        basic_api_controller = client.basic_api
-        
-        result = basic_api_controller.get_stemmer(body)
-        
-        for res in result:
-          print("Original Text passed: "+res.orginal_text)
-          print("Stemmed result: "+res.stem)
-        
-        
-        ```
-        
-        Save the above file as test.py and run it using the below command
-        
-        ```
-        python3 test.py
-        ```
-        
-        You will get an output like below
-        
-        ```
-        200
-        Original Text passed: அவள்
-        Stemmed result: அவள்
-        Original Text passed: வேகமாக
-        Stemmed result: வேகம்
-        Original Text passed: ஓடினாள்
-        Stemmed result: ஓடி
-        ```
-        
-        ## Follow below steps if you want to use SDK from source
-        
         You must have Python `3 >=3.7, <= 3.9` installed on your system to install and run this SDK. This SDK package depends on other Python packages like nose, jsonpickle etc. These dependencies are defined in the `requirements.txt` file that comes with the SDK. To resolve these dependencies, you can use the PIP Dependency manager. Install it by following steps at [https://pip.pypa.io/en/stable/installing/](https://pip.pypa.io/en/stable/installing/).
         
         Python and PIP executables should be defined in your PATH. Open command prompt and type `pip --version`. This should display the version of the PIP Dependency Manager installed if your installation was successful and the paths are properly defined.
@@ -89,7 +33,7 @@ Description:
         
         ## Installation
         
-        The following section explains how to use the firstlanguageapi library in a new project.
+        The following section explains how to use the firstlanguage_python library in a new project.
         
         ### 1. Open Project in an IDE
         
@@ -103,13 +47,13 @@ Description:
         
         The project files will be displayed in the side bar as follows:
         
-        ![Open project in PyCharm - Step 3](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&step=openProject1)
+        ![Open project in PyCharm - Step 3](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguage_python&step=openProject1)
         
         ### 2. Add a new Test Project
         
         Create a new directory by right clicking on the solution name as shown below:
         
-        ![Add a new project in PyCharm - Step 1](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&step=createDirectory)
+        ![Add a new project in PyCharm - Step 1](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguage_python&step=createDirectory)
         
         Name the directory as "test".
         
@@ -117,19 +61,19 @@ Description:
         
         Add a python file to this project.
         
-        ![Add a new project in PyCharm - Step 3](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&step=createFile)
+        ![Add a new project in PyCharm - Step 3](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguage_python&step=createFile)
         
         Name it "testSDK".
         
-        ![Add a new project in PyCharm - Step 4](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&step=nameFile)
+        ![Add a new project in PyCharm - Step 4](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguage_python&step=nameFile)
         
         In your python file you will be required to import the generated python library using the following code lines
         
         ```python
-        from firstlanguageapi.firstlanguageapi_client import FirstlanguageapiClient
+        from firstlanguage_python.firstlanguage_python_client import FirstlanguageapiClient
         ```
         
-        ![Add a new project in PyCharm - Step 5](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&libraryName=firstlanguageapi.firstlanguageapi_client&className=FirstlanguageapiClient&step=projectFiles)
+        ![Add a new project in PyCharm - Step 5](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguage_python&libraryName=firstlanguage_python.firstlanguage_python_client&className=FirstlanguageapiClient&step=projectFiles)
         
         After this you can write code to instantiate an API client object, get a controller object and  make API calls. Sample code is given in the subsequent sections.
         
@@ -137,7 +81,7 @@ Description:
         
         To run the file within your test project, right click on your Python file inside your Test project and click on `Run`
         
-        ![Run Test Project - Step 1](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguageapi&libraryName=firstlanguageapi.firstlanguageapi_client&className=FirstlanguageapiClient&step=runProject)
+        ![Run Test Project - Step 1](https://apidocs.io/illustration/python?workspaceFolder=Firstlanguageapi-Python&projectName=firstlanguage_python&libraryName=firstlanguage_python.firstlanguage_python_client&className=FirstlanguageapiClient&step=runProject)
         
         ## Test the SDK
         
@@ -152,13 +96,12 @@ Description:
         
         ## Initialize the API Client
         
-        **_Note:_** Documentation for the client can be found [here.](/doc/client.html)
+        **_Note:_** Documentation for the client can be found [here.](/doc/client.md)
         
         The following parameters are configurable for the API Client:
         
         | Parameter | Type | Description |
         |  --- | --- | --- |
-        | `apikey` | `string` | API Key can be copied from your dashboard |
         | `http_client_instance` | `HttpClient` | The Http Client passed from the sdk user for making requests |
         | `override_http_client_configuration` | `bool` | The value which determines to override properties of the passed Http Client from the sdk user |
         | `timeout` | `float` | The value to use for connection timeout. <br> **Default: 60** |
@@ -170,11 +113,10 @@ Description:
         The API client can be initialized as follows:
         
         ```python
-        from firstlanguageapi.firstlanguageapi_client import FirstlanguageapiClient
-        from firstlanguageapi.configuration import Environment
+        from firstlanguage_python.firstlanguage_python_client import FirstlanguageapiClient
+        from firstlanguage_python.configuration import Environment
         
         client = FirstlanguageapiClient(
-            apikey='apikey',
             environment=Environment.PRODUCTION,)
         ```
         
@@ -184,14 +126,15 @@ Description:
         
         ## List of APIs
         
-        * [Basic APIs](/doc/controllers/basic-api.html)
-        * [Advanced APIs](/doc/controllers/advanced-api.html)
+        * [Basic AP Is](/doc/controllers/basic-ap-is.md)
+        * [Advanced AP Is](/doc/controllers/advanced-ap-is.md)
+        * [Enterprise Only](/doc/controllers/enterprise-only.md)
         
         ## Classes Documentation
         
-        * [Utility Classes](/doc/utility-classes.html)
-        * [HttpResponse](/doc/http-response.html)
-        * [HttpRequest](/doc/http-request.html)
+        * [Utility Classes](/doc/utility-classes.md)
+        * [HttpResponse](/doc/http-response.md)
+        * [HttpRequest](/doc/http-request.md)
         
         
 Keywords: FirstLanguage API,NLP,SDK,Python,Natural Language Processing
diff --git a/firstlanguage_python.egg-info/SOURCES.txt b/firstlanguage_python.egg-info/SOURCES.txt
index 9a71ae7..bcf5cfb 100644
--- a/firstlanguage_python.egg-info/SOURCES.txt
+++ b/firstlanguage_python.egg-info/SOURCES.txt
@@ -37,6 +37,8 @@ firstlanguage_python/http/requests_client.py
 firstlanguage_python/http/auth/__init__.py
 firstlanguage_python/http/auth/custom_header_authentication.py
 firstlanguage_python/models/__init__.py
+firstlanguage_python/models/api_imagecaption_request.py
+firstlanguage_python/models/api_imagecaption_response.py
 firstlanguage_python/models/api_ner_request.py
 firstlanguage_python/models/api_ner_request_1.py
 firstlanguage_python/models/api_ner_response.py
@@ -63,6 +65,7 @@ firstlanguage_python/models/input_12.py
 firstlanguage_python/models/input_13.py
 firstlanguage_python/models/input_14.py
 firstlanguage_python/models/input_15.py
+firstlanguage_python/models/input_16.py
 firstlanguage_python/models/input_2.py
 firstlanguage_python/models/input_3.py
 firstlanguage_python/models/input_4.py
diff --git a/firstlanguage_python/__pycache__/firstlanguage_client.cpython-39.pyc b/firstlanguage_python/__pycache__/firstlanguage_client.cpython-39.pyc
index 01ad530afdbdb6c2af16934ddafff2fb1ca2c8aa..5d338f03aef7d0e3be04e1f6451f97e9f5898508 100644
GIT binary patch
diff --git a/firstlanguage_python/controllers/__init__.py b/firstlanguage_python/controllers/__init__.py
index 3f70af9..f026b90 100644
--- a/firstlanguage_python/controllers/__init__.py
+++ b/firstlanguage_python/controllers/__init__.py
@@ -1,6 +1,6 @@
 __all__ = [
     'base_controller',
-    'basic_ap_is_controller',
-    'advanced_ap_is_controller',
+    'basic_api_controller',
+    'advanced_api_controller',
     'enterprise_only_controller',
 ]
diff --git a/firstlanguage_python/controllers/__pycache__/__init__.cpython-39.pyc b/firstlanguage_python/controllers/__pycache__/__init__.cpython-39.pyc
index d712255cc6bc65d00b90387391afdadd6e6c8771..004feae7a1a4f2b72dcf7a21de9e8c0bb5aee034 100644
GIT binary patch
diff --git a/firstlanguage_python/controllers/__pycache__/advanced_api_controller.cpython-39.pyc b/firstlanguage_python/controllers/__pycache__/advanced_api_controller.cpython-39.pyc
index aa14376c3001fa39af3c1b95b0b755b6c9ff9c0f..d71053627c7b64591b5ce29ed7cc9272a6136e92 100644
GIT binary patch
diff --git a/firstlanguage_python/controllers/__pycache__/basic_api_controller.cpython-39.pyc b/firstlanguage_python/controllers/__pycache__/basic_api_controller.cpython-39.pyc
index 5d2cf6a171985eda30badeac194290afd64d9bba..60f977171ccceeefeb29114418486aeaa53f861c 100644
GIT binary patch
diff --git a/firstlanguage_python/controllers/advanced_api_controller.py b/firstlanguage_python/controllers/advanced_api_controller.py
index 18130e9..6bd8b20 100644
--- a/firstlanguage_python/controllers/advanced_api_controller.py
+++ b/firstlanguage_python/controllers/advanced_api_controller.py
@@ -33,7 +33,6 @@ def get_classification(self,
                            body):
         """Does a POST request to /api/classify.
 
-        # Text Classification  : Defintion and it's usage
         A text classifier identifies the categories of the text given as
         input. Classifying the texts is one of the powerful preprocessing
         technique in topic identification and sentiment classification
@@ -59,7 +58,14 @@ def get_classification(self,
         | Vietnamese | vi       |
 
         Args:
-            body (object): Add a JSON Input as per the schema defined below
+            body (object): Add a JSON Input as per the schema defined below 
+                **Size limit:**   1MB for both text and URL input  **URL
+                Input:**  For URL, we now accept 4 contentTypes. * html *
+                plaintext * pdf * docx  If you are providing Google drive or
+                Google Spreadsheet url, ensure that you provide a link which
+                can download the file directly and not the share link. 
+                Example for Google Drive link:  
+                https://drive.google.com/uc?id=idofthefile
 
         Returns:
             Responseclassify: Response from the API. Classifies labels.
@@ -108,7 +114,6 @@ def get_qa(self,
                body=None):
         """Does a POST request to /api/qa.
 
-        # QA : Defintion and it's usage
         A Question Answering System retrieves the answer relevant to the
         question given by the user. A question answering system can be used
         for building a text based chatbots, search engines etc. Our question
@@ -121,7 +126,13 @@ def get_qa(self,
 
         Args:
             body (object, optional): Add a JSON Input as per the schema
-                defined below
+                defined below  **Size limit:**   1MB for both text and URL
+                input  **URL Input:**  For URL, we now accept 4 contentTypes.
+                * html * plaintext * pdf * docx  If you are providing Google
+                drive or Google Spreadsheet url, ensure that you provide a
+                link which can download the file directly and not the share
+                link.  Example for Google Drive link:  
+                https://drive.google.com/uc?id=idofthefile
 
         Returns:
             ApiQaResponse: Response from the API. Answer for the question
@@ -187,13 +198,11 @@ def get_table_qa(self,
                 defined below. For URL input, if you are providing Google
                 drive or Google Spreadsheet url ensure that you provide a link
                 which can download the file directly and not the share link. 
-                Example: For Google Spreadsheet, the url format will be like
-                below:
+                Example for Google Spreadsheet link: 
                 https://docs.google.com/spreadsheets/d/1TtzPAHqpaTB7Ltdq0zwZ8Fa
-                mF7O9aC4KH4EpmwI/export?format=csv&gid=151344200  Or for
-                Google Drive, it will be like below:
-                https://drive.google.com/uc?id=idofthefile  For Flat table
-                input check the example out.
+                mF7O9aC4KH4EpmwI/export?format=csv&gid=151344200  Example for
+                Google Drive link:  https://drive.google.com/uc?id=idofthefile
+                For Flat table input check the example.
 
         Returns:
             list of ApiTableqaResponse: Response from the API. Answers for the
@@ -270,11 +279,7 @@ def get_image_caption(self,
                 the schema defined below.   For URL, if you are providing
                 Google drive or Google Spreadsheet url ensure that you provide
                 a link which can download the file directly and not the share
-                link.  Example: For Google Spreadsheet, the url format will be
-                like below:
-                https://docs.google.com/spreadsheets/d/1TtzPAHqpaTB7Ltdq0zwZ8Fa
-                mF7OwI/export?format=csv&gid=151344200  Or for Google Drive,
-                it will be like below:
+                link.  Example for Google Drive: 
                 https://drive.google.com/uc?id=idofthefile
 
         Returns:
@@ -325,7 +330,6 @@ def get_ner(self,
                 body=None):
         """Does a POST request to /api/ner.
 
-        # Named Entity Recognition : Defintion and it's usage
         Named Entity Recognitiion  (NER) is extracting the specific Nouns such
         as, Person Names, Location names, Organization Names, Currency ,
         Dates. It is a classification task. NER can be used as a sub-task in
@@ -351,7 +355,13 @@ def get_ner(self,
 
         Args:
             body (object, optional): Add a JSON Input as per the schema
-                defined below
+                defined below  **Size limit:**   1MB for both text and URL
+                input  **URL Input:**  For URL, we now accept 4 contentTypes.
+                * html * plaintext * pdf * docx  If you are providing Google
+                drive or Google Spreadsheet url, ensure that you provide a
+                link which can download the file directly and not the share
+                link.  Example for Google Drive link:  
+                https://drive.google.com/uc?id=idofthefile
 
         Returns:
             list of ApiNerResponse: Response from the API. Array of Named
@@ -401,7 +411,6 @@ def get_summary(self,
                     body=None):
         """Does a POST request to /api/summary.
 
-        # Summarization : Defintion and it's usage
         Summarization generates a crisp content of the large input text which
         is highly coherent. 
         | Languages               | ISO Code |
@@ -451,7 +460,13 @@ def get_summary(self,
 
         Args:
             body (object, optional): Add a JSON Input as per the schema
-                defined below
+                defined below  **Size limit:**   1MB for both text and URL
+                input  **URL Input:**  For URL, we now accept 4 contentTypes.
+                * html * plaintext * pdf * docx  If you are providing Google
+                drive or Google Spreadsheet url, ensure that you provide a
+                link which can download the file directly and not the share
+                link.  Example for Google Drive link:  
+                https://drive.google.com/uc?id=idofthefile
 
         Returns:
             ApiSummaryResponse: Response from the API. JSON Object with
@@ -501,7 +516,6 @@ def get_translate(self,
                       body=None):
         """Does a POST request to /api/translate.
 
-        # Translation : Defintion and it's usage
         Machine Translation is translating the text automatically from  one
         language to another langauge.
         # Languages covered:
@@ -566,11 +580,30 @@ def get_translate(self,
 
         Args:
             body (object, optional): Add a JSON Input as per the schema
-                defined below
+                defined below  **Size limit:**   1MB for both text and URL
+                input  **URL Input:**  For URL, we now accept 4 contentTypes.
+                * html * plaintext * pdf * docx  If you are providing Google
+                drive or Google Spreadsheet url, ensure that you provide a
+                link which can download the file directly and not the share
+                link.  Example for Google Drive link:  
+                https://drive.google.com/uc?id=idofthefile  **preserveFormat
+                Flag:**  When true:  This applies only for PDF and DOCX
+                content types. The API will try to maintain the source file
+                formatting. DOCX files will mostly work without any issues.
+                But for PDF files, the API will try to maintain the format but
+                it is not guaranteed. Scanned documents will also not work.
+                For PDF files, if the target language font is not renderred
+                properly, please report the issue at info@firstlanguage.in 
+                When false:  If the flag is false, then the API will simply
+                read all text in the PDF and docx files and translate and send
+                the response back as plaintext.
 
         Returns:
             ApiTranslateResponse: Response from the API. JSON Object with
-                translation of the text given
+                translation of the text given. 
+
+For PDF and DOCX contenttype
+                the response will be a PDF file or a DOCX file.
 
         Raises:
             APIException: When an error occurs while fetching the data from
@@ -596,18 +629,18 @@ def get_translate(self,
         _request = self.config.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body))
         # Apply authentication scheme on request
         self.apply_auth_schemes(_request, 'global')
-
-        _response = self.execute_request(_request)
-
-        # Endpoint and global error handling using HTTP status codes.
-        if _response.status_code == 400:
-            raise ErrorsException('Bad Request', _response)
-        elif _response.status_code == 426:
-            raise M426ErrorException('Please use HTTPS protocol', _response)
-        elif _response.status_code == 429:
-            raise APIException('Too Many Requests', _response)
-        self.validate_response(_response)
-
-        decoded = APIHelper.json_deserialize(_response.text, ApiTranslateResponse.from_dictionary)
-
-        return decoded
+        if body['input']['preserveFormat'] == 'true' and (body['input']['contentType'] == 'pdf' or body['input']['contentType'] == 'docx'):
+            response = self.execute_request(_request, True)            
+        else:
+            _response = self.execute_request(_request)
+             # Endpoint and global error handling using HTTP status codes.
+            if _response.status_code == 400:
+                raise ErrorsException('Bad Request', _response)
+            elif _response.status_code == 426:
+                raise M426ErrorException('Please use HTTPS protocol', _response)
+            elif _response.status_code == 429:
+                raise APIException('Too Many Requests', _response)            
+            self.validate_response(_response)
+            decoded = APIHelper.json_deserialize(_response.text, ApiTranslateResponse.from_dictionary)
+            return decoded
+        return response
\ No newline at end of file
diff --git a/firstlanguage_python/controllers/basic_api_controller.py b/firstlanguage_python/controllers/basic_api_controller.py
index ac0c1bd..164ee3d 100644
--- a/firstlanguage_python/controllers/basic_api_controller.py
+++ b/firstlanguage_python/controllers/basic_api_controller.py
@@ -32,7 +32,6 @@ def get_stemmer(self,
                     body):
         """Does a POST request to /api/stemmer.
 
-        # Stemmer : Defintion and it's usage
         A word takes different inflectional forms. For instance, the word,
         "Compute" can take the forms, "computing", "computation",  and
         "computerize". The NLP applications such as Search Engines and
@@ -74,7 +73,14 @@ def get_stemmer(self,
         |  Turkish     |  tr        |
 
         Args:
-            body (object): Add a JSON Input as per the schema defined below
+            body (object): Add a JSON Input as per the schema defined below 
+                **Size limit:**   1MB for both text and URL input  **URL
+                Input:**  For URL, we now accept 4 contentTypes. * html *
+                plaintext * pdf * docx  If you are providing Google drive or
+                Google Spreadsheet url, ensure that you provide a link which
+                can download the file directly and not the share link. 
+                Example for Google Drive link:  
+                https://drive.google.com/uc?id=idofthefile
 
         Returns:
             list of Responsestem: Response from the API. Stemmed output.
@@ -123,7 +129,6 @@ def get_lemma(self,
                   body):
         """Does a POST request to /api/lemmatize.
 
-        # Lemmatizer : Defintion and it's usage
         Lemmatizer is similar to stemmer that gives the stemmed version of a
         word but lemmatizer differs from the stemmer in giving a meaningful
         stem or the lemma. For instance, for the word, "smiling", the stemmer
@@ -152,7 +157,14 @@ def get_lemma(self,
         | Spanish            | es       |
 
         Args:
-            body (object): Add a JSON Input as per the schema defined below
+            body (object): Add a JSON Input as per the schema defined below 
+                **Size limit:**   1MB for both text and URL input  **URL
+                Input:**  For URL, we now accept 4 contentTypes. * html *
+                plaintext * pdf * docx  If you are providing Google drive or
+                Google Spreadsheet url, ensure that you provide a link which
+                can download the file directly and not the share link. 
+                Example for Google Drive link:  
+                https://drive.google.com/uc?id=idofthefile
 
         Returns:
             list of Responselemma: Response from the API. Lemmatized output.
@@ -201,7 +213,6 @@ def get_morph(self,
                   body):
         """Does a POST request to /api/morph.
 
-        # Morphological Analyzer : Defintion and it's usage
         Morphological Analyzer analyzes how a word is formed. It breaks a word
         into smaller units called, "morphemes" and gives a clue on the pattern
         of words of a particular langauge.  It can be used for building
@@ -228,7 +239,14 @@ def get_morph(self,
         | Spanish            | es       |
 
         Args:
-            body (object): Add a JSON Input as per the schema defined below
+            body (object): Add a JSON Input as per the schema defined below 
+                **Size limit:**   1MB for both text and URL input  **URL
+                Input:**  For URL, we now accept 4 contentTypes. * html *
+                plaintext * pdf * docx  If you are providing Google drive or
+                Google Spreadsheet url, ensure that you provide a link which
+                can download the file directly and not the share link. 
+                Example for Google Drive link:  
+                https://drive.google.com/uc?id=idofthefile
 
         Returns:
             Responsemorph: Response from the API. Morphological output.
@@ -277,20 +295,19 @@ def get_postag(self,
                    body):
         """Does a POST request to /api/postag.
 
-         # Parts of Speech Tagger : Defintion and it's usage
-          Parts of Speech Tagger, which is shortly known as POS Tagger is a
-          software that automatically finds the word classes, when a text
-          input is given. The text input can be a word, a sentence or a set of
-          sentences. The word classes are the grammatical categories such as,
-          Noun, Verb, Adverb etc. The category assigned to each word is called
-          as a tag. A set of tags, each indicating a grammatical category is
-          called, "tagsets". POS tagging is a mandatory pre-processing for
-          most of the Natural Language Processing Applications such as,
-          Information Extraction, Information Retreival systems and Summary
-          generation systems. A POS Tagger is a language-dependent software as
-          the grammar rules will differ for every language. For instance, a
-          word ending with "ing" might indicate a "Verb" in English but this
-          will not be applicable for other languages. 
+        Parts of Speech Tagger, which is shortly known as POS Tagger is a
+        software that automatically finds the word classes, when a text input
+        is given. The text input can be a word, a sentence or a set of
+        sentences. The word classes are the grammatical categories such as,
+        Noun, Verb, Adverb etc. The category assigned to each word is called
+        as a tag. A set of tags, each indicating a grammatical category is
+        called, "tagsets". POS tagging is a mandatory pre-processing for most
+        of the Natural Language Processing Applications such as, Information
+        Extraction, Information Retreival systems and Summary generation
+        systems. A POS Tagger is a language-dependent software as the grammar
+        rules will differ for every language. For instance, a word ending with
+        "ing" might indicate a "Verb" in English but this will not be
+        applicable for other languages. 
         # Languages covered:
         | Languages          | ISO Code |
         |--------------------|----------|
@@ -306,7 +323,14 @@ def get_postag(self,
          
 
         Args:
-            body (object): Add a JSON Input as per the schema defined below
+            body (object): Add a JSON Input as per the schema defined below 
+                **Size limit:**   1MB for both text and URL input  **URL
+                Input:**  For URL, we now accept 4 contentTypes. * html *
+                plaintext * pdf * docx  If you are providing Google drive or
+                Google Spreadsheet url, ensure that you provide a link which
+                can download the file directly and not the share link. 
+                Example for Google Drive link:  
+                https://drive.google.com/uc?id=idofthefile
 
         Returns:
             list of Responsepo: Response from the API. POSTAG output.
diff --git a/firstlanguage_python/controllers/enterprise_only_controller.py b/firstlanguage_python/controllers/enterprise_only_controller.py
index 88e1543..e7d81d2 100644
--- a/firstlanguage_python/controllers/enterprise_only_controller.py
+++ b/firstlanguage_python/controllers/enterprise_only_controller.py
@@ -26,7 +26,6 @@ def get_qa_enterprise(self,
                           body=None):
         """Does a POST request to /api/question.
 
-        # QA : Defintion and it's usage
         A Question Answering System retrieves the answer relevant to the
         question given by the user. A question answering system can be used
         for building a text based chatbots, search engines etc. Our question
@@ -36,6 +35,9 @@ def get_qa_enterprise(self,
         etc.
         For ISO code reference, please check the link
         https://www.loc.gov/standards/iso639-2/php/code_list.php
+        For enterprise, the context for the questions will be stored in
+        memory. The context can be read from wide range of file and any number
+        of files.
 
         Args:
             body (ApiQuestionRequest, optional): Add a JSON Input as per the
diff --git a/firstlanguage_python/firstlanguage_client.py b/firstlanguage_python/firstlanguage_client.py
index fe0fcba..44ea9a7 100644
--- a/firstlanguage_python/firstlanguage_client.py
+++ b/firstlanguage_python/firstlanguage_client.py
@@ -38,7 +38,7 @@ def __init__(self, http_client_instance=None,
                  max_retries=0, backoff_factor=2,
                  retry_statuses=[408, 413, 429, 500, 502, 503, 504, 521, 522, 524],
                  retry_methods=['GET', 'PUT'],
-                 environment=Environment.PRODUCTION, apikey='BHbLvTKeT4y9PACVomcGBF3GrCv1OUOc',
+                 environment=Environment.PRODUCTION, apikey='TODO: Replace',
                  config=None):
         if config is None:
             self.config = Configuration(
diff --git a/firstlanguage_python/models/input_1.py b/firstlanguage_python/models/input_1.py
index 16a3178..0dacefe 100644
--- a/firstlanguage_python/models/input_1.py
+++ b/firstlanguage_python/models/input_1.py
@@ -16,16 +16,16 @@ class Input1(object):
 
     """Implementation of the 'Input1' model.
 
-    Text for processing will be read from the given URL. Only HTML pages or
-    text pages will be processed at this time.
+    Text for processing will be read from the given URL.
 
     Attributes:
         url (string): URL where the content is hosted.
         lang (string): Allowed language code. Refer Allowed languages
             section.
-        content_type (string): Allowed values or html or text. If html is
-            specified all html tags and special characters will be stripped
-            before processing.
+        content_type (string): Allowed values are:html,plaintext, pdf, docx If
+            html is specified all html tags and special characters will be
+            stripped before processing. For PDF and docx, all text will be
+            read. Scanned documents will not work.
 
     """
 
diff --git a/firstlanguage_python/models/input_12.py b/firstlanguage_python/models/input_12.py
index 2edd52c..e709695 100644
--- a/firstlanguage_python/models/input_12.py
+++ b/firstlanguage_python/models/input_12.py
@@ -21,9 +21,10 @@ class Input12(object):
     Attributes:
         lang (string): Allowed language code. Refer Allowed languages
             section.
-        content_type (string): Allowed values or html or text. If html is
-            specified all html tags and special characters will be stripped
-            before processing.
+        content_type (string): Allowed values are:html,plaintext, pdf, docx If
+            html is specified all html tags and special characters will be
+            stripped before processing. For PDF and docx, all text will be
+            read. Scanned documents will not work.
         url (string): URL where the text for the NER task is stored.
 
     """
diff --git a/firstlanguage_python/models/input_14.py b/firstlanguage_python/models/input_14.py
index 2a6cfc7..4676168 100644
--- a/firstlanguage_python/models/input_14.py
+++ b/firstlanguage_python/models/input_14.py
@@ -21,9 +21,10 @@ class Input14(object):
     Attributes:
         lang (string): Allowed language code. Refer Allowed languages
             section.
-        content_type (string): Allowed values or html or text. If html is
-            specified all html tags and special characters will be stripped
-            before processing.
+        content_type (string): Allowed values are:html,plaintext, pdf, docx If
+            html is specified all html tags and special characters will be
+            stripped before processing. For PDF and docx, all text will be
+            read. Scanned documents will not work.
         url (string): Text from this URL will be read and a summary generated
 
     """
diff --git a/firstlanguage_python/models/input_16.py b/firstlanguage_python/models/input_16.py
index 165f443..1fc07ed 100644
--- a/firstlanguage_python/models/input_16.py
+++ b/firstlanguage_python/models/input_16.py
@@ -21,11 +21,13 @@ class Input16(object):
     Attributes:
         lang (string): Allowed language code. Refer Allowed languages
             section.
-        content_type (string): Allowed values or html or text. If html is
-            specified all html tags and special characters will be stripped
-            before processing.
+        content_type (string): Allowed values are:html,plaintext, pdf, docx If
+            html is specified all html tags and special characters will be
+            stripped before processing. For PDF and docx, all text will be
+            read. Scanned documents will not work.
         url (string): Text from this URL will be read and a translation
             generated
+        preserve_format (string): Accepted values are true, false.
 
     """
 
@@ -33,19 +35,22 @@ class Input16(object):
     _names = {
         "lang": 'lang',
         "content_type": 'contentType',
-        "url": 'url'
+        "url": 'url',
+        "preserve_format": 'preserveFormat'
     }
 
     def __init__(self,
                  lang=None,
                  content_type=None,
-                 url=None):
+                 url=None,
+                 preserve_format=None):
         """Constructor for the Input16 class"""
 
         # Initialize members of the class
         self.lang = lang
         self.content_type = content_type
         self.url = url
+        self.preserve_format = preserve_format
 
     @classmethod
     def from_dictionary(cls,
@@ -68,11 +73,13 @@ def from_dictionary(cls,
         lang = dictionary.get('lang')
         content_type = dictionary.get('contentType')
         url = dictionary.get('url')
+        preserve_format = dictionary.get('preserveFormat')
 
         # Return an object of this model
         return cls(lang,
                    content_type,
-                   url)
+                   url,
+                   preserve_format)
 
     @classmethod
     def validate(cls, val):
diff --git a/firstlanguage_python/models/input_3.py b/firstlanguage_python/models/input_3.py
index 9ba2dd2..da60859 100644
--- a/firstlanguage_python/models/input_3.py
+++ b/firstlanguage_python/models/input_3.py
@@ -22,9 +22,10 @@ class Input3(object):
         url (string): URL where the content is hosted.
         lang (string): Allowed language code. Refer Allowed languages
             section.
-        content_type (string): Allowed values or html or text. If html is
-            specified all html tags and special characters will be stripped
-            before processing.
+        content_type (string): Allowed values are:html,plaintext, pdf, docx If
+            html is specified all html tags and special characters will be
+            stripped before processing. For PDF and docx, all text will be
+            read. Scanned documents will not work.
         labels (list of object): Labels to classify
 
     """
diff --git a/firstlanguage_python/models/input_6.py b/firstlanguage_python/models/input_6.py
index d5ca1ad..1c17430 100644
--- a/firstlanguage_python/models/input_6.py
+++ b/firstlanguage_python/models/input_6.py
@@ -24,9 +24,10 @@ class Input6(object):
             not be stripped.
         lang (string): Allowed language code. Refer Allowed languages
             section.
-        content_type (string): Allowed values or html or text. If html is
-            specified all html tags and special characters will be stripped
-            before processing.
+        content_type (string): Allowed values are:html,plaintext, pdf, docx If
+            html is specified all html tags and special characters will be
+            stripped before processing. For PDF and docx, all text will be
+            read. Scanned documents will not work.
         url (string): URL where the context for the question is stored.
 
     """
diff --git a/firstlanguage_python/models/url_input.py b/firstlanguage_python/models/url_input.py
index 3a3b2e0..cefbe91 100644
--- a/firstlanguage_python/models/url_input.py
+++ b/firstlanguage_python/models/url_input.py
@@ -21,7 +21,6 @@ class URLInput(object):
 
     Attributes:
         input (Input1): Text for processing will be read from the given URL.
-            Only HTML pages or text pages will be processed at this time.
 
     """
 
diff --git a/firstlanguage_python/schemas/input_1.json b/firstlanguage_python/schemas/input_1.json
index b80a4f8..7ea2123 100644
--- a/firstlanguage_python/schemas/input_1.json
+++ b/firstlanguage_python/schemas/input_1.json
@@ -1,7 +1,7 @@
 {
   "id": "Input1",
   "title": "Input1",
-  "description": "Text for processing will be read from the given URL. Only HTML pages or text pages will be processed at this time.",
+  "description": "Text for processing will be read from the given URL.",
   "type": "object",
   "properties": {
     "url": {
@@ -15,7 +15,7 @@
       "type": "string"
     },
     "contentType": {
-      "description": "Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing.",
+      "description": "Allowed values are:html,plaintext, pdf, docx\nIf html is specified all html tags and special characters will be stripped before processing.\nFor PDF and docx, all text will be read. Scanned documents will not work.",
       "example": "html",
       "type": "string"
     }
diff --git a/firstlanguage_python/schemas/input_12.json b/firstlanguage_python/schemas/input_12.json
index 5614d59..312e21c 100644
--- a/firstlanguage_python/schemas/input_12.json
+++ b/firstlanguage_python/schemas/input_12.json
@@ -8,7 +8,7 @@
       "type": "string"
     },
     "contentType": {
-      "description": "Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing.",
+      "description": "Allowed values are:html,plaintext, pdf, docx\nIf html is specified all html tags and special characters will be stripped before processing.\nFor PDF and docx, all text will be read. Scanned documents will not work.",
       "type": "string"
     },
     "url": {
diff --git a/firstlanguage_python/schemas/input_14.json b/firstlanguage_python/schemas/input_14.json
index 27c2d29..1ed5504 100644
--- a/firstlanguage_python/schemas/input_14.json
+++ b/firstlanguage_python/schemas/input_14.json
@@ -8,7 +8,7 @@
       "type": "string"
     },
     "contentType": {
-      "description": "Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing.",
+      "description": "Allowed values are:html,plaintext, pdf, docx\nIf html is specified all html tags and special characters will be stripped before processing.\nFor PDF and docx, all text will be read. Scanned documents will not work.",
       "type": "string"
     },
     "url": {
diff --git a/firstlanguage_python/schemas/input_16.json b/firstlanguage_python/schemas/input_16.json
index caf77fb..f3ac596 100644
--- a/firstlanguage_python/schemas/input_16.json
+++ b/firstlanguage_python/schemas/input_16.json
@@ -8,17 +8,22 @@
       "type": "string"
     },
     "contentType": {
-      "description": "Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing.",
+      "description": "Allowed values are:html,plaintext, pdf, docx\nIf html is specified all html tags and special characters will be stripped before processing.\nFor PDF and docx, all text will be read. Scanned documents will not work.",
       "type": "string"
     },
     "url": {
       "description": "Text from this URL will be read and a translation generated",
       "type": "string"
+    },
+    "preserveFormat": {
+      "description": "Accepted values are true, false.",
+      "type": "string"
     }
   },
   "required": [
     "lang",
     "contentType",
-    "url"
+    "url",
+    "preserveFormat"
   ]
 }
diff --git a/firstlanguage_python/schemas/input_3.json b/firstlanguage_python/schemas/input_3.json
index 647b035..66e6cc9 100644
--- a/firstlanguage_python/schemas/input_3.json
+++ b/firstlanguage_python/schemas/input_3.json
@@ -14,7 +14,7 @@
       "type": "string"
     },
     "contentType": {
-      "description": "Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing.",
+      "description": "Allowed values are:html,plaintext, pdf, docx\nIf html is specified all html tags and special characters will be stripped before processing.\nFor PDF and docx, all text will be read. Scanned documents will not work.",
       "example": "html",
       "type": "string"
     },
diff --git a/firstlanguage_python/schemas/input_6.json b/firstlanguage_python/schemas/input_6.json
index d6f115d..b27bb10 100644
--- a/firstlanguage_python/schemas/input_6.json
+++ b/firstlanguage_python/schemas/input_6.json
@@ -12,7 +12,7 @@
       "type": "string"
     },
     "contentType": {
-      "description": "Allowed values or html or text. If html is specified all html tags and special characters will be stripped before processing.",
+      "description": "Allowed values are:html,plaintext, pdf, docx\nIf html is specified all html tags and special characters will be stripped before processing.\nFor PDF and docx, all text will be read. Scanned documents will not work.",
       "type": "string"
     },
     "url": {
diff --git a/setup.py b/setup.py
index 322ce8b..02b0d60 100644
--- a/setup.py
+++ b/setup.py
@@ -12,14 +12,14 @@
 
 setup(
     name='firstlanguage_python',
-    version='2.1',
+    version='2.2',
     description='Python client library for FirstLanguage API',
     long_description=long_description,
     long_description_content_type="text/markdown",
     author='FirstLanguage',
     author_email='info@firstlanguage.in',
     url='https://www.firstlanguage.in/contactus',
-    download_url = 'https://github.com/FirstLanguage/firstlanguage_python/archive/refs/tags/v2.0.tar.gz',
+    download_url = 'https://github.com/FirstLanguage/firstlanguage_python/archive/refs/tags/v2.1.tar.gz',
     keywords = ['FirstLanguage API', 'NLP', 'SDK', 'Python', 'Natural Language Processing'],  
     packages=find_packages(),
     install_requires=[

From 6e6b85021c32dee38553fc2832e29015341358f1 Mon Sep 17 00:00:00 2001
From: Subalalitha <subalalitha@firstlanguage.in>
Date: Fri, 11 Mar 2022 17:05:54 +0530
Subject: [PATCH 31/34] Spell correction

---
 dist/firstlanguage_python-2.2.tar.gz          | Bin 0 -> 41946 bytes
 doc/controllers/basic-ap-is.md                | 220 ++++++++---------
 doc/controllers/basic-api.md                  |  28 +--
 doc/models/responselemma.md                   |   4 +-
 doc/models/responsepo.md                      |   4 +-
 doc/models/responsestem.md                    |   4 +-
 example_Stemmer.py                            |   2 +-
 examples/example_Stemmer.py                   |   2 +-
 firstlanguage_python.egg-info/PKG-INFO        |   6 +-
 firstlanguage_python/models/responselemma.py  |  12 +-
 firstlanguage_python/models/responsepo.py     |  12 +-
 firstlanguage_python/models/responsestem.py   |  12 +-
 .../schemas/responselemma.json                |   2 +-
 firstlanguage_python/schemas/responsepo.json  |   2 +-
 .../schemas/responsestem.json                 |   2 +-
 index.md                                      |   2 +-
 setup.py                                      |   4 +-
 .../test_basic_ap_is_controller.py            | 222 +++++++++---------
 18 files changed, 271 insertions(+), 269 deletions(-)
 create mode 100644 dist/firstlanguage_python-2.2.tar.gz

diff --git a/dist/firstlanguage_python-2.2.tar.gz b/dist/firstlanguage_python-2.2.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..eb0db5e3517971fb9425dd0fb07b6142339017fa
GIT binary patch
diff --git a/doc/controllers/basic-ap-is.md b/doc/controllers/basic-ap-is.md
index 2f7ff09..5fc9093 100644
--- a/doc/controllers/basic-ap-is.md
+++ b/doc/controllers/basic-ap-is.md
@@ -10,47 +10,47 @@ basic_ap_is_controller = client.basic_ap_is
 
 ## Methods
 
-* [Get Stemmer](../../doc/controllers/basic-ap-is.md#get-stemmer)
-* [Get Lemma](../../doc/controllers/basic-ap-is.md#get-lemma)
-* [Get Morph](../../doc/controllers/basic-ap-is.md#get-morph)
+* [Get Stemmer](../../doc/controllers/basic-ap-is.md#get-stemmer)
+* [Get Lemma](../../doc/controllers/basic-ap-is.md#get-lemma)
+* [Get Morph](../../doc/controllers/basic-ap-is.md#get-morph)
 * [Get Postag](../../doc/controllers/basic-ap-is.md#get-postag)
 
 
 # Get Stemmer
 
-A word takes different inflectional forms. For instance, the word, "Compute" can take the forms, "computing", "computation",  and "computerize". The NLP applications such as Search Engines and Information Extraction would want to store the base or stem of the word, i.e "Compute" instead of accomodating all its inflected forms. This will yield in dimensionality reduction and incerases the efficiency of the system. The stemmer cuts the prefix and suffix of a word.
-
-# Languages covered:
-
-Our stemmer works for the following  26 languages.
-
-| Languages    | ISO Code   |
-|--------------|------------|
-|  Arabic      |  ar        |
-|  Catalan     |  ca        |
-|  Danish      |  da        |
-|  German      |  de        |
-|  Greek       |  el        |
-|  English     |  en        |
-|  Spanish     |  es        |
-|  Basque      |  eu        |
-|  Finnish     |  fi        |
-|  French      |  fr        |
-|  Irish       |  ga        |
-|  Hindi       |  hi        |
-|  Hungarian   |  hu        |
-|  Indonesian  |  id        |
-|  Italian     |  it        |
-|  Lithuanian  |  lt        |
-|  Nepali      |  ne        |
-|  Dutch       |  nl        |
-|  Norwegian   |  no        |
-|  Portuguese  |  pt        |
-|  Romanian    |  ro        |
-|  Russian     |  ru        |
-|  Serbian     |  sr        |
-|  Swedish     |  sv        |
-|  Tamil       |  ta        |
+A word takes different inflectional forms. For instance, the word, "Compute" can take the forms, "computing", "computation",  and "computerize". The NLP applications such as Search Engines and Information Extraction would want to store the base or stem of the word, i.e "Compute" instead of accomodating all its inflected forms. This will yield in dimensionality reduction and incerases the efficiency of the system. The stemmer cuts the prefix and suffix of a word.
+
+# Languages covered:
+
+Our stemmer works for the following  26 languages.
+
+| Languages    | ISO Code   |
+|--------------|------------|
+|  Arabic      |  ar        |
+|  Catalan     |  ca        |
+|  Danish      |  da        |
+|  German      |  de        |
+|  Greek       |  el        |
+|  English     |  en        |
+|  Spanish     |  es        |
+|  Basque      |  eu        |
+|  Finnish     |  fi        |
+|  French      |  fr        |
+|  Irish       |  ga        |
+|  Hindi       |  hi        |
+|  Hungarian   |  hu        |
+|  Indonesian  |  id        |
+|  Italian     |  it        |
+|  Lithuanian  |  lt        |
+|  Nepali      |  ne        |
+|  Dutch       |  nl        |
+|  Norwegian   |  no        |
+|  Portuguese  |  pt        |
+|  Romanian    |  ro        |
+|  Russian     |  ru        |
+|  Serbian     |  sr        |
+|  Swedish     |  sv        |
+|  Tamil       |  ta        |
 |  Turkish     |  tr        |
 
 ```python
@@ -71,7 +71,7 @@ def get_stemmer(self,
 ## Example Usage
 
 ```python
-body = jsonpickle.decode('{"$$__case":0,"$$__case_of":"oneOf","value":{"input":{"text":"அவள் வேகமாக ஓடினாள்","lang":"ta"}}}')
+body = jsonpickle.decode('{"$$__case":0,"$$__case_of":"oneOf","value":{"input":{"text":"அவள் வேகமாக ஓடினாள்","lang":"ta"}}}')
 
 result = basic_ap_is_controller.get_stemmer(body)
 ```
@@ -81,15 +81,15 @@ result = basic_ap_is_controller.get_stemmer(body)
 ```json
 [
   {
-    "orginalText": "அவள்",
+    "originalText": "அவள்",
     "stem": "அவள்"
   },
   {
-    "orginalText": "வேகமாக",
+    "originalText": "வேகமாக",
     "stem": "வேகம்"
   },
   {
-    "orginalText": "ஓடினாள்",
+    "originalText": "ஓடினாள்",
     "stem": "ஓடி"
   }
 ]
@@ -106,27 +106,27 @@ result = basic_ap_is_controller.get_stemmer(body)
 
 # Get Lemma
 
-Lemmatizer is similar to stemmer that gives the stemmed version of a word but lemmatizer differs from the stemmer in giving a meaningful stem or the lemma. For instance, for the word, "smiling", the stemmer would give, "smil", stemming the suffix, "ing" but the lemmatizer would give the meaningful stem, "smile". lemmatizers can be used in applications such as,  Machine Translation, Search Engines, Text Summarization etc.
-
-# Languages covered:
-
-| Languages          | ISO Code |
-|--------------------|----------|
-| Catalan            | ca       |
-| Danish             | da       |
-| Dutch              | nl       |
-| English            | en       |
-| French             | fr       |
-| German             | de       |
-| Greek              | el       |
-| Italian            | it       |
-| Lithuanian         | lt       |
-| Macedonian         | mk       |
-| Norwegian (Bokmål) | nb       |
-| Polish             | pl       |
-| Portuguese         | pt       |
-| Romanian           | ro       |
-| Russian            | ru       |
+Lemmatizer is similar to stemmer that gives the stemmed version of a word but lemmatizer differs from the stemmer in giving a meaningful stem or the lemma. For instance, for the word, "smiling", the stemmer would give, "smil", stemming the suffix, "ing" but the lemmatizer would give the meaningful stem, "smile". lemmatizers can be used in applications such as,  Machine Translation, Search Engines, Text Summarization etc.
+
+# Languages covered:
+
+| Languages          | ISO Code |
+|--------------------|----------|
+| Catalan            | ca       |
+| Danish             | da       |
+| Dutch              | nl       |
+| English            | en       |
+| French             | fr       |
+| German             | de       |
+| Greek              | el       |
+| Italian            | it       |
+| Lithuanian         | lt       |
+| Macedonian         | mk       |
+| Norwegian (Bokmål) | nb       |
+| Polish             | pl       |
+| Portuguese         | pt       |
+| Romanian           | ro       |
+| Russian            | ru       |
 | Spanish            | es       |
 
 ```python
@@ -147,7 +147,7 @@ def get_lemma(self,
 ## Example Usage
 
 ```python
-body = jsonpickle.decode('{"$$__case":0,"$$__case_of":"oneOf","value":{"input":{"text":"Smiling makes everyone happy","lang":"en"}}}')
+body = jsonpickle.decode('{"$$__case":0,"$$__case_of":"oneOf","value":{"input":{"text":"Smiling makes everyone happy","lang":"en"}}}')
 
 result = basic_ap_is_controller.get_lemma(body)
 ```
@@ -157,19 +157,19 @@ result = basic_ap_is_controller.get_lemma(body)
 ```json
 [
   {
-    "orginalText": "Smiling",
+    "originalText": "Smiling",
     "lemmatized": "smile"
   },
   {
-    "orginalText": "makes",
+    "originalText": "makes",
     "lemmatized": "make"
   },
   {
-    "orginalText": "everyone",
+    "originalText": "everyone",
     "lemmatized": "everyone"
   },
   {
-    "orginalText": "happy",
+    "originalText": "happy",
     "lemmatized": "happy"
   }
 ]
@@ -186,27 +186,27 @@ result = basic_ap_is_controller.get_lemma(body)
 
 # Get Morph
 
-Morphological Analyzer analyzes how a word is formed. It breaks a word into smaller units called, "morphemes" and gives a clue on the pattern of words of a particular langauge.  It can be used for building applications such as,  Machine Translation, Text Summarization, Search systems etc.
-
-# Languages covered:
-
-| Languages          | ISO Code |
-|--------------------|----------|
-| Catalan            | ca       |
-| Danish             | da       |
-| Dutch              | nl       |
-| English            | en       |
-| French             | fr       |
-| German             | de       |
-| Greek              | el       |
-| Italian            | it       |
-| Japanese           | ja       |
-| Lithuanian         | lt       |
-| Macedonian         | mk       |
-| Norwegian (Bokmål) | nb       |
-| Polish             | pl       |
-| Portuguese         | pt       |
-| Russian            | ru       |
+Morphological Analyzer analyzes how a word is formed. It breaks a word into smaller units called, "morphemes" and gives a clue on the pattern of words of a particular langauge.  It can be used for building applications such as,  Machine Translation, Text Summarization, Search systems etc.
+
+# Languages covered:
+
+| Languages          | ISO Code |
+|--------------------|----------|
+| Catalan            | ca       |
+| Danish             | da       |
+| Dutch              | nl       |
+| English            | en       |
+| French             | fr       |
+| German             | de       |
+| Greek              | el       |
+| Italian            | it       |
+| Japanese           | ja       |
+| Lithuanian         | lt       |
+| Macedonian         | mk       |
+| Norwegian (Bokmål) | nb       |
+| Polish             | pl       |
+| Portuguese         | pt       |
+| Russian            | ru       |
 | Spanish            | es       |
 
 ```python
@@ -227,7 +227,7 @@ def get_morph(self,
 ## Example Usage
 
 ```python
-body = jsonpickle.decode('{"$$__case":0,"$$__case_of":"oneOf","value":{"input":{"text":"Let us begin the API development.","lang":"en"}}}')
+body = jsonpickle.decode('{"$$__case":0,"$$__case_of":"oneOf","value":{"input":{"text":"Let us begin the API development.","lang":"en"}}}')
 
 result = basic_ap_is_controller.get_morph(body)
 ```
@@ -411,20 +411,20 @@ result = basic_ap_is_controller.get_morph(body)
 
 # Get Postag
 
-Parts of Speech Tagger, which is shortly known as POS Tagger is a software that automatically finds the word classes, when a text input is given. The text input can be a word, a sentence or a set of sentences. The word classes are the grammatical categories such as, Noun, Verb, Adverb etc. The category assigned to each word is called as a tag. A set of tags, each indicating a grammatical category is called, "tagsets". POS tagging is a mandatory pre-processing for most of the Natural Language Processing Applications such as, Information Extraction, Information Retreival systems and Summary generation systems. A POS Tagger is a language-dependent software as the grammar rules will differ for every language. For instance, a word ending with "ing" might indicate a "Verb" in English but this will not be applicable for other languages.
-
-# Languages covered:
-
-| Languages          | ISO Code |
-|--------------------|----------|
-| Chinese            | zh       |
-| Dutch              | nl       |
-| English            | en       |
-| German             | de       |
-| Italian            | it       |
-| Lithuanian         | lt       |
-| Polish             | pl       |
-| Romanian           | ro       |
+Parts of Speech Tagger, which is shortly known as POS Tagger is a software that automatically finds the word classes, when a text input is given. The text input can be a word, a sentence or a set of sentences. The word classes are the grammatical categories such as, Noun, Verb, Adverb etc. The category assigned to each word is called as a tag. A set of tags, each indicating a grammatical category is called, "tagsets". POS tagging is a mandatory pre-processing for most of the Natural Language Processing Applications such as, Information Extraction, Information Retreival systems and Summary generation systems. A POS Tagger is a language-dependent software as the grammar rules will differ for every language. For instance, a word ending with "ing" might indicate a "Verb" in English but this will not be applicable for other languages.
+
+# Languages covered:
+
+| Languages          | ISO Code |
+|--------------------|----------|
+| Chinese            | zh       |
+| Dutch              | nl       |
+| English            | en       |
+| German             | de       |
+| Italian            | it       |
+| Lithuanian         | lt       |
+| Polish             | pl       |
+| Romanian           | ro       |
 | Tamil              | ta       |
 
 ```python
@@ -445,7 +445,7 @@ def get_postag(self,
 ## Example Usage
 
 ```python
-body = jsonpickle.decode('{"$$__case":0,"$$__case_of":"oneOf","value":{"input":{"text":"Let us begin the API development.","lang":"en"}}}')
+body = jsonpickle.decode('{"$$__case":0,"$$__case_of":"oneOf","value":{"input":{"text":"Let us begin the API development.","lang":"en"}}}')
 
 result = basic_ap_is_controller.get_postag(body)
 ```
@@ -455,31 +455,31 @@ result = basic_ap_is_controller.get_postag(body)
 ```json
 [
   {
-    "orginalText": "Let",
+    "originalText": "Let",
     "postag": "VERB"
   },
   {
-    "orginalText": "us",
+    "originalText": "us",
     "postag": "PRON"
   },
   {
-    "orginalText": "begin",
+    "originalText": "begin",
     "postag": "VERB"
   },
   {
-    "orginalText": "the",
+    "originalText": "the",
     "postag": "DET"
   },
   {
-    "orginalText": "API",
+    "originalText": "API",
     "postag": "PROPN"
   },
   {
-    "orginalText": "development",
+    "originalText": "development",
     "postag": "NOUN"
   },
   {
-    "orginalText": ".",
+    "originalText": ".",
     "postag": "PUNCT"
   }
 ]
diff --git a/doc/controllers/basic-api.md b/doc/controllers/basic-api.md
index d0e2d43..d3a5b72 100644
--- a/doc/controllers/basic-api.md
+++ b/doc/controllers/basic-api.md
@@ -85,15 +85,15 @@ result = basic_api_controller.get_stemmer(body)
 ```json
 [
   {
-    "orginalText": "அவள்",
+    "originalText": "அவள்",
     "stem": "அவள்"
   },
   {
-    "orginalText": "வேகமாக",
+    "originalText": "வேகமாக",
     "stem": "வேகம்"
   },
   {
-    "orginalText": "ஓடினாள்",
+    "originalText": "ஓடினாள்",
     "stem": "ஓடி"
   }
 ]
@@ -163,19 +163,19 @@ result = basic_api_controller.get_lemma(body)
 ```json
 [
   {
-    "orginalText": "Smiling",
+    "originalText": "Smiling",
     "lemmatized": "smile"
   },
   {
-    "orginalText": "makes",
+    "originalText": "makes",
     "lemmatized": "make"
   },
   {
-    "orginalText": "everyone",
+    "originalText": "everyone",
     "lemmatized": "everyone"
   },
   {
-    "orginalText": "happy",
+    "originalText": "happy",
     "lemmatized": "happy"
   }
 ]
@@ -465,31 +465,31 @@ result = basic_api_controller.get_postag(body)
 ```json
 [
   {
-    "orginalText": "Let",
+    "originalText": "Let",
     "postag": "VERB"
   },
   {
-    "orginalText": "us",
+    "originalText": "us",
     "postag": "PRON"
   },
   {
-    "orginalText": "begin",
+    "originalText": "begin",
     "postag": "VERB"
   },
   {
-    "orginalText": "the",
+    "originalText": "the",
     "postag": "DET"
   },
   {
-    "orginalText": "API",
+    "originalText": "API",
     "postag": "PROPN"
   },
   {
-    "orginalText": "development",
+    "originalText": "development",
     "postag": "NOUN"
   },
   {
-    "orginalText": ".",
+    "originalText": ".",
     "postag": "PUNCT"
   }
 ]
diff --git a/doc/models/responselemma.md b/doc/models/responselemma.md
index 9c25d03..02db39d 100644
--- a/doc/models/responselemma.md
+++ b/doc/models/responselemma.md
@@ -9,14 +9,14 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `orginal_text` | `string` | Optional | - |
+| `original_text` | `string` | Optional | - |
 | `lemmatized` | `string` | Optional | - |
 
 ## Example (as JSON)
 
 ```json
 {
-  "orginalText": null,
+  "originalText": null,
   "lemmatized": null
 }
 ```
diff --git a/doc/models/responsepo.md b/doc/models/responsepo.md
index 8ce2c79..120abf8 100644
--- a/doc/models/responsepo.md
+++ b/doc/models/responsepo.md
@@ -9,14 +9,14 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `orginal_text` | `string` | Optional | - |
+| `original_text` | `string` | Optional | - |
 | `postag` | `string` | Optional | - |
 
 ## Example (as JSON)
 
 ```json
 {
-  "orginalText": null,
+  "originalText": null,
   "postag": null
 }
 ```
diff --git a/doc/models/responsestem.md b/doc/models/responsestem.md
index e8e0e7d..db03414 100644
--- a/doc/models/responsestem.md
+++ b/doc/models/responsestem.md
@@ -9,14 +9,14 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `orginal_text` | `string` | Optional | - |
+| `original_text` | `string` | Optional | - |
 | `stem` | `string` | Optional | - |
 
 ## Example (as JSON)
 
 ```json
 {
-  "orginalText": null,
+  "originalText": null,
   "stem": null
 }
 ```
diff --git a/example_Stemmer.py b/example_Stemmer.py
index 8273580..dc45963 100644
--- a/example_Stemmer.py
+++ b/example_Stemmer.py
@@ -17,7 +17,7 @@
 result = basic_api_controller.get_stemmer(body)
 
 for res in result:
-  print("Original Text passed: "+res.orginal_text)
+  print("Original Text passed: "+res.original_text)
   print("Stemmed result: "+res.stem)
 
 '{"input":{"lang":"ja","url": "https://drive.google.com/uc?id=1JFV4lyT1Ajn_6jfmf5CXxw5bzQ0ra1V5", "contentType":"pdf","preserveFormat":"true"}}'
diff --git a/examples/example_Stemmer.py b/examples/example_Stemmer.py
index 3371c5d..00c8801 100644
--- a/examples/example_Stemmer.py
+++ b/examples/example_Stemmer.py
@@ -17,7 +17,7 @@
 result = basic_api_controller.get_stemmer(body)
 
 for res in result:
-  print("Original Text passed: "+res.orginal_text)
+  print("Original Text passed: "+res.original_text)
   print("Stemmed result: "+res.stem)
 
 reqbody='{"input":{"text":"Welcome to Google and FirstLanguage","lang":"ta"} }'
diff --git a/firstlanguage_python.egg-info/PKG-INFO b/firstlanguage_python.egg-info/PKG-INFO
index 7993b7b..f6d5f61 100644
--- a/firstlanguage_python.egg-info/PKG-INFO
+++ b/firstlanguage_python.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 2.1
 Name: firstlanguage-python
-Version: 2.1
+Version: 2.3
 Summary: Python client library for FirstLanguage API
 Home-page: https://www.firstlanguage.in/contactus
 Author: FirstLanguage
 Author-email: info@firstlanguage.in
 License: UNKNOWN
-Download-URL: https://github.com/FirstLanguage/firstlanguage_python/archive/refs/tags/v2.1.tar.gz
+Download-URL: https://github.com/FirstLanguage/firstlanguage_python/archive/refs/tags/v2.3.tar.gz
 Description: 
         # Getting Started with FirstLanguage API
         
@@ -109,6 +109,7 @@ Description:
         | `backoff_factor` | `float` | A backoff factor to apply between attempts after the second try. <br> **Default: 2** |
         | `retry_statuses` | `Array of int` | The http statuses on which retry is to be done. <br> **Default: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524]** |
         | `retry_methods` | `Array of string` | The http methods on which retry is to be done. <br> **Default: ['GET', 'PUT']** |
+        | `apikey` | `string` |  |
         
         The API client can be initialized as follows:
         
@@ -117,6 +118,7 @@ Description:
         from firstlanguage_python.configuration import Environment
         
         client = FirstlanguageapiClient(
+            apikey='apikey',
             environment=Environment.PRODUCTION,)
         ```
         
diff --git a/firstlanguage_python/models/responselemma.py b/firstlanguage_python/models/responselemma.py
index f3c35d8..b91c7be 100644
--- a/firstlanguage_python/models/responselemma.py
+++ b/firstlanguage_python/models/responselemma.py
@@ -19,24 +19,24 @@ class Responselemma(object):
     TODO: type model description here.
 
     Attributes:
-        orginal_text (string): TODO: type description here.
+        original_text (string): TODO: type description here.
         lemmatized (string): TODO: type description here.
 
     """
 
     # Create a mapping from Model property names to API property names
     _names = {
-        "orginal_text": 'orginalText',
+        "original_text": 'originalText',
         "lemmatized": 'lemmatized'
     }
 
     def __init__(self,
-                 orginal_text=None,
+                 original_text=None,
                  lemmatized=None):
         """Constructor for the Responselemma class"""
 
         # Initialize members of the class
-        self.orginal_text = orginal_text
+        self.original_text = original_text
         self.lemmatized = lemmatized
 
     @classmethod
@@ -57,11 +57,11 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
-        orginal_text = dictionary.get('orginalText')
+        original_text = dictionary.get('originalText')
         lemmatized = dictionary.get('lemmatized')
 
         # Return an object of this model
-        return cls(orginal_text,
+        return cls(original_text,
                    lemmatized)
 
     @classmethod
diff --git a/firstlanguage_python/models/responsepo.py b/firstlanguage_python/models/responsepo.py
index aecf2b1..4de6e42 100644
--- a/firstlanguage_python/models/responsepo.py
+++ b/firstlanguage_python/models/responsepo.py
@@ -19,24 +19,24 @@ class Responsepo(object):
     TODO: type model description here.
 
     Attributes:
-        orginal_text (string): TODO: type description here.
+        original_text (string): TODO: type description here.
         postag (string): TODO: type description here.
 
     """
 
     # Create a mapping from Model property names to API property names
     _names = {
-        "orginal_text": 'orginalText',
+        "original_text": 'originalText',
         "postag": 'postag'
     }
 
     def __init__(self,
-                 orginal_text=None,
+                 original_text=None,
                  postag=None):
         """Constructor for the Responsepo class"""
 
         # Initialize members of the class
-        self.orginal_text = orginal_text
+        self.original_text = original_text
         self.postag = postag
 
     @classmethod
@@ -57,11 +57,11 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
-        orginal_text = dictionary.get('orginalText')
+        original_text = dictionary.get('originalText')
         postag = dictionary.get('postag')
 
         # Return an object of this model
-        return cls(orginal_text,
+        return cls(original_text,
                    postag)
 
     @classmethod
diff --git a/firstlanguage_python/models/responsestem.py b/firstlanguage_python/models/responsestem.py
index ae40bd9..bcc7b3a 100644
--- a/firstlanguage_python/models/responsestem.py
+++ b/firstlanguage_python/models/responsestem.py
@@ -19,24 +19,24 @@ class Responsestem(object):
     TODO: type model description here.
 
     Attributes:
-        orginal_text (string): TODO: type description here.
+        original_text (string): TODO: type description here.
         stem (string): TODO: type description here.
 
     """
 
     # Create a mapping from Model property names to API property names
     _names = {
-        "orginal_text": 'orginalText',
+        "original_text": 'originalText',
         "stem": 'stem'
     }
 
     def __init__(self,
-                 orginal_text=None,
+                 original_text=None,
                  stem=None):
         """Constructor for the Responsestem class"""
 
         # Initialize members of the class
-        self.orginal_text = orginal_text
+        self.original_text = original_text
         self.stem = stem
 
     @classmethod
@@ -57,11 +57,11 @@ def from_dictionary(cls,
             return None
 
         # Extract variables from the dictionary
-        orginal_text = dictionary.get('orginalText')
+        original_text = dictionary.get('originalText')
         stem = dictionary.get('stem')
 
         # Return an object of this model
-        return cls(orginal_text,
+        return cls(original_text,
                    stem)
 
     @classmethod
diff --git a/firstlanguage_python/schemas/responselemma.json b/firstlanguage_python/schemas/responselemma.json
index ff4663f..5a3c6fb 100644
--- a/firstlanguage_python/schemas/responselemma.json
+++ b/firstlanguage_python/schemas/responselemma.json
@@ -3,7 +3,7 @@
   "title": "responselemma",
   "type": "object",
   "properties": {
-    "orginalText": {
+    "originalText": {
       "type": "string"
     },
     "lemmatized": {
diff --git a/firstlanguage_python/schemas/responsepo.json b/firstlanguage_python/schemas/responsepo.json
index 931edac..3dbec73 100644
--- a/firstlanguage_python/schemas/responsepo.json
+++ b/firstlanguage_python/schemas/responsepo.json
@@ -3,7 +3,7 @@
   "title": "responsepo",
   "type": "object",
   "properties": {
-    "orginalText": {
+    "originalText": {
       "type": "string"
     },
     "postag": {
diff --git a/firstlanguage_python/schemas/responsestem.json b/firstlanguage_python/schemas/responsestem.json
index 454bd62..37781fc 100644
--- a/firstlanguage_python/schemas/responsestem.json
+++ b/firstlanguage_python/schemas/responsestem.json
@@ -3,7 +3,7 @@
   "title": "responsestem",
   "type": "object",
   "properties": {
-    "orginalText": {
+    "originalText": {
       "type": "string"
     },
     "stem": {
diff --git a/index.md b/index.md
index c8347b7..bd77d30 100644
--- a/index.md
+++ b/index.md
@@ -43,7 +43,7 @@ basic_api_controller = client.basic_api
 result = basic_api_controller.get_stemmer(body)
 
 for res in result:
-  print("Original Text passed: "+res.orginal_text)
+  print("Original Text passed: "+res.original_text)
   print("Stemmed result: "+res.stem)
 
 
diff --git a/setup.py b/setup.py
index 02b0d60..ea580ea 100644
--- a/setup.py
+++ b/setup.py
@@ -12,14 +12,14 @@
 
 setup(
     name='firstlanguage_python',
-    version='2.2',
+    version='2.3',
     description='Python client library for FirstLanguage API',
     long_description=long_description,
     long_description_content_type="text/markdown",
     author='FirstLanguage',
     author_email='info@firstlanguage.in',
     url='https://www.firstlanguage.in/contactus',
-    download_url = 'https://github.com/FirstLanguage/firstlanguage_python/archive/refs/tags/v2.1.tar.gz',
+    download_url = 'https://github.com/FirstLanguage/firstlanguage_python/archive/refs/tags/v2.3.tar.gz',
     keywords = ['FirstLanguage API', 'NLP', 'SDK', 'Python', 'Natural Language Processing'],  
     packages=find_packages(),
     install_requires=[
diff --git a/tests/controllers/test_basic_ap_is_controller.py b/tests/controllers/test_basic_ap_is_controller.py
index 4618ecf..e3e301f 100644
--- a/tests/controllers/test_basic_ap_is_controller.py
+++ b/tests/controllers/test_basic_ap_is_controller.py
@@ -26,40 +26,40 @@ def setUpClass(cls):
         cls.response_catcher = HttpResponseCatcher()
         cls.controller = BasicAPIsController(cls.config, cls.auth_managers, cls.response_catcher)
 
-    # # Stemmer : Defintion and it's usage
-    #A word takes different inflectional forms. For instance, the word, "Compute" can take the forms, "computing", "computation",  and "computerize". The NLP applications such as Search Engines and Information Extraction would want to store the base or stem of the word, i.e "Compute" instead of accomodating all its inflected forms. This will yield in dimensionality reduction and incerases the efficiency of the system. The stemmer cuts the prefix and suffix of a word. 
-    #
-    # # Languages covered:
-    #  Our stemmer works for the following  26 languages. 
-    #  
-    #| Languages    | ISO Code   |
-    #|--------------|------------|
-    #|  Arabic      |  ar        |
-    #|  Catalan     |  ca        |
-    #|  Danish      |  da        |
-    #|  German      |  de        |
-    #|  Greek       |  el        |
-    #|  English     |  en        |
-    #|  Spanish     |  es        |
-    #|  Basque      |  eu        |
-    #|  Finnish     |  fi        |
-    #|  French      |  fr        |
-    #|  Irish       |  ga        |
-    #|  Hindi       |  hi        |
-    #|  Hungarian   |  hu        |
-    #|  Indonesian  |  id        |
-    #|  Italian     |  it        |
-    #|  Lithuanian  |  lt        |
-    #|  Nepali      |  ne        |
-    #|  Dutch       |  nl        |
-    #|  Norwegian   |  no        |
-    #|  Portuguese  |  pt        |
-    #|  Romanian    |  ro        |
-    #|  Russian     |  ru        |
-    #|  Serbian     |  sr        |
-    #|  Swedish     |  sv        |
-    #|  Tamil       |  ta        |
-    #|  Turkish     |  tr        |
+    # # Stemmer : Defintion and it's usage
+    #A word takes different inflectional forms. For instance, the word, "Compute" can take the forms, "computing", "computation",  and "computerize". The NLP applications such as Search Engines and Information Extraction would want to store the base or stem of the word, i.e "Compute" instead of accomodating all its inflected forms. This will yield in dimensionality reduction and incerases the efficiency of the system. The stemmer cuts the prefix and suffix of a word. 
+    #
+    # # Languages covered:
+    #  Our stemmer works for the following  26 languages. 
+    #  
+    #| Languages    | ISO Code   |
+    #|--------------|------------|
+    #|  Arabic      |  ar        |
+    #|  Catalan     |  ca        |
+    #|  Danish      |  da        |
+    #|  German      |  de        |
+    #|  Greek       |  el        |
+    #|  English     |  en        |
+    #|  Spanish     |  es        |
+    #|  Basque      |  eu        |
+    #|  Finnish     |  fi        |
+    #|  French      |  fr        |
+    #|  Irish       |  ga        |
+    #|  Hindi       |  hi        |
+    #|  Hungarian   |  hu        |
+    #|  Indonesian  |  id        |
+    #|  Italian     |  it        |
+    #|  Lithuanian  |  lt        |
+    #|  Nepali      |  ne        |
+    #|  Dutch       |  nl        |
+    #|  Norwegian   |  no        |
+    #|  Portuguese  |  pt        |
+    #|  Romanian    |  ro        |
+    #|  Russian     |  ru        |
+    #|  Serbian     |  sr        |
+    #|  Swedish     |  sv        |
+    #|  Tamil       |  ta        |
+    #|  Turkish     |  tr        |
     #
     def test_get_stemmer(self):
         # Parameters for the API call
@@ -80,37 +80,37 @@ def test_get_stemmer(self):
         
         # Test whether the captured response is as we expected
         self.assertIsNotNone(result)
-        expected_body = APIHelper.json_deserialize('[{"orginalText":"அவள்","stem":"அவள்"},{"orginalText":"வேகமாக","ste'
-            'm":"வேகம்"},{"orginalText":"ஓடினாள்","stem":"ஓடி"}]')
+        expected_body = APIHelper.json_deserialize('[{"originalText":"அவள்","stem":"அவள்"},{"originalText":"வேகமாக","ste'
+            'm":"வேகம்"},{"originalText":"ஓடினாள்","stem":"ஓடி"}]')
         received_body = APIHelper.json_deserialize(self.response_catcher.response.text)
         self.assertTrue(TestHelper.match_body(expected_body, received_body))
 
-    # # Lemmatizer : Defintion and it's usage
-    #
-    #Lemmatizer is similar to stemmer that gives the stemmed version of a word but lemmatizer differs from the stemmer in giving a meaningful stem or the lemma. For instance, for the word, "smiling", the stemmer would give, "smil", stemming the suffix, "ing" but the lemmatizer would give the meaningful stem, "smile". lemmatizers can be used in applications such as,  Machine Translation, Search Engines, Text Summarization etc.
-    #
-    ## Languages covered:
-    #| Languages          | ISO Code |
-    #|--------------------|----------|
-    #| Catalan            | ca       |
-    #| Danish             | da       |
-    #| Dutch              | nl       |
-    #| English            | en       |
-    #| French             | fr       |
-    #| German             | de       |
-    #| Greek              | el       |
-    #| Italian            | it       |
-    #| Lithuanian         | lt       |
-    #| Macedonian         | mk       |
-    #| Norwegian (Bokmål) | nb       |
-    #| Polish             | pl       |
-    #| Portuguese         | pt       |
-    #| Romanian           | ro       |
-    #| Russian            | ru       |
-    #| Spanish            | es       |
-    #
-    #
-    #
+    # # Lemmatizer : Defintion and it's usage
+    #
+    #Lemmatizer is similar to stemmer that gives the stemmed version of a word but lemmatizer differs from the stemmer in giving a meaningful stem or the lemma. For instance, for the word, "smiling", the stemmer would give, "smil", stemming the suffix, "ing" but the lemmatizer would give the meaningful stem, "smile". lemmatizers can be used in applications such as,  Machine Translation, Search Engines, Text Summarization etc.
+    #
+    ## Languages covered:
+    #| Languages          | ISO Code |
+    #|--------------------|----------|
+    #| Catalan            | ca       |
+    #| Danish             | da       |
+    #| Dutch              | nl       |
+    #| English            | en       |
+    #| French             | fr       |
+    #| German             | de       |
+    #| Greek              | el       |
+    #| Italian            | it       |
+    #| Lithuanian         | lt       |
+    #| Macedonian         | mk       |
+    #| Norwegian (Bokmål) | nb       |
+    #| Polish             | pl       |
+    #| Portuguese         | pt       |
+    #| Romanian           | ro       |
+    #| Russian            | ru       |
+    #| Spanish            | es       |
+    #
+    #
+    #
     #
     def test_get_lemma(self):
         # Parameters for the API call
@@ -131,35 +131,35 @@ def test_get_lemma(self):
         
         # Test whether the captured response is as we expected
         self.assertIsNotNone(result)
-        expected_body = APIHelper.json_deserialize('[{"orginalText":"Smiling","lemmatized":"smile"},{"orginalText":"ma'
-            'kes","lemmatized":"make"},{"orginalText":"everyone","lemmatized":"'
-            'everyone"},{"orginalText":"happy","lemmatized":"happy"}]')
+        expected_body = APIHelper.json_deserialize('[{"originalText":"Smiling","lemmatized":"smile"},{"originalText":"ma'
+            'kes","lemmatized":"make"},{"originalText":"everyone","lemmatized":"'
+            'everyone"},{"originalText":"happy","lemmatized":"happy"}]')
         received_body = APIHelper.json_deserialize(self.response_catcher.response.text)
         self.assertTrue(TestHelper.match_body(expected_body, received_body))
 
-    # # Morphological Analyzer : Defintion and it's usage
-    #Morphological Analyzer analyzes how a word is formed. It breaks a word into smaller units called, "morphemes" and gives a clue on the pattern of words of a particular langauge.  It can be used for building applications such as,  Machine Translation, Text Summarization, Search systems etc. 
-    #
-    #
-    ## Languages covered:
-    #| Languages          | ISO Code |
-    #|--------------------|----------|
-    #| Catalan            | ca       |
-    #| Danish             | da       |
-    #| Dutch              | nl       |
-    #| English            | en       |
-    #| French             | fr       |
-    #| German             | de       |
-    #| Greek              | el       |
-    #| Italian            | it       |
-    #| Japanese           | ja       |
-    #| Lithuanian         | lt       |
-    #| Macedonian         | mk       |
-    #| Norwegian (Bokmål) | nb       |
-    #| Polish             | pl       |
-    #| Portuguese         | pt       |
-    #| Russian            | ru       |
-    #| Spanish            | es       |
+    # # Morphological Analyzer : Defintion and it's usage
+    #Morphological Analyzer analyzes how a word is formed. It breaks a word into smaller units called, "morphemes" and gives a clue on the pattern of words of a particular langauge.  It can be used for building applications such as,  Machine Translation, Text Summarization, Search systems etc. 
+    #
+    #
+    ## Languages covered:
+    #| Languages          | ISO Code |
+    #|--------------------|----------|
+    #| Catalan            | ca       |
+    #| Danish             | da       |
+    #| Dutch              | nl       |
+    #| English            | en       |
+    #| French             | fr       |
+    #| German             | de       |
+    #| Greek              | el       |
+    #| Italian            | it       |
+    #| Japanese           | ja       |
+    #| Lithuanian         | lt       |
+    #| Macedonian         | mk       |
+    #| Norwegian (Bokmål) | nb       |
+    #| Polish             | pl       |
+    #| Portuguese         | pt       |
+    #| Russian            | ru       |
+    #| Spanish            | es       |
     #
     def test_get_morph(self):
         # Parameters for the API call
@@ -199,25 +199,25 @@ def test_get_morph(self):
         received_body = APIHelper.json_deserialize(self.response_catcher.response.text)
         self.assertTrue(TestHelper.match_body(expected_body, received_body))
 
-    #  # Parts of Speech Tagger : Defintion and it's usage
-    #  Parts of Speech Tagger, which is shortly known as POS Tagger is a software that automatically finds the word classes, when a text input is given. The text input can be a word, a sentence or a set of sentences. The word classes are the grammatical categories such as, Noun, Verb, Adverb etc. The category assigned to each word is called as a tag. A set of tags, each indicating a grammatical category is called, "tagsets". POS tagging is a mandatory pre-processing for most of the Natural Language Processing Applications such as, Information Extraction, Information Retreival systems and Summary generation systems. A POS Tagger is a language-dependent software as the grammar rules will differ for every language. For instance, a word ending with "ing" might indicate a "Verb" in English but this will not be applicable for other languages. 
-    #
-    #
-    ## Languages covered:
-    #
-    #| Languages          | ISO Code |
-    #|--------------------|----------|
-    #| Chinese            | zh       |
-    #| Dutch              | nl       |
-    #| English            | en       |
-    #| German             | de       |
-    #| Italian            | it       |
-    #| Lithuanian         | lt       |
-    #| Polish             | pl       |
-    #| Romanian           | ro       |
-    #| Tamil              | ta       |
-    # 
-    #
+    #  # Parts of Speech Tagger : Defintion and it's usage
+    #  Parts of Speech Tagger, which is shortly known as POS Tagger is a software that automatically finds the word classes, when a text input is given. The text input can be a word, a sentence or a set of sentences. The word classes are the grammatical categories such as, Noun, Verb, Adverb etc. The category assigned to each word is called as a tag. A set of tags, each indicating a grammatical category is called, "tagsets". POS tagging is a mandatory pre-processing for most of the Natural Language Processing Applications such as, Information Extraction, Information Retreival systems and Summary generation systems. A POS Tagger is a language-dependent software as the grammar rules will differ for every language. For instance, a word ending with "ing" might indicate a "Verb" in English but this will not be applicable for other languages. 
+    #
+    #
+    ## Languages covered:
+    #
+    #| Languages          | ISO Code |
+    #|--------------------|----------|
+    #| Chinese            | zh       |
+    #| Dutch              | nl       |
+    #| English            | en       |
+    #| German             | de       |
+    #| Italian            | it       |
+    #| Lithuanian         | lt       |
+    #| Polish             | pl       |
+    #| Romanian           | ro       |
+    #| Tamil              | ta       |
+    # 
+    #
     #
     def test_get_postag(self):
         # Parameters for the API call
@@ -239,10 +239,10 @@ def test_get_postag(self):
         
         # Test whether the captured response is as we expected
         self.assertIsNotNone(result)
-        expected_body = APIHelper.json_deserialize('[{"orginalText":"Let","postag":"VERB"},{"orginalText":"us","postag'
-            '":"PRON"},{"orginalText":"begin","postag":"VERB"},{"orginalText":"'
-            'the","postag":"DET"},{"orginalText":"API","postag":"PROPN"},{"orgi'
-            'nalText":"development","postag":"NOUN"},{"orginalText":".","postag'
+        expected_body = APIHelper.json_deserialize('[{"originalText":"Let","postag":"VERB"},{"originalText":"us","postag'
+            '":"PRON"},{"originalText":"begin","postag":"VERB"},{"originalText":"'
+            'the","postag":"DET"},{"originalText":"API","postag":"PROPN"},{"orgi'
+            'nalText":"development","postag":"NOUN"},{"originalText":".","postag'
             '":"PUNCT"}]')
         received_body = APIHelper.json_deserialize(self.response_catcher.response.text)
         self.assertTrue(TestHelper.match_body(expected_body, received_body))

From 342063e090d379ba41b1dafad1caf7d474399477 Mon Sep 17 00:00:00 2001
From: Subalalitha <subalalitha@firstlanguage.in>
Date: Fri, 11 Mar 2022 17:58:36 +0530
Subject: [PATCH 32/34] Morph changes

---
 dist/firstlanguage_python-2.3.tar.gz          | Bin 0 -> 41905 bytes
 doc/models/orignal-string.md                  |   4 ++--
 doc/models/responsemorph.md                   |   4 ++--
 example_Stemmer.py                            |  18 ++++++++----------
 firstlanguage_python.egg-info/SOURCES.txt     |   2 +-
 firstlanguage_python/models/__init__.py       |  12 ++++++------
 .../__pycache__/__init__.cpython-39.pyc       | Bin 937 -> 938 bytes
 .../__pycache__/responselemma.cpython-39.pyc  | Bin 2251 -> 2254 bytes
 .../__pycache__/responsemorph.cpython-39.pyc  | Bin 2251 -> 2132 bytes
 .../__pycache__/responsepo.cpython-39.pyc     | Bin 2222 -> 2225 bytes
 .../__pycache__/responsestem.cpython-39.pyc   | Bin 2232 -> 2235 bytes
 firstlanguage_python/models/orignal_string.py |   6 +++---
 firstlanguage_python/models/responsemorph.py  |  16 ++++++++--------
 .../schemas/orignal_string.json               |   4 ++--
 .../schemas/responsemorph.json                |   4 ++--
 setup.py                                      |   4 ++--
 16 files changed, 36 insertions(+), 38 deletions(-)
 create mode 100644 dist/firstlanguage_python-2.3.tar.gz

diff --git a/dist/firstlanguage_python-2.3.tar.gz b/dist/firstlanguage_python-2.3.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..c6ce679ec569f11b9c4fe9d02c7f7e50b85abc69
GIT binary patch
diff --git a/doc/models/orignal-string.md b/doc/models/orignal-string.md
index 5e27a8d..f41ecdb 100644
--- a/doc/models/orignal-string.md
+++ b/doc/models/orignal-string.md
@@ -1,9 +1,9 @@
 
-# Orignal String
+# original String
 
 ## Structure
 
-`OrignalString`
+`originalString`
 
 ## Fields
 
diff --git a/doc/models/responsemorph.md b/doc/models/responsemorph.md
index 7ce0056..d9d58dc 100644
--- a/doc/models/responsemorph.md
+++ b/doc/models/responsemorph.md
@@ -9,13 +9,13 @@
 
 | Name | Type | Tags | Description |
 |  --- | --- | --- | --- |
-| `orignal_string` | [`OrignalString`](../../doc/models/orignal-string.md) | Optional | - |
+| `original_string` | [`originalString`](../../doc/models/original-string.md) | Optional | - |
 
 ## Example (as JSON)
 
 ```json
 {
-  "orignalString": null
+  "originalString": null
 }
 ```
 
diff --git a/example_Stemmer.py b/example_Stemmer.py
index dc45963..bb6cae4 100644
--- a/example_Stemmer.py
+++ b/example_Stemmer.py
@@ -7,28 +7,26 @@
     apikey='63af276e-34fe-4fd5-a474-0c69847f25e1',
     environment=Environment.PRODUCTION,)
 
-reqbody='{"input":{"text":"அவள் வேகமாக ஓடினாள்","lang":"ta"} }'
+reqbody='{"input":{"text":"i am selva","lang":"en"} }'
 
 body = jsonpickle.decode(reqbody)
 basic_api_controller = client.basic_api
 
 advanced_api_controller = client.advanced_api
 
-result = basic_api_controller.get_stemmer(body)
+result = basic_api_controller.get_morph(body)
 
-for res in result:
-  print("Original Text passed: "+res.original_text)
-  print("Stemmed result: "+res.stem)
+print(result.original_string)
 
-'{"input":{"lang":"ja","url": "https://drive.google.com/uc?id=1JFV4lyT1Ajn_6jfmf5CXxw5bzQ0ra1V5", "contentType":"pdf","preserveFormat":"true"}}'
+#'{"input":{"lang":"ja","url": "https://drive.google.com/uc?id=1JFV4lyT1Ajn_6jfmf5CXxw5bzQ0ra1V5", "contentType":"pdf","preserveFormat":"true"}}'
 #reqbody='{"input":{"text":"Welcome to Google and FirstLanguage","lang":"en"} }'
-reqbody='{"input":{"lang":"ja","url": "https://drive.google.com/uc?id=1JFV4lyT1Ajn_6jfmf5CXxw5bzQ0ra1V5", "contentType":"pdf","preserveFormat":"false"} }'
+#reqbody='{"input":{"lang":"ja","url": "https://drive.google.com/uc?id=1JFV4lyT1Ajn_6jfmf5CXxw5bzQ0ra1V5", "contentType":"pdf","preserveFormat":"false"} }'
 #reqbody='{"input":{"lang":"ja","url": "http://www.dhs.state.il.us/OneNetLibrary/27897/documents/Initiatives/IITAA/Sample-Document.docx", "contentType":"docx","preserveFormat":"true"} }'
-body = jsonpickle.decode(reqbody)
+#body = jsonpickle.decode(reqbody)
 
 
-result = advanced_api_controller.get_translate(body)
-print(result)
+#result = advanced_api_controller.get_translate(body)
+#print(result)
 # if(body['input']['contentType'] == 'docx'):
 #   #store the binary value returned to a file  
 #   with open('output.docx', 'wb') as f:
diff --git a/firstlanguage_python.egg-info/SOURCES.txt b/firstlanguage_python.egg-info/SOURCES.txt
index bcf5cfb..a63ab1f 100644
--- a/firstlanguage_python.egg-info/SOURCES.txt
+++ b/firstlanguage_python.egg-info/SOURCES.txt
@@ -74,7 +74,7 @@ firstlanguage_python/models/input_6.py
 firstlanguage_python/models/input_7.py
 firstlanguage_python/models/input_8.py
 firstlanguage_python/models/input_9.py
-firstlanguage_python/models/orignal_string.py
+firstlanguage_python/models/original_string.py
 firstlanguage_python/models/responseclassify.py
 firstlanguage_python/models/responselemma.py
 firstlanguage_python/models/responsemorph.py
diff --git a/firstlanguage_python/models/__init__.py b/firstlanguage_python/models/__init__.py
index 5d52411..1972efc 100644
--- a/firstlanguage_python/models/__init__.py
+++ b/firstlanguage_python/models/__init__.py
@@ -1,4 +1,4 @@
-__all__ = [
+__all__ = [
     'responseclassify',
     'responsemorph',
     'text_input',
@@ -6,8 +6,8 @@
     'text_input_tamil',
     'url_input',
     'url_input_classify',
-    'api_imagecaption_request',
-    'api_imagecaption_response',
+    'api_imagecaption_request',
+    'api_imagecaption_response',
     'api_ner_request',
     'api_ner_request_1',
     'api_ner_response',
@@ -42,9 +42,9 @@
     'input_13',
     'input_14',
     'input_15',
-    'input_16',
-    'orignal_string',
+    'input_16',
+    'original_string',
     'responselemma',
     'responsepo',
-    'responsestem',
+    'responsestem',
 ]
diff --git a/firstlanguage_python/models/__pycache__/__init__.cpython-39.pyc b/firstlanguage_python/models/__pycache__/__init__.cpython-39.pyc
index a7f1fa602b4b0847f2fd23fda83495762a688ae7..fac9031f4ae8b39fdc0d13519346b7b48a9f9b18 100644
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/responselemma.cpython-39.pyc b/firstlanguage_python/models/__pycache__/responselemma.cpython-39.pyc
index a6168b8a001ef25c4dbd439c781c3b30de32af6f..623d1c05af25d04710ad9d1c1b87afc48154f20d 100644
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/responsemorph.cpython-39.pyc b/firstlanguage_python/models/__pycache__/responsemorph.cpython-39.pyc
index b6b8dd8801095664ebde65be862e48da4e570155..2e57201b1219a949e71959f7eb7ae843a491f92a 100644
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/responsepo.cpython-39.pyc b/firstlanguage_python/models/__pycache__/responsepo.cpython-39.pyc
index 3ec392cd3c2fa2293b89382065b47ae0c49718b5..3dc112b7e5762d187e34a1844ff84b9b5381e370 100644
GIT binary patch
diff --git a/firstlanguage_python/models/__pycache__/responsestem.cpython-39.pyc b/firstlanguage_python/models/__pycache__/responsestem.cpython-39.pyc
index 6e574c184dadbc8979a3e7e72c585339dddfea86..b50527e0559ef523a7e890a39b2b2095856d05b9 100644
GIT binary patch
diff --git a/firstlanguage_python/models/orignal_string.py b/firstlanguage_python/models/orignal_string.py
index bd1a319..da6a6fd 100644
--- a/firstlanguage_python/models/orignal_string.py
+++ b/firstlanguage_python/models/orignal_string.py
@@ -12,9 +12,9 @@
 from firstlanguage_python.api_helper import APIHelper
 
 
-class OrignalString(object):
+class originalString(object):
 
-    """Implementation of the 'OrignalString' model.
+    """Implementation of the 'originalString' model.
 
     TODO: type model description here.
 
@@ -30,7 +30,7 @@ class OrignalString(object):
 
     def __init__(self,
                  morph_attr=None):
-        """Constructor for the OrignalString class"""
+        """Constructor for the originalString class"""
 
         # Initialize members of the class
         self.morph_attr = morph_attr
diff --git a/firstlanguage_python/models/responsemorph.py b/firstlanguage_python/models/responsemorph.py
index 8abae43..fa8b462 100644
--- a/firstlanguage_python/models/responsemorph.py
+++ b/firstlanguage_python/models/responsemorph.py
@@ -6,7 +6,6 @@
 This file was automatically generated by APIMATIC v3.0 (
  https://www.apimatic.io ).
 """
-from firstlanguage_python.models.orignal_string import OrignalString
 import os
 from firstlanguage_python.utilities.schema_validator_wrapper import SchemaValidatorWrapper
 from jsonschema import ValidationError
@@ -20,21 +19,21 @@ class Responsemorph(object):
     TODO: type model description here.
 
     Attributes:
-        orignal_string (OrignalString): TODO: type description here.
+        original_string (originalString): TODO: type description here.
 
     """
 
     # Create a mapping from Model property names to API property names
     _names = {
-        "orignal_string": 'orignalString'
+        "original_string": 'originalString'
     }
 
     def __init__(self,
-                 orignal_string=None):
+                 original_string=None):
         """Constructor for the Responsemorph class"""
 
         # Initialize members of the class
-        self.orignal_string = orignal_string
+        self.original_string = original_string
 
     @classmethod
     def from_dictionary(cls,
@@ -50,14 +49,15 @@ def from_dictionary(cls,
             object: An instance of this structure class.
 
         """
+        
         if dictionary is None:
             return None
 
         # Extract variables from the dictionary
-        orignal_string = OrignalString.from_dictionary(dictionary.get('orignalString')) if dictionary.get('orignalString') else None
-
+        original_string = dictionary
+        
         # Return an object of this model
-        return cls(orignal_string)
+        return cls(original_string)
 
     @classmethod
     def validate(cls, val):
diff --git a/firstlanguage_python/schemas/orignal_string.json b/firstlanguage_python/schemas/orignal_string.json
index bd281be..52621f4 100644
--- a/firstlanguage_python/schemas/orignal_string.json
+++ b/firstlanguage_python/schemas/orignal_string.json
@@ -1,6 +1,6 @@
 {
-  "id": "OrignalString",
-  "title": "OrignalString",
+  "id": "originalString",
+  "title": "originalString",
   "type": "object",
   "properties": {
     "morph_attr": {
diff --git a/firstlanguage_python/schemas/responsemorph.json b/firstlanguage_python/schemas/responsemorph.json
index 97bb7fe..a8eff43 100644
--- a/firstlanguage_python/schemas/responsemorph.json
+++ b/firstlanguage_python/schemas/responsemorph.json
@@ -6,8 +6,8 @@
   },
   "type": "object",
   "properties": {
-    "orignalString": {
-      "$ref": "OrignalString.json"
+    "originalString": {
+      "$ref": "originalString.json"
     }
   }
 }
diff --git a/setup.py b/setup.py
index ea580ea..9ce9de7 100644
--- a/setup.py
+++ b/setup.py
@@ -12,14 +12,14 @@
 
 setup(
     name='firstlanguage_python',
-    version='2.3',
+    version='2.4',
     description='Python client library for FirstLanguage API',
     long_description=long_description,
     long_description_content_type="text/markdown",
     author='FirstLanguage',
     author_email='info@firstlanguage.in',
     url='https://www.firstlanguage.in/contactus',
-    download_url = 'https://github.com/FirstLanguage/firstlanguage_python/archive/refs/tags/v2.3.tar.gz',
+    download_url = 'https://github.com/FirstLanguage/firstlanguage_python/archive/refs/tags/v2.4.tar.gz',
     keywords = ['FirstLanguage API', 'NLP', 'SDK', 'Python', 'Natural Language Processing'],  
     packages=find_packages(),
     install_requires=[

From 4dba46ef282b7da381d6d73e52a07d3eaeba598b Mon Sep 17 00:00:00 2001
From: Subalalitha <subalalitha@firstlanguage.in>
Date: Sun, 13 Mar 2022 18:43:04 +0530
Subject: [PATCH 33/34] Examples

---
 dist/firstlanguage_python-2.4.tar.gz          | Bin 0 -> 41900 bytes
 example_Stemmer.py                            |  44 -------------
 examples/Advanced/example_Classify.py         |  41 ++++++++++++
 examples/Advanced/example_ImageCaption.py     |  25 +++++++
 examples/Advanced/example_NER.py              |  46 +++++++++++++
 examples/Advanced/example_QA.py               |  45 +++++++++++++
 examples/Advanced/example_Summary.py          |  47 ++++++++++++++
 examples/Advanced/example_TableQA.py          |  44 +++++++++++++
 examples/Advanced/example_Translation.py      |  47 ++++++++++++++
 examples/Basic/example_Lemma.py               |  44 +++++++++++++
 examples/Basic/example_Morph.py               |  61 ++++++++++++++++++
 examples/Basic/example_POSTag.py              |  43 ++++++++++++
 examples/Basic/example_Stemmer.py             |  44 +++++++++++++
 examples/example_Stemmer.py                   |  29 ---------
 firstlanguage_python.egg-info/PKG-INFO        |   4 +-
 firstlanguage_python.egg-info/SOURCES.txt     |   2 +-
 .../advanced_api_controller.cpython-39.pyc    | Bin 24048 -> 24066 bytes
 .../controllers/advanced_api_controller.py    |   2 +-
 .../models/api_translate_response.py          |   2 +
 setup.py                                      |   4 +-
 20 files changed, 495 insertions(+), 79 deletions(-)
 create mode 100644 dist/firstlanguage_python-2.4.tar.gz
 delete mode 100644 example_Stemmer.py
 create mode 100644 examples/Advanced/example_Classify.py
 create mode 100644 examples/Advanced/example_ImageCaption.py
 create mode 100644 examples/Advanced/example_NER.py
 create mode 100644 examples/Advanced/example_QA.py
 create mode 100644 examples/Advanced/example_Summary.py
 create mode 100644 examples/Advanced/example_TableQA.py
 create mode 100644 examples/Advanced/example_Translation.py
 create mode 100644 examples/Basic/example_Lemma.py
 create mode 100644 examples/Basic/example_Morph.py
 create mode 100644 examples/Basic/example_POSTag.py
 create mode 100644 examples/Basic/example_Stemmer.py
 delete mode 100644 examples/example_Stemmer.py

diff --git a/dist/firstlanguage_python-2.4.tar.gz b/dist/firstlanguage_python-2.4.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..2fd58703f3df92d07522f08cedcf1feb002e40c9
GIT binary patch
diff --git a/example_Stemmer.py b/example_Stemmer.py
deleted file mode 100644
index bb6cae4..0000000
--- a/example_Stemmer.py
+++ /dev/null
@@ -1,44 +0,0 @@
-from firstlanguage_python.firstlanguage_client import Client
-from firstlanguage_python.configuration import Environment
-import jsonpickle
-import pickle
-
-client = Client(
-    apikey='63af276e-34fe-4fd5-a474-0c69847f25e1',
-    environment=Environment.PRODUCTION,)
-
-reqbody='{"input":{"text":"i am selva","lang":"en"} }'
-
-body = jsonpickle.decode(reqbody)
-basic_api_controller = client.basic_api
-
-advanced_api_controller = client.advanced_api
-
-result = basic_api_controller.get_morph(body)
-
-print(result.original_string)
-
-#'{"input":{"lang":"ja","url": "https://drive.google.com/uc?id=1JFV4lyT1Ajn_6jfmf5CXxw5bzQ0ra1V5", "contentType":"pdf","preserveFormat":"true"}}'
-#reqbody='{"input":{"text":"Welcome to Google and FirstLanguage","lang":"en"} }'
-#reqbody='{"input":{"lang":"ja","url": "https://drive.google.com/uc?id=1JFV4lyT1Ajn_6jfmf5CXxw5bzQ0ra1V5", "contentType":"pdf","preserveFormat":"false"} }'
-#reqbody='{"input":{"lang":"ja","url": "http://www.dhs.state.il.us/OneNetLibrary/27897/documents/Initiatives/IITAA/Sample-Document.docx", "contentType":"docx","preserveFormat":"true"} }'
-#body = jsonpickle.decode(reqbody)
-
-
-#result = advanced_api_controller.get_translate(body)
-#print(result)
-# if(body['input']['contentType'] == 'docx'):
-#   #store the binary value returned to a file  
-#   with open('output.docx', 'wb') as f:
-#     f.write(result.text)
-#   f.close()
-# if(body['input']['contentType'] == 'pdf'):
-#   #store the binary value returned to a file  
-#   with open('output.pdf', 'wb') as f:
-#     f.write(result.text)
-#   f.close()
-
-
-
-
-
diff --git a/examples/Advanced/example_Classify.py b/examples/Advanced/example_Classify.py
new file mode 100644
index 0000000..54a23c9
--- /dev/null
+++ b/examples/Advanced/example_Classify.py
@@ -0,0 +1,41 @@
+from firstlanguage_python.firstlanguage_client import Client
+from firstlanguage_python.configuration import Environment
+import jsonpickle
+
+#Init client with apiKey. Environment will always be set to PRODUCTION for now.
+client = Client(
+    apikey='<Your_API_Key>',
+    environment=Environment.PRODUCTION,)
+
+#Create the input string and prep it to pass it to the API
+reqbody='{"input":{"text":"Smiling makes everyone happy","lang":"en", "labels":["positive","negative"]} }'
+body = jsonpickle.decode(reqbody)
+
+#Initialize the corresponding controller Basic or Advacned
+adv_api_controller = client.advanced_api
+
+#Call the corresponding API
+result = adv_api_controller.get_classification(body)
+
+print("Labels: ",result.labels)
+print("Scores: ",result.scores)
+
+
+#From URL:
+reqbody = '{"input":{"lang":"","url": "", "contentType":""} }'
+body = jsonpickle.decode(reqbody)
+decoded_url = bytes("https://drive.google.com/uc?id=1U8z6TUkuGOfhphEYnTuS6LJe3NWdGzFC", "utf-8").decode("unicode_escape") 
+
+body["input"]["lang"] = "en"
+body["input"]["url"] = decoded_url
+body["input"]["contentType"] = "pdf"
+body["input"]["labels"] = ["positive","negative"]
+
+#Initialize the corresponding controller Basic or Advacned
+adv_api_controller = client.advanced_api
+
+#Call the corresponding API
+result = adv_api_controller.get_classification(body)
+
+print("Labels: ",result.labels)
+print("Scores: ",result.scores)
\ No newline at end of file
diff --git a/examples/Advanced/example_ImageCaption.py b/examples/Advanced/example_ImageCaption.py
new file mode 100644
index 0000000..0a3194a
--- /dev/null
+++ b/examples/Advanced/example_ImageCaption.py
@@ -0,0 +1,25 @@
+from firstlanguage_python.firstlanguage_client import Client
+from firstlanguage_python.configuration import Environment
+import jsonpickle
+
+#Init client with apiKey. Environment will always be set to PRODUCTION for now.
+client = Client(
+    apikey='<Your_API_Key>',
+    environment=Environment.PRODUCTION,)
+
+#From URL:
+reqbody = '{"input":{"url": ""} }'
+body = jsonpickle.decode(reqbody)
+decoded_url = bytes("https://i.redd.it/v1fvin01ynv51.jpg", "utf-8").decode("unicode_escape") 
+
+
+body["input"]["url"] = decoded_url
+
+
+#Initialize the corresponding controller Basic or Advacned
+adv_api_controller = client.advanced_api
+
+#Call the corresponding API
+result = adv_api_controller.get_image_caption(body)
+
+print("Caption: ",result.generated_caption)
diff --git a/examples/Advanced/example_NER.py b/examples/Advanced/example_NER.py
new file mode 100644
index 0000000..0ffb832
--- /dev/null
+++ b/examples/Advanced/example_NER.py
@@ -0,0 +1,46 @@
+from firstlanguage_python.firstlanguage_client import Client
+from firstlanguage_python.configuration import Environment
+import jsonpickle
+
+#Init client with apiKey. Environment will always be set to PRODUCTION for now.
+client = Client(
+    apikey='<Your_API_Key>',
+    environment=Environment.PRODUCTION,)
+
+#Create the input string and prep it to pass it to the API
+reqbody='{"input":{"text":"FirstLanguage is a NLP company","lang":"en"} }'
+body = jsonpickle.decode(reqbody)
+
+#Initialize the corresponding controller Basic or Advacned
+adv_api_controller = client.advanced_api
+
+#Call the corresponding API
+res = adv_api_controller.get_ner(body)
+
+for result in res:
+    print("Word: ",result.word)
+    print("Start index: ",result.start)
+    print("End index: ",result.end)
+    print("Entity Group: ",result.entity_group)
+
+#From URL:
+reqbody = '{"input":{"lang":"","url": "", "contentType":""} }'
+body = jsonpickle.decode(reqbody)
+decoded_url = bytes("https://drive.google.com/uc?id=1U8z6TUkuGOfhphEYnTuS6LJe3NWdGzFC", "utf-8").decode("unicode_escape") 
+
+body["input"]["lang"] = "en"
+body["input"]["url"] = decoded_url
+body["input"]["contentType"] = "pdf"
+
+
+#Initialize the corresponding controller Basic or Advacned
+adv_api_controller = client.advanced_api
+
+#Call the corresponding API
+res = adv_api_controller.get_ner(body)
+
+for result in res:
+    print("Word: ",result.word)
+    print("Start index: ",result.start)
+    print("End index: ",result.end)
+    print("Entity Group: ",result.entity_group)
\ No newline at end of file
diff --git a/examples/Advanced/example_QA.py b/examples/Advanced/example_QA.py
new file mode 100644
index 0000000..1b283a2
--- /dev/null
+++ b/examples/Advanced/example_QA.py
@@ -0,0 +1,45 @@
+from firstlanguage_python.firstlanguage_client import Client
+from firstlanguage_python.configuration import Environment
+import jsonpickle
+
+#Init client with apiKey. Environment will always be set to PRODUCTION for now.
+client = Client(
+    apikey='<Your_API_Key>',
+    environment=Environment.PRODUCTION,)
+
+#Create the input string and prep it to pass it to the API
+reqbody='{"input":{"context":"உப்பு, புளி, மிளகாய் மூன்றும் எப்போதும் ஒன்றாகவே இருக்கும். ஒருநாள், “குழம்பிற்கு யார் முக்கியம்? நீயா! நானா!” என்று சண்டை போட்டன. மூன்று பேரும் தனிதனியாகச் சென்று குழம்பில் சேரலாம் என்று முடிவு செய்தன. முதல் நாள், உப்பு மட்டும் குழம்பில் சேர்ந்து கொண்டது. “ஆ! ஒரே உப்பு! வாயில் வைக்க முடியவில்லை!” என்று எல்லோரும் கத்தினார்கள்","lang":"ta","question": "எவை மூன்றும் எப்போதும் ஒன்றாகவே இருக்கும்?"} }'
+body = jsonpickle.decode(reqbody)
+
+#Initialize the corresponding controller Basic or Advacned
+adv_api_controller = client.advanced_api
+
+#Call the corresponding API
+result = adv_api_controller.get_qa(body)
+
+print("Score: ",result.score)
+print("Start index of the answer in the context: ",result.start)
+print("End index of the answer in the context: ",result.end)
+print("Answer: ",result.answer)
+
+
+#From URL:
+reqbody = '{"input":{"lang":"","url": "", "contentType":""} }'
+body = jsonpickle.decode(reqbody)
+decoded_url = bytes("https://docs.google.com/document/d/1p8ER__mGPlu59zCrqH1PxNNao92qBsq-/export?format=docx", "utf-8").decode("unicode_escape") 
+
+body["input"]["lang"] = "en"
+body["input"]["url"] = decoded_url
+body["input"]["contentType"] = "docx"
+body["input"]["question"] = ["What is FirstLanguage's motto?"]
+
+#Initialize the corresponding controller Basic or Advacned
+adv_api_controller = client.advanced_api
+
+#Call the corresponding API
+result = adv_api_controller.get_qa(body)
+
+print("Score: ",result.score)
+print("Start index of the answer in the context: ",result.start)
+print("End index of the answer in the context: ",result.end)
+print("Answer: ",result.answer)
\ No newline at end of file
diff --git a/examples/Advanced/example_Summary.py b/examples/Advanced/example_Summary.py
new file mode 100644
index 0000000..50f637e
--- /dev/null
+++ b/examples/Advanced/example_Summary.py
@@ -0,0 +1,47 @@
+from firstlanguage_python.firstlanguage_client import Client
+from firstlanguage_python.configuration import Environment
+import jsonpickle
+
+# Init client with apiKey. Environment will always be set to PRODUCTION for now.
+client = Client(
+    apikey='<Your_API_Key>',
+    environment=Environment.PRODUCTION,)
+
+# Create the input string and prep it to pass it to the API
+reqbody = '{"input":{"text":"We at FirstLanguage Technologies build state-of-the-art NLP APIsolutions for your\
+     business at lowest price in the market. FirstLanguageTechnologies was founded in the year 2021 with a mission\
+          to spread NLP technology across the world. NLP for the masses is our motto. We provide API services which\
+               are simple to use, easy to integrate and can be understood very easily by anyone.\
+                    FirstLanguage provides basics APIssuch as, stemmer, POS Tagger, Morphological Analyzer.\
+                         and Lemmatizer. The advanced APIs provided by FirstLanguage are,Question Answering,\
+                              Table Question Answering, Summarization and Machine Translation. \
+                              All these APIs are built using state-of-the art deeplearning models fine tuned by us \
+                                  and works for 100 plus languages.","lang":"en"} }'
+body = jsonpickle.decode(reqbody)
+
+# Initialize the corresponding controller Basic or Advacned
+adv_api_controller = client.advanced_api
+
+# Call the corresponding API
+res = adv_api_controller.get_summary(body)
+
+print(res.summary)
+
+# From URL:
+reqbody = '{"input":{"lang":"","url": "", "contentType":""} }'
+body = jsonpickle.decode(reqbody)
+decoded_url = bytes("https://docs.google.com/document/d/1p8ER__mGPlu59zCrqH1PxNNao92qBsq-/export?format=docx",
+                    "utf-8").decode("unicode_escape")
+
+body["input"]["lang"] = "en"
+body["input"]["url"] = decoded_url
+body["input"]["contentType"] = "docx"
+
+
+# Initialize the corresponding controller Basic or Advacned
+adv_api_controller = client.advanced_api
+
+# Call the corresponding API
+res = adv_api_controller.get_summary(body)
+
+print(res.summary)
diff --git a/examples/Advanced/example_TableQA.py b/examples/Advanced/example_TableQA.py
new file mode 100644
index 0000000..f6ed6c6
--- /dev/null
+++ b/examples/Advanced/example_TableQA.py
@@ -0,0 +1,44 @@
+from firstlanguage_python.firstlanguage_client import Client
+from firstlanguage_python.configuration import Environment
+import jsonpickle
+
+#Init client with apiKey. Environment will always be set to PRODUCTION for now.
+client = Client(
+    apikey='<Your_API_Key>',
+    environment=Environment.PRODUCTION,)
+
+#Create the input string and prep it to pass it to the API
+reqbody='{"input":{"flattable":{"Cities":["Paris, France","London, England","Lyon, France"],"Inhabitants":["2.161","8.982","0.513"]},"sendBackRows":false,"questions":["How many inhabitants in France","How Many inhabitants in England"]} }'
+body = jsonpickle.decode(reqbody)
+
+#Initialize the corresponding controller Basic or Advacned
+adv_api_controller = client.advanced_api
+
+#Call the corresponding API
+result = adv_api_controller.get_table_qa(body)
+
+for item in result:
+    print("Query: ",item.query)
+    print("Answers: ",item.answer)
+   
+
+
+
+#From URL:
+reqbody = '{"input":{"questions":"","url": "","sendBackRows":"false"} }'
+body = jsonpickle.decode(reqbody)
+decoded_url = bytes("https://drive.google.com/uc?id=1IpBFNs4FlRRbDzL_XPtmGHou_Rvc5Mvq", "utf-8").decode("unicode_escape") 
+
+
+body["input"]["url"] = decoded_url
+body["input"]["questions"] = ["How many inhabitants in France"]
+
+#Initialize the corresponding controller Basic or Advacned
+adv_api_controller = client.advanced_api
+
+#Call the corresponding API
+result = adv_api_controller.get_table_qa(body)
+
+for item in result:
+    print("Query: ",item.query)
+    print("Answers: ",item.answer)
diff --git a/examples/Advanced/example_Translation.py b/examples/Advanced/example_Translation.py
new file mode 100644
index 0000000..cf795ff
--- /dev/null
+++ b/examples/Advanced/example_Translation.py
@@ -0,0 +1,47 @@
+from firstlanguage_python.firstlanguage_client import Client
+from firstlanguage_python.configuration import Environment
+import jsonpickle
+import base64
+import io
+
+# Init client with apiKey. Environment will always be set to PRODUCTION for now.
+client = Client(
+    apikey='<Your_API_Key>',
+    environment=Environment.PRODUCTION,)
+
+# Create the input string and prep it to pass it to the API
+reqbody = '{"input":{"text":"Today is a good day","lang":"ta"} }'
+
+body = jsonpickle.decode(reqbody)
+
+# Initialize the corresponding controller Basic or Advacned
+adv_api_controller = client.advanced_api
+
+# Call the corresponding API
+res = adv_api_controller.get_translate(body)
+
+print(res.generated_text)
+
+# From URL:
+#Prepare input
+reqbody='{"input":{"lang":"ja","url": "https://drive.google.com/uc?id=1U8z6TUkuGOfhphEYnTuS6LJe3NWdGzFC", "contentType":"pdf","preserveFormat":"true"} }'
+body = jsonpickle.decode(reqbody)
+
+# Initialize the corresponding controller Basic or Advacned
+advanced_api_controller = client.advanced_api
+
+
+# Call the corresponding API
+result = advanced_api_controller.get_translate(body)
+
+if(body['input']['contentType'] == 'docx'):
+     with open('output.docx', 'w') as f:
+          f.write(result.text)
+     f.close()
+     
+if(body['input']['contentType'] == 'pdf'):
+     with open('output.pdf', 'wb') as f:
+          f.write(result.text)
+     f.close()
+print("File saved to disk")
+
diff --git a/examples/Basic/example_Lemma.py b/examples/Basic/example_Lemma.py
new file mode 100644
index 0000000..c25ae7b
--- /dev/null
+++ b/examples/Basic/example_Lemma.py
@@ -0,0 +1,44 @@
+from firstlanguage_python.firstlanguage_client import Client
+from firstlanguage_python.configuration import Environment
+import jsonpickle
+
+#Init client with apiKey. Environment will always be set to PRODUCTION for now.
+client = Client(
+    apikey='<Your_API_Key>',
+    environment=Environment.PRODUCTION,)
+
+#Create the input string and prep it to pass it to the API
+reqbody='{"input":{"text":"Smiling makes everyone happy","lang":"en"} }'
+body = jsonpickle.decode(reqbody)
+
+#Initialize the corresponding controller Basic or Advacned
+basic_api_controller = client.basic_api
+
+#Call the corresponding API
+result = basic_api_controller.get_lemma(body)
+
+#Parse the result
+for res in result:
+  print("Original Text passed: "+res.original_text)
+  print("Lemmatized result: "+res.lemmatized)
+
+
+#From URL:
+reqbody = '{"input":{"lang":"","url": "", "contentType":""} }'
+body = jsonpickle.decode(reqbody)
+decoded_url = bytes("https://drive.google.com/uc?id=1U8z6TUkuGOfhphEYnTuS6LJe3NWdGzFC", "utf-8").decode("unicode_escape") 
+
+body["input"]["lang"] = "en"
+body["input"]["url"] = decoded_url
+body["input"]["contentType"] = "pdf"
+
+#Initialize the corresponding controller Basic or Advacned
+basic_api_controller = client.basic_api
+
+#Call the corresponding API
+result = basic_api_controller.get_lemma(body)
+
+#Parse the result
+for res in result:
+  print("Original Text passed: "+res.original_text)
+  print("Lemmatized result: "+res.lemmatized)
\ No newline at end of file
diff --git a/examples/Basic/example_Morph.py b/examples/Basic/example_Morph.py
new file mode 100644
index 0000000..0a10633
--- /dev/null
+++ b/examples/Basic/example_Morph.py
@@ -0,0 +1,61 @@
+from firstlanguage_python.firstlanguage_client import Client
+from firstlanguage_python.configuration import Environment
+import jsonpickle
+
+#Init client with apiKey. Environment will always be set to PRODUCTION for now.
+client = Client(
+    apikey='<Your_API_Key>',
+    environment=Environment.PRODUCTION,)
+
+#Create the input string and prep it to pass it to the API
+reqbody='{"input":{"text":"Smiling makes everyone happy","lang":"en"} }'
+body = jsonpickle.decode(reqbody)
+
+#Initialize the corresponding controller Basic or Advacned
+basic_api_controller = client.basic_api
+
+#Call the corresponding API
+result = basic_api_controller.get_morph(body)
+morph = result.original_string
+#Parse the result
+print(morph)
+morphDict = {"originalText": [], "morphFeatures": []}
+for key in morph:  
+        morphDict["originalText"].append(str(key))
+        value=""
+        for items in morph[key]:
+            if value != "":
+                value += "|"
+            value += str(items)+"="+str(morph[key][items][0])        
+        morphDict["morphFeatures"].append(value)     
+
+print(morphDict)
+
+#From URL:
+reqbody = '{"input":{"lang":"","url": "", "contentType":""} }'
+body = jsonpickle.decode(reqbody)
+decoded_url = bytes("https://drive.google.com/uc?id=1U8z6TUkuGOfhphEYnTuS6LJe3NWdGzFC", "utf-8").decode("unicode_escape") 
+
+body["input"]["lang"] = "en"
+body["input"]["url"] = decoded_url
+body["input"]["contentType"] = "pdf"
+
+#Initialize the corresponding controller Basic or Advacned
+basic_api_controller = client.basic_api
+
+#Call the corresponding API
+result = basic_api_controller.get_morph(body)
+morph = result.original_string
+#Parse the result
+print(morph)
+morphDict = {"originalText": [], "morphFeatures": []}
+for key in morph:  
+        morphDict["originalText"].append(str(key))
+        value=""
+        for items in morph[key]:
+            if value != "":
+                value += "|"
+            value += str(items)+"="+str(morph[key][items][0])        
+        morphDict["morphFeatures"].append(value)     
+
+print(morphDict)
diff --git a/examples/Basic/example_POSTag.py b/examples/Basic/example_POSTag.py
new file mode 100644
index 0000000..5448ab8
--- /dev/null
+++ b/examples/Basic/example_POSTag.py
@@ -0,0 +1,43 @@
+from firstlanguage_python.firstlanguage_client import Client
+from firstlanguage_python.configuration import Environment
+import jsonpickle
+
+#Init client with apiKey. Environment will always be set to PRODUCTION for now.
+client = Client(
+    apikey='<Your_API_Key>',
+    environment=Environment.PRODUCTION,)
+
+#Create the input string and prep it to pass it to the API
+reqbody='{"input":{"text":"FirstLanguage is a NLP Company","lang":"en"} }'
+body = jsonpickle.decode(reqbody)
+
+#Initialize the corresponding controller Basic or Advacned
+basic_api_controller = client.basic_api
+
+#Call the corresponding API
+result = basic_api_controller.get_postag(body)
+
+#Parse the result
+for res in result:
+  print("Original Text passed: "+res.original_text)
+  print("POSTag: "+res.postag)
+
+#From URL:
+reqbody = '{"input":{"lang":"","url": "", "contentType":""} }'
+body = jsonpickle.decode(reqbody)
+decoded_url = bytes("https://drive.google.com/uc?id=1U8z6TUkuGOfhphEYnTuS6LJe3NWdGzFC", "utf-8").decode("unicode_escape") 
+
+body["input"]["lang"] = "en"
+body["input"]["url"] = decoded_url
+body["input"]["contentType"] = "pdf"
+
+#Initialize the corresponding controller Basic or Advacned
+basic_api_controller = client.basic_api
+
+#Call the corresponding API
+result = basic_api_controller.get_postag(body)
+
+#Parse the result
+for res in result:
+  print("Original Text passed: "+res.original_text)
+  print("POSTag: "+res.postag)
\ No newline at end of file
diff --git a/examples/Basic/example_Stemmer.py b/examples/Basic/example_Stemmer.py
new file mode 100644
index 0000000..2f73743
--- /dev/null
+++ b/examples/Basic/example_Stemmer.py
@@ -0,0 +1,44 @@
+from firstlanguage_python.firstlanguage_client import Client
+from firstlanguage_python.configuration import Environment
+import jsonpickle
+
+#Init client with apiKey. Environment will always be set to PRODUCTION for now.
+client = Client(
+    apikey='<Your_API_Key>',
+    environment=Environment.PRODUCTION,)
+
+#Create the input string and prep it to pass it to the API
+reqbody='{"input":{"text":"அவள் வேகமாக ஓடினாள்","lang":"ta"} }'
+body = jsonpickle.decode(reqbody)
+
+#Initialize the corresponding controller Basic or Advacned
+basic_api_controller = client.basic_api
+
+#Call the corresponding API
+result = basic_api_controller.get_stemmer(body)
+
+#Parse the result
+for res in result:
+  print("Original Text passed: "+res.original_text)
+  print("Stemmed result: "+res.stem)
+
+
+#From URL:
+reqbody = '{"input":{"lang":"","url": "", "contentType":""} }'
+body = jsonpickle.decode(reqbody)
+decoded_url = bytes("https://drive.google.com/uc?id=1U8z6TUkuGOfhphEYnTuS6LJe3NWdGzFC", "utf-8").decode("unicode_escape") 
+
+body["input"]["lang"] = "en"
+body["input"]["url"] = decoded_url
+body["input"]["contentType"] = "pdf"
+
+#Initialize the corresponding controller Basic or Advacned
+basic_api_controller = client.basic_api
+
+#Call the corresponding API
+result = basic_api_controller.get_stemmer(body)
+
+#Parse the result
+for res in result:
+  print("Original Text passed: "+res.original_text)
+  print("Stemmed result: "+res.stem)
\ No newline at end of file
diff --git a/examples/example_Stemmer.py b/examples/example_Stemmer.py
deleted file mode 100644
index 00c8801..0000000
--- a/examples/example_Stemmer.py
+++ /dev/null
@@ -1,29 +0,0 @@
-from firstlanguage_python.firstlanguage_client import Client
-from firstlanguage_python.configuration import Environment
-import jsonpickle
-
-
-client = Client(
-    apikey='63af276e-34fe-4fd5-a474-0c69847f25e1',
-    environment=Environment.PRODUCTION,)
-
-reqbody='{"input":{"text":"அவள் வேகமாக ஓடினாள்","lang":"ta"} }'
-
-body = jsonpickle.decode(reqbody)
-basic_api_controller = client.basic_api
-
-advanced_api_controller = client.advanced_api
-
-result = basic_api_controller.get_stemmer(body)
-
-for res in result:
-  print("Original Text passed: "+res.original_text)
-  print("Stemmed result: "+res.stem)
-
-reqbody='{"input":{"text":"Welcome to Google and FirstLanguage","lang":"ta"} }'
-
-body = jsonpickle.decode(reqbody)
-
-result = advanced_api_controller.get_translate(body)
-
-print(result)
diff --git a/firstlanguage_python.egg-info/PKG-INFO b/firstlanguage_python.egg-info/PKG-INFO
index f6d5f61..cbe3f45 100644
--- a/firstlanguage_python.egg-info/PKG-INFO
+++ b/firstlanguage_python.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 2.1
 Name: firstlanguage-python
-Version: 2.3
+Version: 2.4
 Summary: Python client library for FirstLanguage API
 Home-page: https://www.firstlanguage.in/contactus
 Author: FirstLanguage
 Author-email: info@firstlanguage.in
 License: UNKNOWN
-Download-URL: https://github.com/FirstLanguage/firstlanguage_python/archive/refs/tags/v2.3.tar.gz
+Download-URL: https://github.com/FirstLanguage/firstlanguage_python/archive/refs/tags/v2.4.tar.gz
 Description: 
         # Getting Started with FirstLanguage API
         
diff --git a/firstlanguage_python.egg-info/SOURCES.txt b/firstlanguage_python.egg-info/SOURCES.txt
index a63ab1f..bcf5cfb 100644
--- a/firstlanguage_python.egg-info/SOURCES.txt
+++ b/firstlanguage_python.egg-info/SOURCES.txt
@@ -74,7 +74,7 @@ firstlanguage_python/models/input_6.py
 firstlanguage_python/models/input_7.py
 firstlanguage_python/models/input_8.py
 firstlanguage_python/models/input_9.py
-firstlanguage_python/models/original_string.py
+firstlanguage_python/models/orignal_string.py
 firstlanguage_python/models/responseclassify.py
 firstlanguage_python/models/responselemma.py
 firstlanguage_python/models/responsemorph.py
diff --git a/firstlanguage_python/controllers/__pycache__/advanced_api_controller.cpython-39.pyc b/firstlanguage_python/controllers/__pycache__/advanced_api_controller.cpython-39.pyc
index d71053627c7b64591b5ce29ed7cc9272a6136e92..8548e5f17ad80af79887a4540feac3b128c175b3 100644
GIT binary patch
diff --git a/firstlanguage_python/controllers/advanced_api_controller.py b/firstlanguage_python/controllers/advanced_api_controller.py
index 6bd8b20..cd4268c 100644
--- a/firstlanguage_python/controllers/advanced_api_controller.py
+++ b/firstlanguage_python/controllers/advanced_api_controller.py
@@ -629,7 +629,7 @@ def get_translate(self,
         _request = self.config.http_client.post(_query_url, headers=_headers, parameters=APIHelper.json_serialize(body))
         # Apply authentication scheme on request
         self.apply_auth_schemes(_request, 'global')
-        if body['input']['preserveFormat'] == 'true' and (body['input']['contentType'] == 'pdf' or body['input']['contentType'] == 'docx'):
+        if 'preserveFormat' in body["input"].keys() and body['input']['preserveFormat'] == 'true' and (body['input']['contentType'] == 'pdf' or body['input']['contentType'] == 'docx'):
             response = self.execute_request(_request, True)            
         else:
             _response = self.execute_request(_request)
diff --git a/firstlanguage_python/models/api_translate_response.py b/firstlanguage_python/models/api_translate_response.py
index 8a561ef..7882a63 100644
--- a/firstlanguage_python/models/api_translate_response.py
+++ b/firstlanguage_python/models/api_translate_response.py
@@ -49,6 +49,8 @@ def from_dictionary(cls,
             object: An instance of this structure class.
 
         """
+
+
         if dictionary is None:
             return None
 
diff --git a/setup.py b/setup.py
index 9ce9de7..4433789 100644
--- a/setup.py
+++ b/setup.py
@@ -12,14 +12,14 @@
 
 setup(
     name='firstlanguage_python',
-    version='2.4',
+    version='2.5',
     description='Python client library for FirstLanguage API',
     long_description=long_description,
     long_description_content_type="text/markdown",
     author='FirstLanguage',
     author_email='info@firstlanguage.in',
     url='https://www.firstlanguage.in/contactus',
-    download_url = 'https://github.com/FirstLanguage/firstlanguage_python/archive/refs/tags/v2.4.tar.gz',
+    download_url = 'https://github.com/FirstLanguage/firstlanguage_python/archive/refs/tags/v2.5.tar.gz',
     keywords = ['FirstLanguage API', 'NLP', 'SDK', 'Python', 'Natural Language Processing'],  
     packages=find_packages(),
     install_requires=[

From 1db77bbf41a78159451abb91e4e0cf3fd519ec54 Mon Sep 17 00:00:00 2001
From: Subalalitha <subalalitha@firstlanguage.in>
Date: Sat, 2 Apr 2022 16:05:05 +0530
Subject: [PATCH 34/34] Remove enum34

---
 setup.py | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/setup.py b/setup.py
index 4433789..407958e 100644
--- a/setup.py
+++ b/setup.py
@@ -12,7 +12,7 @@
 
 setup(
     name='firstlanguage_python',
-    version='2.5',
+    version='2.5.1',
     description='Python client library for FirstLanguage API',
     long_description=long_description,
     long_description_content_type="text/markdown",
@@ -27,7 +27,6 @@
         'requests~=2.25',
         'cachecontrol~=0.12.6',
         'python-dateutil~=2.8.1',
-        'enum34~=1.1, >=1.1.10',
         'jsonschema~=3.2.0'
     ],
     tests_require=[
