API Integration Manual

RESTful API - Browsing and testing shared services in API catalog

Why Nothi Integration Is Necessary?

Nothi or Electronic Filing System is a single online platform for 19,000 government offices and 150,000 officials to serve the 16 crore people of Bangladesh.

Generally, for the purpose of serving the people, if any kind of change and approval is required in the application coming from them, in that case, the concerned government office sends the application to the document system through their system for approval to its higher office authority.

There are several ways to submit this application, including directly, via email, or via an API (system to system). Nothi system informs the applicant system of the application status after receiving it, and the applicant system will periodically get the most recent status information from Nothi system.


Who can Integrate the API?

Government offices that provide services to citizen or organizations upon their request. They use their own system to provide that service. In some cases, the submitted application process requires the approval of other government departments. In that case they have to submit this application to the document through the system. Such offices need to integrate with their systems to facilitate and speed up their work.


API Integration Overview

The Nothi API is organized around REST. Our API has predictable resource-oriented URLs, accepts form-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.

The API integration documentation describes the REST APIs that are available in Nothi System.



Using REST endpoints

Learn how to submit application, get access token, and more using REST endpoints

  1. Access Token Endpoint
  2. Online Application Submission Endpoint
  3. Online Application Resubmission Endpoint

API Specification

Base URL for merchant APIs:

Stage Server: http://training.nothi.gov.bd

Production Server: https://www.api.nothi.gov.bd


Integration Portal Registration

To get user credentials need to submit a form. And after admin verify you will get an email with credentials. Below information need to provide for registration:

  1. System name.
  2. System IP.
  3. Corresponding email.

Integration Portal (Stage): http://registration-stage.nothi.org/

Integration Portal (Production): https://integration.nothi.gov.bd/

Authentication

All REST API calls need to have authentication token. More precisely, all http requests need to have an additional form data like below:

token: <API KEY>

Access API

Access API

To integrate, we need a username and password connect with e-nothi system, which is provided by e-nothi team. This API uses to get access token from e-nothi, which can use to GET data and POST data to e-nothi. The username is a unique name provided from e-nothi team.

URI {baseurl}/apiAccess
Method POST
Expected Request Content Type application/json
Expected Request Body

{
	"username" : "abcd...",
	"password" : "n#%th#@&..."
}
										
Response Content Type
Status Message Body
success

{
	status": "success",
	token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..."
}
														
error

	{
		"status": "error",
		"msg": "Not a registered access!!! Please register your api access",
		"ip": "127.0.0.1"
	}

													

Request fields

Field name Type Mandatory Details
username String Yes The username is provided by e-nothi and username type is string.
password String Yes The password is provided by e-nothi.

Response fields

Field name Type Details
status String If all data are correct, user get a success. Otherwise, user get an error and error status details in message parameter.
token String If all data are correct, user get a success status and token.
msg String Not a registered access!!! Please register your api access
ip String Need to register your system IP address.

Submit Online Application API

apiOnlineApplication send "Nagorik Dak" to e-nothi system:

URI {baseurl}/apiOnlineApplication
Method POST
Expected Request Content Type application/json
Expected Request Body

