# delta
```json
curl -X GET -H "x-api-key: bXl6eXhlbC1wcm9k" http://vpce-0aaec58bdcc32416e-00ug9fku.vpce-svc-03f6bc335dcab60e5.us-east-1.vpce.amazonaws.com/v1/geoinfo.xml?ip=60.251.144.84
```
# beta
```json
curl -X GET -H "x-api-key: bXl6eXhlbC1wcm9k" http://vpce-01c22702016c5879e-go2xyqc4.vpce-svc-03f6bc335dcab60e5.us-east-1.vpce.amazonaws.com/v1/geoinfo.xml?ip=60.251.144.84
```
delta : vpce-0aaec58bdcc32416e-00ug9fku.vpce-svc-03f6bc335dcab60e5.us-east-1.vpce.amazonaws.com
ebeta : vpce-01c22702016c5879e-go2xyqc4.vpce-svc-03f6bc335dcab60e5.us-east-1.vpce.amazonaws.com
# CA

# US

// x-api-key 為 Beta Site Key: `bX_________==`
---
# Testing GIS API
---
## /v1/geoinfo.json
### ✔ X-API-KEY must exist(cannot be blank)
Request:
```zsh
curl -X GET http://vpce-064cb995259ec8cb7-sqhe2t57.vpce-svc-0b7cb4deb05e4f0e5.us-east-1.vpce.amazonaws.com/v1/geoinfo.json
```
Response:
```zsh
{"message":"Forbidden"}
```
### ✔ IP to query for geo info must exist
Request:
```zsh
curl -X GET -H "x-api-key: bXl6eXhlbC1hbHBoYQ==" http://vpce-064cb995259ec8cb7-sqhe2t57.vpce-svc-0b7cb4deb05e4f0e5.us-east-1.vpce.amazonaws.com/v1/geoinfo.json
```
Response:
```zsh
{"message":"ip can't be blank"}
```
### ✔ IP to query for geo info must be an valid IP format(IPv4 or IPv6)
Request:
```zsh
curl -X GET -H "x-api-key: bXl6eXhlbC1hbHBoYQ==" http://vpce-064cb995259ec8cb7-sqhe2t57.vpce-svc-0b7cb4deb05e4f0e5.us-east-1.vpce.amazonaws.com/v1/geoinfo.json?ip=abc
```
Response:
```zsh
{"message":"invalid ip format"}
```
### ✔ For any valid IP, repsonse payload will be Valid geo info, if successfully lookup in DB
Request:
```zsh
curl -X GET -H "x-api-key: bXl6eXhlbC1hbHBoYQ==" http://vpce-064cb995259ec8cb7-sqhe2t57.vpce-svc-0b7cb4deb05e4f0e5.us-east-1.vpce.amazonaws.com/v1/geoinfo.json?ip=60.251.144.84
```
Response:
```zsh
{
"60.251.144.84": {
"latitude":25.0478,
"longitude":121.5318,
"continent_name":"Asia",
"continent_code":"AS",
"country_name":"Taiwan",
"country_iso_code":"TW",
"city_name":"Taipei",
"time_zone":"Asia/Taipei"
}
}
```
### ✔ For any valid IP, repsonse payload will be Unknown country name & country iso code, if IP not found in DB, or any unknown error during lookup in DB
Request:
```zsh
curl -X GET -H "x-api-key: bXl6eXhlbC1hbHBoYQ==" http://vpce-064cb995259ec8cb7-sqhe2t57.vpce-svc-0b7cb4deb05e4f0e5.us-east-1.vpce.amazonaws.com/v1/geoinfo.json?ip=fec0::205:1453:eb8:94ac:de30
```
Response:
```zsh
{
"fec0::205:1453:eb8:94ac:de30": {
"country_name":"UNKNOWN",
"country_iso_code":"ZZ"
}
}
```
### ✔ Scenario: valid IP(v4, private), e.g. 192.168.1.1
Request:
```zsh
curl -X GET -H "x-api-key: bXl6eXhlbC1hbHBoYQ==" http://vpce-064cb995259ec8cb7-sqhe2t57.vpce-svc-0b7cb4deb05e4f0e5.us-east-1.vpce.amazonaws.com/v1/geoinfo.json?ip=192.168.1.1
```
Response:
```zsh
{
"192.168.1.1": {
"country_name":"UNKNOWN",
"country_iso_code":"ZZ"
}
}
```
---
## /v1/geoinfo.xml
### ✔ X-Api-Key must exist(cannot be blank)
Request:
```zsh
curl -X GET http://vpce-064cb995259ec8cb7-sqhe2t57.vpce-svc-0b7cb4deb05e4f0e5.us-east-1.vpce.amazonaws.com/v1/geoinfo.xml
```
Response:
```zsh
<?xml version="1.0" encoding="UTF-8"?>
<service name="geoip">
<entry name="result">
<error>1</error>
<msg>Forbidden</msg>
</entry>
</service>
```
### ✔ X-Api-Key must be valid(in white list APIKeys)
Request:
```zsh
curl -X GET -H "x-api-key: SOME_INVALID_KEY" http://vpce-064cb995259ec8cb7-sqhe2t57.vpce-svc-0b7cb4deb05e4f0e5.us-east-1.vpce.amazonaws.com/v1/geoinfo.xml
```
Response:
```zsh
<?xml version="1.0" encoding="UTF-8"?>
<service name="geoip">
<entry name="result">
<error>1</error>
<msg>Forbidden</msg>
</entry>
</service>
```
### ✔ IP to query for geo info must exist
Request:
```zsh
curl -X GET -H "x-api-key: bXl6eXhlbC1hbHBoYQ==" http://vpce-064cb995259ec8cb7-sqhe2t57.vpce-svc-0b7cb4deb05e4f0e5.us-east-1.vpce.amazonaws.com/v1/geoinfo.xml
```
Response:
```zsh
<?xml version="1.0" encoding="UTF-8"?>
<service name="geoip">
<entry name="result">
<error>1</error>
<msg>ip can't be blank</msg>
</entry>
</service>
```
### ✔ IP to query for geo info must be an valid IP format(IPV4 or IPv6)
Request:
```zsh
curl -X GET -H "x-api-key: bXl6eXhlbC1hbHBoYQ==" http://vpce-064cb995259ec8cb7-sqhe2t57.vpce-svc-0b7cb4deb05e4f0e5.us-east-1.vpce.amazonaws.com/v1/geoinfo.xml?ip=abc
```
Response:
```zsh
<?xml version="1.0" encoding="UTF-8"?>
<service name="geoip">
<entry name="result">
<error>1</error>
<msg>ip is invalid</msg>
</entry>
</service>
```
### ✔ For any valid IP, response payload will be Valid geo info, if successfully lookup in DB
Request:
```zsh
curl -X GET -H "x-api-key: bXl6eXhlbC1hbHBoYQ==" http://vpce-064cb995259ec8cb7-sqhe2t57.vpce-svc-0b7cb4deb05e4f0e5.us-east-1.vpce.amazonaws.com/v1/geoinfo.xml?ip=60.251.144.84
```
Response:
```zsh
<?xml version="1.0" encoding="UTF-8"?>
<service name="geoip">
<entry name="result">
<error>0</error>
<msg>ok</msg>
<module name="GEOLOC_ZYXEL_S">
<longitude>121.531800</longitude>
<latitude>25.047800</latitude>
<continent_name>Asia</continent_name>
<continent_code>AS</continent_code>
<country_name>Taiwan</country_name>
<country_code>TW</country_code>
<city_name>Taipei</city_name>
<timezone_loc>Asia/Taipei</timezone_loc>
</module>
</entry>
</service>
```
### ✔ For any Valid IP, response payload will be unknown country name & country iso code, if IP not found in DB, or any unknown error during lookip in DB
Request:
```zsh
curl -X GET -H "x-api-key: bXl6eXhlbC1hbHBoYQ==" http://vpce-064cb995259ec8cb7-sqhe2t57.vpce-svc-0b7cb4deb05e4f0e5.us-east-1.vpce.amazonaws.com/v1/geoinfo.xml?ip=fec0::205:1453:eb8:94ac:de30
```
Response:
```zsh
<?xml version="1.0" encoding="UTF-8"?>
<service name="geoip">
<entry name="result">
<error>0</error>
<msg>ok</msg>
<module name="GEOLOC_ZYXEL_S">
<longitude>0.000000</longitude>
<latitude>0.000000</latitude>
<continent_name>UNKNOWN</continent_name>
<continent_code>ZZ</continent_code>
<country_name></country_name>
<country_code></country_code>
<city_name></city_name>
<timezone_loc></timezone_loc>
</module>
</entry>
</service>
```
### ✔ Scenario: valid(v4, private), e.g.192.168.1.1
Request:
```zsh
curl -X GET -H "x-api-key: bXl6eXhlbC1hbHBoYQ==" http://vpce-064cb995259ec8cb7-sqhe2t57.vpce-svc-0b7cb4deb05e4f0e5.us-east-1.vpce.amazonaws.com/v1/geoinfo.xml?ip=192.168.1.1
```
Response:
```zsh
<?xml version="1.0" encoding="UTF-8"?>
<service name="geoip">
<entry name="result">
<error>0</error>
<msg>ok</msg>
<module name="GEOLOC_ZYXEL_S">
<longitude>0.000000</longitude>
<latitude>0.000000</latitude>
<continent_name></continent_name>
<continent_code></continent_code>
<country_name>UNKNOWN</country_name>
<country_code>ZZ</country_code>
<city_name></city_name>
<timezone_loc></timezone_loc>
</module>
</entry>
</service>
```
## /v1/geoinfos.json
### ✔ X-API-Key must exist(connot be blank)
Request:
```zsh
curl -X POST http://vpce-064cb995259ec8cb7-sqhe2t57.vpce-svc-0b7cb4deb05e4f0e5.us-east-1.vpce.amazonaws.com/v1/geoinfos.json
```
Response:
```zsh
{"message":"Forbidden"}
```
### ✔ X-API-Key must be valid(in white list APIKeys
Request:
```zsh
curl -X POST -H "x-api-key: SOME_INVALID_KEY" http://vpce-064cb995259ec8cb7-sqhe2t57.vpce-svc-0b7cb4deb05e4f0e5.us-east-1.vpce.amazonaws.com/v1/geoinfos.json
```
Response:
```zsh
{"message":"Forbidden"}
```
### ✔ IP to query for geo info must exist