How to start the implementation of NPNT


It means that initially i should go with the api docker build and postman.
There is no readme file available for the api docker. Or i just build the docker rest will automatically setup.


The purpose of Management Server is two-fold:

  1. Registering the drone on Digital Sky
  2. Keeping a record of drone registrations and UINs

The idea is that the manufacturer should register the drone on behalf of the buyer (much like the car showroom owner does ROC registration with RTO on behalf of the buyer). Therefore, each manufacturer needs to operate a management server either by themselves or through a third-party. This process involves sending an API request to the POST /droneDevice/register endpoint. The request should be signed using the manufacturer’s certificate through a DSC Token (same as the one used to digitally sign IT returns etc.) or HSM.

My company provides hosted management server. Let me know if you think that will help you.


Try running the docker image after you built it. while building docker image tag an image name and then run this docker image with that name. That might be enough to run api on our local machine


Hi Nihal,

Thank you for your comments and replies.

I’m new to this NPNT forum. There are two compliance level mentioned in Guidance manual ( Level 0 and Level 1 ). Level 0 compliance doesn’t required to generate Keys in RFM, It can generated in Software level ( GCS ) right. Please correct me if I’m wrong.


Software refers to the code that runs on the RFM. Level 1 is when there is dedicated hardware with a TEE(Trusted execution Environment) that performs these functions. Not the GCS. Having Key generation done in the GCS is not allowed.


Okay understood, Thanks for this clarification.



I’ve been trying to run this digital-sky-api on my local machine and have encountered multiple issues:

  1. Mysql connection error
  2. Mongodb connection issue

i solved the first two issues, but i’m not able to grasp the 3rd one. I’ve posted the error stack at the issues section of their Github Repository. Please look into it, and help me setup the local server.

@nihal @Vardhan


Or, if possible, please list out the steps i’ll need to follow to be able to properly run this repository on my local machine.


i was able to somehow start the Tomcat server. But everytime i make any API request, i get the following error:
“timestamp”: 1567038797080,
“status”: 401,
“error”: “Unauthorized”,
“message”: “Sorry, You’re not authorized to access this resource.”,
“path”: “/”

Mainly, “status”: 401,
“error”: “Unauthorized”,
“message”: “Sorry, You’re not authorized to access this resource.”,

I’m totally new to Spring boot. Please help me start the server, So i can start the further developement.

@nihal @Vardhan @abhiroop.bhatnagar @sid @satyam_amu


can you tell us the URI and method you are pointing to. Because digital sky api’s services need an authenticated token (of course not all but many). There are few services like (HttpMethod.GET,"/api/airspaceCategory/list") which don’t need ant token for query.

Hope this will be of any help as I am a newbie myself with just days experience.


Hi @Vardhan,
Thanks for responding!

I was trying to use this API: localhost:9000/api/applicationForm/flyDronePermissionApplication

How do i fetch the jwt token?
FYI, I haven’t followed this intruction: 3. Copy JWT certificate to /home/<user>/certs folder
(It was shared in the digital sky deployment repository )

Please help me solve this issue.
@nihal @Vardhan @abhiroop.bhatnagar @sid @satyam_amu


According to the docs, for login, the data should be formatted as :
{ "username": "[email protected]", "password": "abcd1234" }
But, this doesn’t seem to work.
Try this, instead:
{ "email": "[email protected]", "password": "something" }

That is, change the username to email.
Kindly, comment if i am missing something.


The data format for API : /api/pilot, as suggested in this docs seems wrong, Because i get the error: 415 Unsupported Media Type error.

Also, i looked up the code for addPilot here:

	@RequestMapping(method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> addPilot(
@RequestParam(value = "trainingCertificateDocument", required = false) MultipartFile trainingCertificateDocument,
@RequestParam(value = "pilotPayload") String pilotPayload
) {
try {

Pilot pilot = objectMapper.readValue(pilotPayload, Pilot.class);



UserPrincipal userPrincipal = UserPrincipal.securityContext();

Pilot savedPilotInstance = pilotService.createNewPilot(pilot);
return new ResponseEntity<>(savedPilotInstance, HttpStatus.CREATED);
} catch (PilotProfileAlreadyExist e) {
return new ResponseEntity<>(new Errors(e.getMessage()), HttpStatus.CONFLICT);

} catch (IOException e) {
return new ResponseEntity<>(new Errors("Bad Request"), HttpStatus.BAD_REQUEST);

And, as you can see, this API expects two values trainingCertificateDocument and pilotPayload both of which are not present in the example data format for this particular API.

Kindly, comment if i am missing something.


hi @Sasitharan_A,
what i infer from your communication with nihal is that we have to generate the key pair in the hardware of drone. We can’t do it on desktop application.
Am i correct?


As per Section 3.1 in Chapter 7 of Revision 1.1 of the RPAS Guidance Manual,

3.1 Generation of Keys

  1. Key pair is generated at RFM level or generated elsewhere and transported to
  2. If keypair is not generated at RFM, it should be generated within a zone that
    has the same security requirements as RFM and has to be transported to the
    RFM on a communication channel secured using or equivalent of 128bit
    symmetric key (minimum).
  3. If key rotation is required, the generated key may be signed using previous key
    pair and sent for updation to DigitalSky.

Therefore, it is ok to generate key pair on a desktop application as long as it is securely generated and transported to the RFM.


Here we have to upload training certificate as multipart data of post request. the key valuet port multipart is “trainingCertificateDocument”. in postman you can select post request - body > form-data > “trainingCertificateDocument”(key), value select certificate file


@sidbh & @nihal

I want to make my own NPNT drone and I want guidance where to start with from codings to complete programming setup. I’m only familiar with C & C++ and I just started learning Python. If there is any other programming needed then please guide me how to start and where to get study reference.



Hi @Vardhan @sid
I’m getting a error as “ADD failed: stat /var/lib/docker/tmp/docker-builder002631322/target/digitalsky-api-1.0.0.jar: no such file or directory”
Kindly help me to sort out this,
Thanks in advance


Hello everyone !!! In the DGCA Guidance Manual Section 3.2 Registration of Flight Module its mentioned that

Procure a digital certificate from a valid CA and get it signed by DGCA. The public key in the certificate would be the flight module provider key and it would be used to sign the Drone ID and flight module public key.

Can anybody tell me what does signing by DGCA means ? and the most important question how will I get dgca public key?


I’ve been a task as a part of my M.Tech Project to “Implement NPNT if one is using Ardupilot”. I’ve found Ardupilot open source code and NPNT source code by iSPIRT on github, but since I’m new to github I don’t know how to approach to this problem. I need to know how I can implement NPNT for Ardupilot. Any help or guidance will be very helpful. Thank you