{
	"token": "",
	"office_id": 65,
	"user_id": 163,
	"nothi_service_id": 5138,
	"nothi_service_name": "অধ্যায়ন ছুটি (এসআইডি)",
	"data": "HTML DATA HERE",
	"api_client": "",
	"applicant_name": "abdullah al",
	"mobile_no": "0195199999",
	"national_identity_no": "1980123451111",
	"application_subject": "application subject subject-01757698055",
	"receivers": {
		"prapok": 16345
	},
	"potro_receivers": {
		"receiver": [
			{
				"designation_id":0,
				"office":"TSL",
				"office_unit": "RnD",
				"designation": "PM",
				"officer": "Sayeed",
				"officer_email": "jbhasan@gmail.com",
				"officer_mobile": "01757698055"
			},
			{
				"designation_id":16345,
				"office":"",
				"office_unit": "",
				"designation": "",
				"officer": "",
				"officer_email": "",
				"officer_mobile": ""
			}
		],
		"onulipi": [
			{
				"designation_id":0,
				"office":"TSL",
				"office_unit": "RnD",
				"designation": "PM",
				"officer": "Sayeed",
				"officer_email": "jbhasan@gmail.com",
				"officer_mobile": "01757698055"
			},
			{
				"designation_id":16345,
				"office":"",
				"office_unit": "",
				"designation": "",
				"officer": "",
				"officer_email": "",
				"officer_mobile": ""
			}
		],
		"approver": 22160
	},
	"attachments": [
		{
			"name": "attachments subject",
			"url": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"
		}
	],
	"feedback_url": "",
	"decision": {
		"2": {
			"step": "কার্যক্রম চলমান",
			"decision": {
				"3": "প্রাথমিক যাচাই বাছাই সম্পন্ন",
				"4": "ভুল তথ্য দেয়া হয়েছে। সঠিক তথ্যসহ পুনরায় প্রেরণ করুন।",
				"5": "পরবর্তী পদক্ষেপ গ্রহণ করা যেতে পারে।"
			}
		},
		"5": {
			"step": "নিষ্পন্ন",
			"decision": {
				"17": "আবেদন অসম্পূর্ণ/ অপ্রাসঙ্গিক হওয়ায় নথিজাত করা যেতে পারে",
				"18": "আবেদনকারীকে দপ্তরে উপস্থিত হয়ে সেবাটি (পত্র/লাইসেন্স/সার্টিফিকেট ইত্যাদি) গ্রহণ করার জন্য বলা যেতে পারে।",
				"19": "আবেদনকারীকে সেবা প্রদান করা সম্ভব হচ্ছে না মর্মে জানিয়ে দেওয়া যেতে পারে।"
			}
		}
	}
}

                                        
Response Content Type
Status Message Body
success

{
    "data": {
        "current_desk_id": 0,
        "dak_id": 0,
        "dak_received_no": "1100011230116001",
        "note_id": 0,
        "nothi_id": 0,
        "potro_id": 0,
        "requested_data": {
            "api_client": "...",
            "applicant_name": "Name",
            "application_origin": "...",
            "application_subject": "application subject",
            "attachments": [
                {
                    "name": "attachments 1",
                    "url": "https://dummy.pdf"
                }
            ],
            "company_name": "Test",
            "dak_subject": "application from TEST- Nothi Dev Team-28-12-2022 01:33PM",
            "dak_type_id": 2,
            "decision": {
                "1": {
                    "decision": {
                        "1": "সংশোধনের জন্য ফেরত পাঠান",
                        "2": "যাচাই করুন",
                        "3": "যাচাই করা হয়েছে",
                        "4": "সরেজমিনে পরিদর্শন করুন",
                        "5": "পরিদর্শন করা হয়েছে",
                        "6": "অনুমোদন দেয়া হলো",
                        "7": "প্রত্যাখ্যান করা হলো"
                    },
                    "step": "আবেদনের অবস্থা"
                }
            },
            "docketing_no": 1,
            "feedback_api_key": "string",
            "feedback_url": "",
            "mobile_no": "01...",
            "name_bng": "Test Name",
            "national_identity_no": "01011111111",
            "nothi_service_id": 0,
            "nothi_service_name": "Test",
            "office_id": 65,
            "receivers": {
                "prapok": 821
            },
            "sender_name": "Test Name",
            "tracking_id": 0,
            "user_id": 0
        }
    },
    "message": "আবেদন গ্রহণ করা হয়েছে। আপনার গ্রহণ নম্বর হচ্ছে 1100011230116001। ভবিষ্যতে অনুসন্ধানের জন্য রেখে দিন",
    "status": "success"
}

														
error

{
	"status": "error",
	"message": "Reason..."
}

														

Request fields

Field name Type Length Mandatory Details
token String Yes Token acquired from apiAccess API.
nothi_service_id Integer Yes It’s a mandatory field and available from the Nothi service portal. Application nothi_service_id must be unique for each service.
nothi_service_name String Yes Service Name
office_id Integer 10 Yes Application receiving office id.
user_id Integer 15 Yes Unique id of the user.
data String Yes Can be HTML or text. Works as the main body of the application.
api_client String Yes username of apiAccess API.
applicant_name String 250 Yes Name of the applicant.
application_subject String 250 Yes This is the subject of application. Application subject must be unique.
fdesk Integer 10 Yes If there is no predefined receiver, then the Dak goes to the front desk officer of the office. fdesk field contains the office unit organogram id of the frontdesk officer.
You should use a field from the front-desk and the receiver
receivers JSON Yes If there is predefined receiver, then receiver field contains the office unit organogram id of the prapok and onulipi in JSON format. There can be only one prapok. Onulipi can be multiple.
You should use a field from the front-desk and the receiver
potro_receivers JSON No If there is predefined template, and the template has predefined receivers, then the information give here in JSON format. There can be multiple onulipi, and one approver.
tracking_id Integer 250 No Tracking ID for tracking the application.
mobile_no Integer 15 No Mobile number of the applicant.
national_identity_no Integer 20 No NID number of the applicant.
attachments String name: 250 No Each attachment has two part. One part of file name and another part of attachment URL.
feedback_url String No This URL is used to send Nothi Activity information as feedback for the corresponding Dak.
decision JSON No If there is any predefined action/decision for the corresponding Dak, this field contains the data in JSON format.
feedback_api_key String No This key is reference from feedback_url.

