Managing Pokéstops¶
Listing all Pokéstops¶
| Method | GET |
| URL | /api/poi.php |
| Content-Type | application/json |
| Since | v1.1 |
Arguments¶
updatedSince(optional)A UNIX timestamp, or a delta-time difference in seconds.
Examples:
1546300800Lists all Pokéstops that were updated since midnight on Jan 1, 2019.
-120Lists all Pokéstops that were updated in the last two minutes.
Response¶
- ff_version
- The version of the FreeField instance.
- pois
- An array of POI object.
- id_list
- An array of integers representing the IDs of all Pokéstops on the map.
Example¶
Request¶
GET /api/poi.php?updatedSince=1546300800 HTTP/1.0
X-Access-Token: <access_token>
Response¶
HTTP/1.1 200 OK
Content-Type: application/json
{
"ff_version": "1.1-rc.1",
"pois": [
{
"id": 1,
"name": "Central Park",
"latitude": 40.781386328336,
"longitude": -73.967599868774,
"objective": {
"type": "catch_type",
"params": {
"type": [
"electric",
"normal",
"poison"
],
"quantity": 5
}
},
"reward": {
"type": "encounter",
"params": {
"species": [
56,
66
]
}
},
"updated": {
"on": 1553450212,
"by": {
"nick": "bilde2910",
"color": "#008040"
}
}
},
{
"id": 2,
"name": "Statue of Liberty",
"latitude": 40.68925377062,
"longitude": -74.044514894485,
"objective": {
"type": "unknown",
"params": []
},
"reward": {
"type": "unknown",
"params": []
},
"updated": {
"on": 1550957320,
"by": {
"nick": "bilde2910",
"color": "#008040"
}
}
}
],
"id_list": [
1,
2
]
}
Errors¶
- access_denied
- Permission has not been granted to your client, or you are not properly authenticating with the API.
- database_error
- A server-side issue is preventing this request from being fulfilled.
Reporting field research¶
| Method | PATCH |
| URL | /api/poi.php |
| Content-Type | application/json |
| Since | v1.1 |
Arguments¶
- Pokéstop identifier
Must one of the following sets of arguments. The first found identifier is used among those listed below.
- Match by ID
Matches exactly against a single, well-known Pokéstop using its ID.
id- The unique numerical ID of the Pokéstop in FreeField’s database.
- Match by location
Matches against the Pokéstop that is closest to the given location.
latitude- The latitude coordinate of the Pokéstop.
longitude- The longitude coordinate of the Pokéstop.
- Match by name
Attempts to find the best matching name out of all Pokéstops on the map.
name- The name of the Pokéstop.
match_exact(optional, default=false)trueif the name must be matched exactly,falseotherwise.match_case(optional, default=true)trueif the name is case sensitive,falseotherwise.
objective- A Fully-defined objective object or a Best-match objective object.
reward- A Fully-defined reward object or a Best-match reward object.
Response¶
Empty.
Example¶
Request¶
PATCH /api/poi.php HTTP/1.0
X-Access-Token: <access_token>
Content-Type: application/json
{
"name": "Statue of Liberty",
"objective": {
"match": "Make 5 Great Curveball Throws in a row",
"match_algo": 2
},
"reward": {
"match": "3 Potions"
}
}
Response¶
HTTP/1.1 204 No Content
Errors¶
- access_denied
- Permission has not been granted to your client, or you are not properly authenticating with the API.
- database_error
- A server-side issue is preventing this request from being fulfilled.
- invalid_data
- The objective or reward objects you provided are malformed.
- match_mode_not_implemented
- You specified an invalid match_algo for the objective or reward.
- missing_fields
- You’re missing either a Pokéstop identifier, an objective and/or a reward.
- no_poi_candidates
- Your Pokéstop identifier did not match any Pokéstops in the database (e.g. supplying the ID of a Pokéstop which does not exist, or has been deleted).
- poi_ambiguous
- Your Pokéstop identifier matched several Pokéstops equally well. A list of
POI IDs for these are provided in
candidatesalongside this error response.
Clearing research from Pokéstop¶
| Method | PATCH |
| URL | /api/poi.php |
| Content-Type | application/json |
| Since | v1.1 |
Arguments¶
- Pokéstop identifier
Must one of the following sets of arguments. The first found identifier is used among those listed below.
- Match by ID
Matches exactly against a single, well-known Pokéstop using its ID.
id- The unique numerical ID of the Pokéstop in FreeField’s database.
- Match by location
Matches against the Pokéstop that is closest to the given location.
latitude- The latitude coordinate of the Pokéstop.
longitude- The longitude coordinate of the Pokéstop.
- Match by name
Attempts to find the best matching name out of all Pokéstops on the map.
name- The name of the Pokéstop.
match_exact(optional, default=false)trueif the name must be matched exactly,falseotherwise.match_case(optional, default=true)trueif the name is case sensitive,falseotherwise.
reset_research- Flag that specifies that you want to clear research for this Pokéstop. Set to
any value,
trueis a reasonable choice.
Response¶
Empty.
Example¶
Request¶
PATCH /api/poi.php HTTP/1.0
X-Access-Token: <access_token>
Content-Type: application/json
{
"name": "Statue of Liberty",
"reset_research": true
}
Response¶
HTTP/1.1 204 No Content
Errors¶
- access_denied
- Permission has not been granted to your client, or you are not properly authenticating with the API.
- database_error
- A server-side issue is preventing this request from being fulfilled.
- missing_fields
- You’re missing a Pokéstop identifier or the
reset_researchflag. - no_poi_candidates
- Your Pokéstop identifier did not match any Pokéstops in the database (e.g. supplying the ID of a Pokéstop which does not exist, or has been deleted).
- poi_ambiguous
- Your Pokéstop identifier matched several Pokéstops equally well. A list of
POI IDs for these are provided in
candidatesalongside this error response.
Add a new Pokéstop¶
| Method | PUT |
| URL | /api/poi.php |
| Content-Type | application/json |
| Since | v1.1 |
Arguments¶
name- The name of the Pokéstop.
lat- The latitude of the Pokéstop.
lon- The longitude of the Pokéstop.
Response¶
- ff_version
- The version of the FreeField instance.
- poi
- A POI object.
Example¶
Request¶
PUT /api/poi.php HTTP/1.0
X-Access-Token: <access_token>
Content-Type: application/json
{
"name": "Statue of Liberty",
"lat": 40.68925377062,
"lon": -74.044514894485
}
Response¶
HTTP/1.1 201 Created
Content-Type: application/json
{
"ff_version": "1.1-rc.1",
"poi": {
"id": 2,
"name": "Statue of Liberty",
"latitude": 40.68925377062,
"longitude": -74.044514894485,
"objective": {
"type": "unknown",
"params": []
},
"reward": {
"type": "unknown",
"params": []
},
"updated": {
"on": 1550957320,
"by": {
"nick": "bilde2910",
"color": "#008040"
}
}
}
}
Errors¶
- access_denied
- Permission has not been granted to your client, or you are not properly authenticating with the API.
- database_error
- A server-side issue is preventing this request from being fulfilled.
- invalid_location
- The latitude and longitude coordinate pair you provided is outside the Pokéstop geofence. See Limiting Pokéstop submission for more information.
- missing_fields
- You’re missing a name, latitude or longitude.
- name_empty
- The Pokéstop name you provided was empty.
Moving a Pokéstop¶
| Method | PATCH |
| URL | /api/poi.php |
| Content-Type | application/json |
| Since | v1.1 |
Arguments¶
- Pokéstop identifier
Must one of the following sets of arguments. The first found identifier is used among those listed below.
- Match by ID
Matches exactly against a single, well-known Pokéstop using its ID.
id- The unique numerical ID of the Pokéstop in FreeField’s database.
- Match by location
Matches against the Pokéstop that is closest to the given location.
latitude- The latitude coordinate of the Pokéstop.
longitude- The longitude coordinate of the Pokéstop.
- Match by name
Attempts to find the best matching name out of all Pokéstops on the map.
name- The name of the Pokéstop.
match_exact(optional, default=false)trueif the name must be matched exactly,falseotherwise.match_case(optional, default=true)trueif the name is case sensitive,falseotherwise.
move_to- A Location object.
Response¶
Empty.
Example¶
Request¶
PATCH /api/poi.php HTTP/1.0
X-Access-Token: <access_token>
Content-Type: application/json
{
"name": "Statue of Liberty",
"move_to": {
"latitude": 40.68925377062,
"longitude": -74.044514894485
}
}
Response¶
HTTP/1.1 204 No Content
Errors¶
- access_denied
- Permission has not been granted to your client, or you are not properly authenticating with the API.
- database_error
- A server-side issue is preventing this request from being fulfilled.
- invalid_data
- The latitude and longitude coordinate pair you provided is invalid.
- invalid_location
- The latitude and longitude coordinate pair you provided is outside the Pokéstop geofence. See Limiting Pokéstop submission for more information.
- missing_fields
- You’re missing a Pokéstop identifier or the new location.
- no_poi_candidates
- Your Pokéstop identifier did not match any Pokéstops in the database (e.g. supplying the ID of a Pokéstop which does not exist, or has been deleted).
- poi_ambiguous
- Your Pokéstop identifier matched several Pokéstops equally well. A list of
POI IDs for these are provided in
candidatesalongside this error response.
Renaming a Pokéstop¶
| Method | PATCH |
| URL | /api/poi.php |
| Content-Type | application/json |
| Since | v1.1 |
Arguments¶
- Pokéstop identifier
Must one of the following sets of arguments. The first found identifier is used among those listed below.
- Match by ID
Matches exactly against a single, well-known Pokéstop using its ID.
id- The unique numerical ID of the Pokéstop in FreeField’s database.
- Match by location
Matches against the Pokéstop that is closest to the given location.
latitude- The latitude coordinate of the Pokéstop.
longitude- The longitude coordinate of the Pokéstop.
- Match by name
Attempts to find the best matching name out of all Pokéstops on the map.
name- The name of the Pokéstop.
match_exact(optional, default=false)trueif the name must be matched exactly,falseotherwise.match_case(optional, default=true)trueif the name is case sensitive,falseotherwise.
rename_to- The new name for the Pokéstop.
Response¶
Empty.
Example¶
Request¶
PATCH /api/poi.php HTTP/1.0
X-Access-Token: <access_token>
Content-Type: application/json
{
"name": "Statue of Liberty",
"rename_to": "Giant Statue"
}
Response¶
HTTP/1.1 204 No Content
Errors¶
- access_denied
- Permission has not been granted to your client, or you are not properly authenticating with the API.
- database_error
- A server-side issue is preventing this request from being fulfilled.
- missing_fields
- You’re missing a Pokéstop identifier or the new name of the Pokéstop.
- no_poi_candidates
- Your Pokéstop identifier did not match any Pokéstops in the database (e.g. supplying the ID of a Pokéstop which does not exist, or has been deleted).
- poi_ambiguous
- Your Pokéstop identifier matched several Pokéstops equally well. A list of
POI IDs for these are provided in
candidatesalongside this error response.
Deleting a Pokéstop¶
| Method | DELETE |
| URL | /api/poi.php |
| Content-Type | application/json |
| Since | v1.1 |
Arguments¶
- Pokéstop identifier
Must one of the following sets of arguments. The first found identifier is used among those listed below.
- Match by ID
Matches exactly against a single, well-known Pokéstop using its ID.
id- The unique numerical ID of the Pokéstop in FreeField’s database.
- Match by location
Matches against the Pokéstop that is closest to the given location.
latitude- The latitude coordinate of the Pokéstop.
longitude- The longitude coordinate of the Pokéstop.
- Match by name
Attempts to find the best matching name out of all Pokéstops on the map.
name- The name of the Pokéstop.
match_exact(optional, default=false)trueif the name must be matched exactly,falseotherwise.match_case(optional, default=true)trueif the name is case sensitive,falseotherwise.
Response¶
Empty.
Example¶
Request¶
DELETE /api/poi.php HTTP/1.0
X-Access-Token: <access_token>
Content-Type: application/json
{
"name": "Statue of Liberty"
}
Response¶
HTTP/1.1 204 No Content
Errors¶
- access_denied
- Permission has not been granted to your client, or you are not properly authenticating with the API.
- database_error
- A server-side issue is preventing this request from being fulfilled.
- missing_fields
- You’re missing a Pokéstop identifier.
- no_poi_candidates
- Your Pokéstop identifier did not match any Pokéstops in the database (e.g. supplying the ID of a Pokéstop which does not exist, or has been deleted).
- poi_ambiguous
- Your Pokéstop identifier matched several Pokéstops equally well. A list of
POI IDs for these are provided in
candidatesalongside this error response.