API Reference

The geography app contains a number of different models related to where a specimen was collected (or, in the case of live insect photography, where an insect was photographed). There are five different “levels” of locations, each one more granular than the previous. Included here is also the endpoint for accessing specific collecting trips I’ve taken over the years.

Countries

api/v2/countries/

This endpoint returns all of the countries in which I’ve collected.

Example GET request (using curl):

curl https://api.memcollection.com/api/v2/countries/

Response:

{
    "meta": {
        "total_count": 3
    },
    "items": [
        {
            "id": 1,
            "name": "United States of America",
            "abbr": "USA",
            "date_created": "2024-11-11T16:38:33.295000Z",
            "date_modified": "2024-11-11T16:38:33.295000Z"
        },
        ...
    ]
}

States

api/v2/states/

This endpoint returns all of the states in which I’ve collected.

Example GET request (using curl):

curl https://api.memcollection.com/api/v2/states/

Response:

{
    "meta": {
        "total_count": 29
    },
    "items": [
        {
            "id": 1,
            "name": "Indiana",
            "abbr": "IN",
            "date_created": "2024-11-12T02:09:06.119000Z",
            "date_modified": "2024-11-12T02:09:06.119000Z",
            "country": 1
        },
        ...
    ]
}

api/v2/nested-states/

The regular api/v2/states/ endpoint only returns the id for the country to which the state belongs. With the api/v2/nested-states/ endpoint, the entire country object is returned instead of just the id.

Example GET request (using curl):

curl https://api.memcollection.com/api/v2/nested-states/

Response:

{
    "meta": {
        "total_count": 29
    },
    "items": [
        {
            "id": 1,
            "name": "Indiana",
            "abbr": "IN",
            "date_created": "2024-11-12T02:09:06.119000Z",
            "date_modified": "2024-11-12T02:09:06.119000Z",
            "country": {
                "id": 1,
                "name": "United States of America",
                "abbr": "USA",
                "date_created": "2024-11-11T16:38:33.295000Z",
                "date_modified": "2024-11-11T16:38:33.295000Z"
            }
        },
        ...
    ]
}

Counties

api/v2/counties/

This endpoint returns all of the counties (or boroughs/parishes, for states that don’t have counties) in which I’ve collected.

Example GET request (using curl):

curl https://api.memcollection.com/api/v2/counties/

Response:

{
    "meta": {
        "total_count": 93
    },
    "items": [
        {
            "id": 1,
            "name": "Clear Creek",
            "abbr": "Co.",
            "full_name": "Clear Creek Co.",
            "date_created": "2024-11-12T02:59:47.247000Z",
            "date_modified": "2024-11-12T02:59:47.247000Z",
            "state": 5
        },
        ...
    ]
}

api/v2/nested-counties/

The regular api/v2/counties/ endpoint only returns the id for the state to which the county belongs. With the api/v2/nested-counties/ endpoint, the entire state object (and the entire country object to which that belongs) is returned.

Example GET request (using curl):

curl https://api.memcollection.com/api/v2/nested-counties/

Response:

{
    "meta": {
        "total_count": 29
    },
    "items": [
        {
            "id": 1,
            "name": "Clear Creek",
            "abbr": "Co.",
            "full_name": "Clear Creek Co.",
            "date_created": "2024-11-12T02:59:47.247000Z",
            "date_modified": "2024-11-12T02:59:47.247000Z",
            "state": {
                "id": 5,
                "name": "Colorado",
                "abbr": "CO",
                "date_created": "2024-11-12T02:22:58.370000Z",
                "date_modified": "2024-11-12T02:22:58.370000Z",
                "country": {
                    "id": 1,
                    "name": "United States of America",
                    "abbr": "USA",
                    "date_created": "2024-11-11T16:38:33.295000Z",
                    "date_modified": "2024-11-11T16:38:33.295000Z"
                }
            }
        },
        ...
    ]
}

Localities

api/v2/localities/

This endpoint returns all of the localities in which I’ve collected.

Example GET request (using curl):

curl https://api.memcollection.com/api/v2/localities/

Response:

{
    "meta": {
        "total_count": 266
    },
    "items": [
        ...,
        {
            "id": 4,
            "name": "Bonanza Creek Experimental Forest",
            "range": "23 km SW",
            "town": "Ester",
            "date_created": "2024-11-14T01:26:52.928000Z",
            "date_modified": "2024-11-14T01:26:52.928000Z",
            "country": null,
            "state": null,
            "county": 3
        },
        ...
    ]
}

Note that a locality can only belong to one region (for example, a locality cannot belong to both a state and a county). This is because the lower-level regions (counties and states) already belong to higher-level regions (states and countries); for example, if a locality belongs to a county, that county already belongs to a state, and that state already belongs to a country. Setting up the data in this way was a personal preference of mine, as I wanted to preserve the relationship between the different levels of regions.

api/v2/nested-localities/

