Where responses reference non-ephemeral resources, such as packages, the API will return an ETag
header that represents a uniqueness identifier for the results. If an ETag
is sent, then the API might also send a Last-Modified
header if it knows when the resource was last updated, but it's better to rely on the ETag
alone. A client can send the If-None-Match
header with the value of the known ETag
to avoid returning the full resource again, in which case a match will result in a 304 Not Modified
status being returned instead.
Let's see it in action:
curl -i -H "X-Api-Key: foobar" https://api.cloudsmith.io/user/self/
HTTP/1.0 200 OK
Content-Type: application/json
ETag: "99ed160b320d4daa29fcd6097de8cdAf"
Connection: close
Server: Cloudsmith MCP
Date: Sun, 29 Jan 2017 23:56:34 GMT
{
"authenticated": true,
"slug": "example",
"slug_perm": "ABbx54bagaAB",
"name": "Example User",
"email": "[email protected]"
}
curl -i -H "X-Api-Key: foobar" -H "If-None-Match: 99ed160b320d4daa29fcd6097de8cdAf" https://api.cloudsmith.io/user/self/
HTTP/1.0 304 Not Modified
content-type: text/plain
ETag: "99ed160b320d4daa29fcd6097de8cdAf"
Server: Cloudsmith MCP
Date: Sun, 29 Jan 2017 23:57:20 GMT
Rate Limiting
If
If-None-Match
orIs-Modified-Since
(whereLast-Modified
was sent) is used and results in a304 Not Modified
response, the client will not incur any changes to their current rate limit usage. In other words, unmodified resources do not count towards rate limits.