API: Add a field for when a taxon reached research grade

Platform(s), such as mobile, website, API, other: API

URLs (aka web addresses) of any pages, if relevant:

Description of need:
Describe the iNaturalist community need that your requested feature addresses. Include screenshots, URLs, and other details to help us all understand the issue.

Right now, it is possible to use the API to find when an observation was last updated; it is possible to see whether or not it is considered research_grade; and it is possible to see the amount of identifications and how many disagree. However, it is not possible to see when an identification reached research_grade.

This matters to me because I like to follow how many research grade observations I have in a given area as a way of gamifying my own learning, and currently there is no way of finding out if I have a new research grade observation (which I haven’t had before) unless I happen to have observed it very recently and it was just approved. There’s no way for me to see a list of research grade items, sorted by when they were approved. Tracking taxons that have just reached research grade but which have few observations by me would give me feedback to help me know what to look for next, to find other observations of the same taxon in the field. It would assist learning.

Knowing when an item reaches research grade does come up in notifications, but this would be another way of doing that, which would allow you to see and track research grade items, thus tracking your own knowledge of a taxon or of a wider understanding of species in a set place.

I don’t propose a UI change at this time, because I think that would be more work. The lowest hanging fruit would be to add a field to the JSON object for an observation that just says when the switch to research_grade happened.

Feature request details:
In detail, describe the feature you are requesting. This includes its functionality, where the feature is implemented, and what it might look like. Screenshots or mock-ups are helpful. The idea is to have a concrete and actionable request which the community can discuss and vote on. It might change through discussion, but it’s much easier to iterate and talk about something specific.

Something like this:

{observation...
  "when_research_grade": type ISO Timestamp
}

This would help me build scripts to use this work.

See https://forum.inaturalist.org/t/sort-observations-by-when-they-reached-research-grade/51431 for a similar request, but with a wider scope.

if you’re messing with the API anyway, you could just calculate when the observation reached research grade yourself… if you’re using /v1/observations, you get all the identifications made on the observation.

2 Likes

Can we assume that what you are wanting is the timestamp for the most recent attainment of Research Grade?

Theoretically an observation can gain and lose Research Grade multiple times, depending on the flow of identifications and data quality assessments from the community.

Also, while at Research Grade, an observation can become Research grade at different taxonomic levels. For example, an observation that is Research Grade at species rank may later become research grade at subspecies rank if enough subsequent IDs agree at that rank.

Just some complications to consider…

2 Likes

Thanks @pisum and @jdmore. I hadn’t thought of using identifications to calculate it - that may be hard at scale (I have more than 15k observations), and there are the issues that @jdmore raised.

@jdmore - yes, I wanted the most recent attainment. I didn’t realize RG worked at different levels; that’s a fair point.

It shouldn’t be significantly ‘harder’ than the jobs of doing it for one, or querying 15k observations are individually, it’s not the sort of thing where there is some sort of combinatorial explosion that results at that kind of scale.

The problem with adding a field is that you need to choose one of possibly many useful interpretations for it, and then when someone comes up with a use case for a different one, you need to add another field - and every change to every observation needs to recalculate them, so we are ‘paying’ for the storage to cache (or work to compute on the fly) a value that can always be computed from an observation’s record, and the work to preemptively compute it even when there are very few users who are actually interested in what is in it.

So if there was interest in having some sort of API helper instead of just letting users compute it themselves, it might be better to have an API function that computes and returns something like a list of RG state changes for each point where an observation falls in or out of RG or changes what taxon it is RG for.

But really, to me, it seems like a “library function” that should also be able to be applied to already exported inat data. It’s an interesting question to ask, and could be one of many filters that could be appropriate for selecting subsets of the inat data to study - but a field in every observation record doesn’t seem like the optimal way to answer it.

1 Like

Thanks, @environ. Agreed. I think a library function makes sense. Is there an open source repo I could potentially add this function to?