Response fields

Field name Type Details
status String If all data are correct, user get a success. Otherwise, user get an error and error status details in message parameter.
data JSON All Requested Data.
sender_name String Application Sender Name.
name_bng String Application Sender Name.
dak_type_id Integer The id of application types. Daptorik application id is: 1 & Nagorik application id is: 2.
docketing_no Integer Docketing no. of the application.
application_origin String username of apiAccess API.
dak_subject String Subject of the application.
message String Confirmation message with dak_received_no no.

Resubmit Online Application API

apiResubmitApplication send "Nagorik Dak" to e-nothi system:

URI {baseurl}/apiResubmitApplication
Method POST
Expected Request Content Type application/json
Expected Request Body

{
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
    "tracking_id": 0,
    "office_id": 65,
    "user_id": 0,
    "data": "text",
    "api_client": "...",
    "applicant_name": "application name",
    "feedback_url": "http:://...",
    "decision": {
        "1": {
            "step": "আবেদনের অবস্থা",
            "decision": {
                "1": "সংশোধনের জন্য ফেরত পাঠান",
                "2": "যাচাই করুন",
                "3": "যাচাই করা হয়েছে",
                "4": "সরেজমিনে পরিদর্শন করুন",
                "5": "পরিদর্শন করা হয়েছে",
                "6": "অনুমোদন দেয়া হলো",
                "7": "প্রত্যাখ্যান করা হলো"
            }
        }
    },
    "nothi_id": 0,
    "note_id": 0,
    "potro_id": 0,
    "decision_note": "text",
    "decision_id": 0,
    "fdesk": 0,
    "receivers": {
        "prapok": 0
    },
    "nothi_service_id": 0,
    "mobile_no": "01...",
    "national_identity_no": "...",
    "attachments": [{
        "name": "attachments 1",
        "url": "https://dummy.pdf"
    }],
    "application_subject": "application subjet",
    "feedback_api_key": "string"
}

											
Response Content Type
Status Message Body
success

{
	"status": "success",
	"data": {
		"dak_received_no": "1100011230116001",
		"dak_id": 0,
		"current_desk_id": 000,
		"nothi_id": 0,
		"note_id": 0,
		"potro_id": 0,
		"requested_data": {
			"tracking_id": 0,
			"office_id": 65,
			"nothi_service_id": 0,
			"user_id": 0,
			"api_client": "...",
			"applicant_name": "Name",
			"mobile_no": "01...",
			"national_identity_no": "01011111111",
			"attachments": [{
				"name": "attachments 1",
				"url": "https://dummy.pdf"
			}],
			"application_subject": "application subject",
			"receivers": {
				"prapok": 821
			},
			"feedback_url": "url",
			"feedback_api_key": "text",
			"decision": {
				"1": {
					"step": "আবেদনের অবস্থা",
					"decision": {
						"1": "সংশোধনের জন্য ফেরত পাঠান",
						"2": "যাচাই করুন",
						"3": "যাচাই করা হয়েছে",
						"4": "সরেজমিনে পরিদর্শন করুন",
						"5": "পরিদর্শন করা হয়েছে",
						"6": "অনুমোদন দেয়া হলো",
						"7": "প্রত্যাখ্যান করা হলো"
					}
				}
			},
			"sender_name": "Test Name",
			"name_bng": "Test Name",
			"dak_type_id": 2,
			"docketing_no": 1,
			"application_origin": "...",
			"dak_subject": "application from TEST- Nothi Dev Team-28-12-2022 01:33PM"
		}
	},
	"message": "আবেদন গ্রহণ করা হয়েছে। আপনার গ্রহণ নম্বর হচ্ছে 1100011230116001। ভবিষ্যতে অনুসন্ধানের জন্য রেখে দিন"
}

															
error

{
	"status": "error",
	"message": "Reason..."
}

															

Request fields

