Cards
Petabencana report cards for disaster events. Note: authentication is required to make updates to cards.
Request Format
URL Parameter | Description | Format | Required |
---|---|---|---|
cardId | Unique identifier of the card we wish to work with, this is generated by the system when the initial card is created (required) | String (7 to 14 characters) | Yes |
Attribute | Description | Format | Required |
---|---|---|---|
card_data | User data collected in card interface | JSON | Yes |
text | Description of the disaster event | String | No |
image_id | Identifier of the associated card image | String | No |
created_at | Date and time the card was created | Date (ISO 8601) | Yes |
location | Geographic location of the disaster event | Lat/Lng in ESPG:4326 | Yes |
Note on card_data
Card data requires the object report_type
to exist. Where disaster_type
is set to 'flood' then the object flood_depth
should also exist adjacent to report_type
. Where the disaster_type
is 'prep' then report_type
should be one of the types as specified in server config.js.
For example a card with flood data including flood_depth:
"disaster_type": "flood",
"card_data":{
"report_type": "flood",
"flood_depth": 50
}
Or, a card with pre-flood data report regarding a drain.
"disaster_type": "prep",
"card_data":{
"report_type":"drain"
}
GET /cards/:cardId
Retrieve details of a card:
Here is a simple call to GET a card:
curl -X GET -H "X-Api-Key: API_KEY_GOES_HERE" "https://data.petabencana.id/cards/abcdefg"
The card was found:
{
"statusCode": 200,
"result": {
"pkey": "2",
"card_id": "abcdefg",
"username": "user",
"network": "test",
"language": "en",
"received": true,
"report_id": "1"
}
}
The card does not exist:
{
"statusCode": 404,
"found": false,
"result": null
}
PUT /cards/:cardId
Update a card with details a disaster event report:
Here is a simple call to PUT a card:
curl -X PUT -H "X-Api-Key: API_KEY_GOES_HERE" -d '{
"text": "test card",
"disaster_type": "flood"
"card_data":
{
"report_type": "flood",
"flood_depth": 101
},
"created_at":"2016-12-09T11:32:52.011Z",
"location": {
"lat": -6.149531,
"lng": 106.869342
}
}' "https://data.petabencana.id/cards/abcdefg"
Card was successfully created:
{
"statusCode": 200,
"cardId": "abcdefg",
"created": true
}
The card does not exist:
{
"statusCode": 404,
"cardId": "abcdefg",
"message": "No card exists with id 'abcdefg'"
}
The report already exists for the card:
{
"statusCode": 409,
"cardId": "abcdefg",
"message": "Report already received for card 'abcdefg'"
}
GET /cards/:cardId/images
GET a signed S3 URL to upload a card report, this must be done after the card report has been created and only one image can exist for a given card.
NOTE: After an image is submitted a server-side process shrinks the image to a standard size and there may be a small time lag of a few seconds before the image goes "live".
Here is a simple call to GET a new signed S3 URL for image upload:
curl -X GET \
https://api-server-dev.riskmap.in/cards/HJID8CWN-/images
Signed S3 URL successfully generated:
{"signedRequest":"https://riskmap-image-uploads.s3.ap-south-1.amazonaws.com/originals/BJbTHR-Vb.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJFMR3NR7BXZ5X7DA%2F20170629%2Fap-south-1%2Fs3%2Faws4_request&X-Amz-Date=20170629T012002Z&X-Amz-Expires=900&X-Amz-Signature=ad10a53555205fa18ecfa07da52eb0349ed1c8bda66fe2de0fa9c445c61b7c62&X-Amz-SignedHeaders=host","url":"https://s3.ap-south-1.amazonaws.com/riskmap-image-uploads/originals/BJbTHR-Vb.jpg"}