[STEEM BOUNTY] European Commission EFTG Project – Developing Investor's Portal API With Elastic Search

View this thread on: d.buzz | hive.blog | peakd.com | ecency.com
·@utopian.tasks·
0.000 HBD
[STEEM BOUNTY] European Commission EFTG Project – Developing Investor's Portal API With Elastic Search
### Utopian for European Commission (EC):
Utopian.io is running this task request on behalf of the EC Blockchain Competence Center (BLKCC).

<center>
![](https://i.imgur.com/23CtL0N.png)
</center>

### GitHub Repository:
https://github.com/scr53005/eftg-steem

### Project Background:
The EFTG Project's background and scope are described here:
[European Financial Transparency Gateway (EFTG) EC Initiative](https://github.com/scr53005/eftg-steem/wiki/Introduction-to-European-Financial-Transparency-Gateway-(ETFG)-Project)

### Estimated Task Complexity: 
Medium

### Task Specifications:
Develop the API needed for the Investor's Portal. 

The [existing front end](http://pulsar.dev.blkcc.xyz:8081/#/search.html) will utilize the API to connect to the project’s [Elastic Search database](https://steemit.com/utopian-io/@utopian.tasks/steem-bounty-european-commission-eftg-project-integrating-elasticsearch-on-a-private-steem-blockchain).

<center>
![](https://i.imgur.com/ARJ7s7K.png)
<sub>Figure 1: Search Form Design</sub>
</center>

**Deliverables**
* Three API endpoints
    * Issuer name endpoint
    * Legal entity identifiers endpoint
    * Search endpoint
* Documentation on how to deploy and test

**Requirements:**
* Use NodeJS for developing the API
* Develop API methods as POST
* Send query parameters in JSON format in the body of the HTTP Request
* Provide API response in JSON format 

<center>
![](https://i.imgur.com/XhuAFrs.png)
<sub>Figure 2: Investor's Portal</sub>
</center>

## API Endpoints
**Issuer name endpoint**
The Issuer name endpoint will return the list of Issuer names needed for the autocomplete of the multiselect Issuer name field
1. The endpoint should be:  /issuer_names.json
2. Searchable field: issuer name with query string parameter name as issuer_name
3. Additional parameters:
	* Page
		Data type: number
		Parameter name: page
		Default value: Set to 1 if no value passed
	* Page size
		Data type: number
		Parameter name: page_size
		Default value: Set to 10 if no value passed
	* Order by
		Data type: string
		Parameter name: order_by
		Allowed value: issuer_name
4. Response format:
The structure of the response should match below example
https://cdn.blkcc.xyz/issuer_names.json

**Legal entity identifiers endpoint**
The Legal entity identifiers endpoint will return the list of Legal entity identifiers needed for the autocomplete of the multiselect Legal entity identifier field
1. The endpoint should be: /identifiers.json
2. Searchable fields:
    * Legal entity identifier value
			Data type: string
			Parameter name: identifier_value
    * Legal entity identifier id
			Data type: number
			Parameter name: identifier_id
			If there is no value passed, match on all types of identifiers
3. Additional parameters:
	* Page
		Data type: number
		Parameter name: page
		Default value: Set to 1 if no value passed
	* Page size
		Data type: number
		Parameter name: page_size
		Default value: Set to 10 if no value passed
	* Order by
		Data type: string
		Parameter name: order_by
		Allowed value: identifier_value
4. Response format:
The structure of the response should match below example
https://cdn.blkcc.xyz/identifiers.json 

<center>
![](https://i.imgur.com/BdqfvPa.png)
<sub>Figure 3: Search Results Design</sub>
</center>

**Search endpoint**
The search endpoint will return the search result submitted through the investor’s interface
1. The endpoint should be: /search.json
2. Searchable fields:
	* Issuer name
			Data type: array of issuer IDs with data type number
			Parameter name: issuer_name
	* Company Country
			Data type: array of country codes with data type string
			Parameter name: home_member_state
	* Disclosure date from
			Data type: UTC timestamp 
			Parameter name: disclosure_date_from
	* Disclosure date to
			Data type: UTC timestamp 
			Parameter name: disclosure_date_to
	* Legal entity identifier
			Data type: array of strings
			Parameter name: identifier_value	
	* Document class and subclass
			Data type: array of subclass IDs with data type number
			Parameter name: subclass
	* Financial year
			Data type: array of years with data type number
			Parameter name: financial_year
	* Title
			Data type: string
			Parameter name: title
3. Additional parameters:
	* Page
		Data type: number
		Parameter name: page
		Default value: Set to 1 if no value passed
	* Page size
		Data type: number
		Parameter name: page_size
		Default value: Set to 10 if no value passed
	* Order by
		Data type: string
		Parameter name: order_by
		Allowed values: (maximum of one field only)
        - home_member_state
	    - disclosure_date
	    - document_language

4. Response format:
The structure of the response should match the example here:
https://cdn.blkcc.xyz/search.json 
5. Timestamp UTC/GMT format
Each API response contains a timestamp with the date and time in Universal Time Coordinated/Greenwich Mean Time (UTC/GMT), sometimes referred to as "Zulu time."

    Here's a breakdown of the components of an example timestamp (dateTime_in_UTC/GMT = 2015-08-09T21:51:26Z):
    2015 -Year
    08 - Month
    09 - Day
    T - Time
    21 - Hour
    51 - Minute
    26 - Second
    Z - Zulu Time

### Deadline:
Three (3) weeks, set to start once the candidate selection is made.

### How to Register Interest and Gather Further Information:
Please contact us on https://discord.gg/pV5hgDA

### Rewards Information:
Rewards generated by this task request will be sent as liquid STEEM to the task solver once the task is completed, as decided by the Project owner. 

The task will be considered complete after it has been tested and accepted on our private STEEM blockchain (https://explorer.blkcc.xyz/#/) and when the solvers publish a Utopian post, explaining what they did in order to solve the task.
👍 , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,