Field name Type Mandatory Details
token String Yes Token acquired from apiAccess API.
nothi_service_id Integer Yes It’s a mandatory field and available from the Nothi service portal. Application nothi_service_id must be unique for each service.
office_id Integer 10 Yes Application receiving office id.
user_id Integer 15 Yes Unique id of the user.
data String Yes Can be HTML or text. Works as the main body of the application.
api_client String Yes username of apiAccess API.
applicant_name String 250 Yes Name of the applicant.
application_subject String 250 Yes This is the subject of application. Application subject must be unique.
fdesk Integer 10 Yes If there is no predefined receiver, then the Dak goes to the front desk officer of the office. fdesk field contains the office unit organogram id of the officer.
receivers JSON Yes If there is predefined receiver, then receiver field contains the office unit organogram id of the prapok and onulipi in JSON format. There can be only one prapok. Onulipi can be multiple.
tracking_id Integer 250 No Tracking ID for tracking the application.
mobile_no Integer 15 No Mobile number of the applicant.
national_identity_no Integer 20 No NID number of the applicant.
attachments String name: 250 No Each attachment has two part. One part of file name and another part of attachment URL.
feedback_url String No This URL is used to send Nothi Activity information as feedback for the corresponding Dak.
feedback_api_key String No This key is reference from feedback_url.
decision JSON No If there is any predefined action/decision for the corresponding Dak, this field contains the data in JSON format.

Response fields

Field name Type Details
status String If all data are correct, user get a success. Otherwise, user get an error and error status details in message parameter.
dak_received_no Integer Application received no.
dak_id Integer Application Id.
current_desk_id Integer Application receiver id.
nothi_id Integer Requested nothi id.
note_id Integer Requested note id.
potro_id Integer Requested potro id.
requested_data JSON All Requested data.
message String Confirmation message with dak_received_no no.

Resubmit Online Application API

apiResubmitApplication send "Nagorik Dak" to nothi system:

URI {baseurl}/api/resubmit-application
Method POST
Expected Request Content Type application/json
Expected Request Body

{
	"token": "{TOKEN}",
	"receipt_no": {dak_received_no},
	"office_id": 65,
	"user_id": 163,
	"nothi_service_id": 5138,
	"nothi_service_name": "অধ্যায়ন ছুটি (এসআইডি)",
	"data": "HTML DATA HERE",
	"api_client": "{USERNAME}",
	"applicant_name": "abdullah al",
	"mobile_no": "0195199999",
	"national_identity_no": "1980123451111",
	"application_subject": "application subject subject-01757698055",
	"receivers": {
		"prapok": 16345
	},
	"potro_receivers": {
		"receiver": [
			{
				"designation_id":0,
				"office":"TSL",
				"office_unit": "RnD",
				"designation": "PM",
				"officer": "Sayeed",
				"officer_email": "jbhasan@gmail.com",
				"officer_mobile": "01757698055"
			},
			{
				"designation_id":16345,
				"office":"",
				"office_unit": "",
				"designation": "",
				"officer": "",
				"officer_email": "",
				"officer_mobile": ""
			}
		],
		"onulipi": [
			{
				"designation_id":0,
				"office":"TSL",
				"office_unit": "RnD",
				"designation": "PM",
				"officer": "Sayeed",
				"officer_email": "jbhasan@gmail.com",
				"officer_mobile": "01757698055"
			},
			{
				"designation_id":16345,
				"office":"",
				"office_unit": "",
				"designation": "",
				"officer": "",
				"officer_email": "",
				"officer_mobile": ""
			}
		],
		"approver": 22160
	},
	"attachments": [
		{
			"name": "attachments subject",
			"url": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"
		}
	],
	"feedback_url": "{FEEDBACK_URL}",
	"decision": {
		"2": {
			"step": "কার্যক্রম চলমান",
			"decision": {
				"3": "প্রাথমিক যাচাই বাছাই সম্পন্ন",
				"4": "ভুল তথ্য দেয়া হয়েছে। সঠিক তথ্যসহ পুনরায় প্রেরণ করুন।",
				"5": "পরবর্তী পদক্ষেপ গ্রহণ করা যেতে পারে।"
			}
		},
		"5": {
			"step": "নিষ্পন্ন",
			"decision": {
				"17": "আবেদন অসম্পূর্ণ/ অপ্রাসঙ্গিক হওয়ায় নথিজাত করা যেতে পারে",
				"18": "আবেদনকারীকে দপ্তরে উপস্থিত হয়ে সেবাটি (পত্র/লাইসেন্স/সার্টিফিকেট ইত্যাদি) গ্রহণ করার জন্য বলা যেতে পারে।",
				"19": "আবেদনকারীকে সেবা প্রদান করা সম্ভব হচ্ছে না মর্মে জানিয়ে দেওয়া যেতে পারে।"
			}
		}
	}
}

											
Response Content Type
Status Message Body
success

