Accessing NPD content via web services

The current version of the NPD offers both REST and SOAP web service access methods.


The REST access method operates via the URLs that point to the data content of search results. Therefore, if you search for a protein, for example, ATRX and view the results, you will see a collection of tables. This result set will be referenced at the URL ../user/1NP00017, which shows that you are using the user interface and are viewing Gene 1NP00017. You can view just one table of results for that gene by appending the result table name to the URL, for example ../user/1NP00017/names will show just the names information about the gene ATRX.

Different content types are available by appending .csv or .xml to the URL. Also, the REST content can be accessed via a dedicated REST URL, which will default to XML output. For example, the URL for 1NP00017 could be entered either as ../user/1NP00017.xml, or you could use the rest URL directly, such as ../rest/1NP00017.

It is also possible to retrieve the details about a gene using the gene name instead of the Gene ID, but this will only work if you enter a correct and unique gene name. So the above example would work using ../user/atrx or ../rest/atrx.

Using these REST URLs it is possible to query the database directly from within a script or other sort of software tool, just by referencing the valid URL.


A SOAP WSDL is also available for use with software platforms that can utilise them. The current WSDL is available at ../soap/npd.wsdl. Simply use this URL in your preferred software solution, and you will have access to all the functionality that has been implemented in the WSDL to date:

geneID(string GeneName) - output string GeneID

e.g. provide gene name ATRX, receive output 1NP00017

search(string GeneName) - output array GeneIDs

e.g. provide gene name ATRX, receive output 1NP00017 but provide partial gene name PRP receive 33 partial match GeneID outputs (1NP00001, etc)

SQLquery(string SQLquery) - output array results

e.g. provide:
select GeneName,RecordID from mytsummeta where GeneID like '1NP00017'
and receive an array of the values in the select field, so in this case receive ATRX and the record ID

queryBuilder(array(select,table,field,value)) - return array results

builds a query for you e.g. provide :
select - GeneName,RecordID
table - mytsummeta
field - GeneID
value - 1NP00017

builds the query:
SELECT select FROM table WHERE field LIKE value

and returns result array - only tested on really simple query so far such as select GeneName, table mytsummeta, field GeneID, value 1NP00017

links(string GeneID) - output array links

e.g. provide GeneID 1NP00017, receive an array of all the internet links attached to that gene - so links to papers in PubMed, Entrez Protein details, and so on.

schema(string database) - output the database schema

provide database name as as input, get schema back (though there is only one NPD database available at present)

Unfortunately the output of this function is presently just a string representation of an XML schema, so the tags are not properly printed.

tables(string database) - output list of available tables in the given database

provide database name as input, get table list back (though there is only one NPD database available at present)

fields(string table) - output fields on a given table

provide a table name, such as mytsummeta, and receive a list of the fields in that table

rest(string geneID,string subsection) - return the subsection of information about that gene

Reflects the functionality implemented by the REST access method. Giving a gene ID and a subsection, as defined in the REST functionality, returns the details in that subsection about that protein.

e.g. provide 1NP00017 and Keywords, and the output will be the list of available keywords