The regular api/v2/localities/ endpoint only returns the id for the region to which the locality belongs (which could either be a county, state, or country). With the api/v2/nested-localities/ endpoint, the region’s entire object is returned (and any nested objects as well). For example, if the locality belongs to a county, that county’s object, as well as the county’s state object and that state’s country object, will all be returned in a nested structure.

Example GET request (using curl):

curl https://api.memcollection.com/api/v2/nested-localities/

Response:

{
    "meta": {
        "total_count": 29
    },
    "items": [
        ...
        {
            "id": 4,
            "name": "Bonanza Creek Experimental Forest",
            "range": "23 km SW",
            "town": "Ester",
            "date_created": "2024-11-14T01:26:52.928000Z",
            "date_modified": "2024-11-14T01:26:52.928000Z",
            "country": null,
            "state": null,
            "county": {
                "id": 3,
                "name": "Fairbanks N. Star",
                "abbr": "Boro.",
                "full_name": "Fairbanks N. Star Boro.",
                "date_created": "2024-11-12T03:00:28.223000Z",
                "date_modified": "2024-11-12T03:00:28.223000Z",
                "state": {
                    "id": 2,
                    "name": "Alaska",
                    "abbr": "AK",
                    "date_created": "2024-11-12T02:22:20.633000Z",
                    "date_modified": "2024-11-12T02:22:20.633000Z",
                    "country": {
                        "id": 1,
                        "name": "United States of America",
                        "abbr": "USA",
                        "date_created": "2024-11-11T16:38:33.295000Z",
                        "date_modified": "2024-11-11T16:38:33.295000Z"
                    }
                }
            }
        },
        ...
    ]
}

GPS Coordinates

api/v2/gps-coordinates/

This endpoint returns all of the GPS coordinates documenting where specimens have been collected.

Example GET request (using curl):

curl https://api.memcollection.com/api/v2/gps-coordinates/

Response:

{
    "meta": {
        "total_count": 464
    },
    "items": [
        {
            "id": 1,
            "latitude": "38.849500",
            "longitude": "-84.866328",
            "elevation": "252",
            "elevation_meters": "252m",
            "date_created": "2024-11-15T01:58:01.174000Z",
            "date_modified": "2025-06-14T21:34:46.711000Z",
            "locality": 12
        },
        ...
    ]
}

api/v2/nested-gps-coordinates/

The regular api/v2/gps-coordinates/ endpoint only returns the id for the locality to which a pair of coordinates belongs. With the api/v2/nested-gps-coordinates/ endpoint, the locality’s entire object is returned (and any nested objects as well).

Example GET request (using curl):

curl https://api.memcollection.com/api/v2/nested-gps-coordinates/

Response:

{
    "meta": {
        "total_count": 464
    },
    "items": [
        {
            "id": 1,
            "latitude": "38.849500",
            "longitude": "-84.866328",
            "elevation": "252",
            "elevation_meters": "252m",
            "date_created": "2024-11-15T01:58:01.174000Z",
            "date_modified": "2025-06-14T21:34:46.711000Z",
            "locality": {
                "id": 12,
                "name": "Boone Robinson Rd",
                "range": "4 km NW",
                "town": "Patriot",
                "date_created": "2024-11-15T01:57:47.058000Z",
                "date_modified": "2024-11-15T01:57:47.058000Z",
                "country": null,
                "state": null,
                "county": {
                    "id": 7,
                    "name": "Switzerland",
                    "abbr": "Co.",
                    "full_name": "Switzerland Co.",
                    "date_created": "2024-11-12T03:02:06.011000Z",
                    "date_modified": "2024-11-12T03:02:06.011000Z",
                    "state": {
                        "id": 1,
                        "name": "Indiana",
                        "abbr": "IN",
                        "date_created": "2024-11-12T02:09:06.119000Z",
                        "date_modified": "2024-11-12T02:09:06.119000Z",
                        "country": {
                            "id": 1,
                            "name": "United States of America",
                            "abbr": "USA",
                            "date_created": "2024-11-11T16:38:33.295000Z",
                            "date_modified": "2024-11-11T16:38:33.295000Z"
                        }
                    }
                }
            }
        },
        ...
    ]
}

Collecting Trips

api/v2/collecting-trips/

This endpoint returns all of the collecting trips I’ve taken over the years in pursuit of butterflies and moths. There isn’t another endpoint that contains nested data.

Example GET request (using curl):

curl https://api.memcollection.com/api/v2/collecting-trips/

Response:

{
    "meta": {
        "total_count": 20
    },
    "items": [
        {
            "id": 1,
            "name": "Alaska 2016 Trip",
            "slug": "alaska-2016-trip",
            "states": [
                {
                    "id": 2,
                    "name": "Alaska",
                    "abbr": "AK",
                    "date_created": "2024-11-12T02:22:20.633000Z",
                    "date_modified": "2024-11-12T02:22:20.633000Z",
                    "country": 1
                }
            ],
            "start_date": "2016-06-25",
            "end_date": "2016-06-26",
            "notes": "",
            "date_created": "2024-11-15T03:52:46.591000Z",
            "date_modified": "2024-11-15T03:52:46.591000Z"
        },
        ...
    ]
}