{
	"status": "success",
	"data": {
		"dak_received_no": "1100011230116001",
		"dak_id": 0,
		"current_desk_id": 000,
		"nothi_id": 0,
		"note_id": 0,
		"potro_id": 0,
		"requested_data": {
			"tracking_id": 0,
			"office_id": 65,
			"nothi_service_id": 0,
			"user_id": 0,
			"api_client": "...",
			"applicant_name": "Name",
			"mobile_no": "01...",
			"national_identity_no": "01011111111",
			"attachments": [{
				"name": "attachments 1",
				"url": "https://dummy.pdf"
			}],
			"application_subject": "application subject",
			"receivers": {
				"prapok": 821
			},
			"feedback_url": "url",
			"feedback_api_key": "text",
			"decision": {
				"1": {
					"step": "আবেদনের অবস্থা",
					"decision": {
						"1": "সংশোধনের জন্য ফেরত পাঠান",
						"2": "যাচাই করুন",
						"3": "যাচাই করা হয়েছে",
						"4": "সরেজমিনে পরিদর্শন করুন",
						"5": "পরিদর্শন করা হয়েছে",
						"6": "অনুমোদন দেয়া হলো",
						"7": "প্রত্যাখ্যান করা হলো"
					}
				}
			},
			"sender_name": "Test Name",
			"name_bng": "Test Name",
			"dak_type_id": 2,
			"docketing_no": 1,
			"application_origin": "...",
			"dak_subject": "application from TEST- Nothi Dev Team-28-12-2022 01:33PM"
		}
	},
	"message": "আবেদন গ্রহণ করা হয়েছে। আপনার গ্রহণ নম্বর হচ্ছে 1100011230116001। ভবিষ্যতে অনুসন্ধানের জন্য রেখে দিন"
}

															
error

{
	"status": "error",
	"message": "Reason..."
}

															

Request fields

Field name Type Length Mandatory Details
token String Yes Token acquired from apiAccess API.
nothi_service_id Integer Yes It’s a mandatory field and available from the Nothi service portal. Application nothi_service_id must be unique for each service.
nothi_service_name String Yes Service Name
office_id Integer 10 Yes Application receiving office id.
receipt_no Integer 20 Yes Main application dak_received_no
user_id Integer 15 Yes Unique id of the user.
data String Yes Can be HTML or text. Works as the main body of the application.
api_client String Yes username of apiAccess API.
applicant_name String 250 Yes Name of the applicant.
application_subject String 250 Yes This is the subject of application. Application subject must be unique.
fdesk Integer 10 Yes If there is no predefined receiver, then the Dak goes to the front desk officer of the office. fdesk field contains the office unit organogram id of the frontdesk officer.
You should use a field from the front-desk and the receiver
receivers JSON Yes If there is predefined receiver, then receiver field contains the office unit organogram id of the prapok and onulipi in JSON format. There can be only one prapok. Onulipi can be multiple.
You should use a field from the front-desk and the receiver
potro_receivers JSON No If there is predefined template, and the template has predefined receivers, then the information give here in JSON format. There can be multiple onulipi, and one approver.
tracking_id Integer 250 No Tracking ID for tracking the application.
mobile_no Integer 15 No Mobile number of the applicant.
national_identity_no Integer 20 No NID number of the applicant.
attachments String name: 250 No Each attachment has two part. One part of file name and another part of attachment URL.
feedback_url String No This URL is used to send Nothi Activity information as feedback for the corresponding Dak.
decision JSON No If there is any predefined action/decision for the corresponding Dak, this field contains the data in JSON format.
feedback_api_key String No This key is reference from feedback_url.

Response fields

Field name Type Details
status String If all data are correct, user get a success. Otherwise, user get an error and error status details in message parameter.
dak_received_no Integer Application received no.
dak_id Integer Application Id.
current_desk_id Integer Application receiver id.
nothi_id Integer Requested nothi id.
note_id Integer Requested note id.
potro_id Integer Requested potro id.
requested_data JSON All Requested data.
message String Confirmation message with dak_received_no no.