KU

Telemetry

Own your metrics

When you go to dropbox.com and dismiss a prompt, the website sends back a post request to https://www.dropbox.com/prompt/dismiss?_subject_uid={{redacted}}

Let us take a look at what the query parameter names are:

  1. subject_uid
  2. campaign_id
  3. csrf_token
  4. csrf_token_type
  5. delta_from_request_start_ms
  6. prompt_parent_request_id
  7. prompt_queried_at_ms
  8. version_id

An aside, why use post if you don't have a request body?

If your action is not idempotent, then you MUST use POST. If you don't, you're just asking for trouble down the line. GET, PUT and DELETE methods are required to be idempotent. Imagine what would happen in your application if the client was pre-fetching every possible GET request for your service – if this would cause side effects visible to the client, then something's wrong.

I agree that sending a POST with a query string but without a body seems odd, but I think it can be appropriate in some situations.

Think of the query part of a URL as a command to the resource to limit the scope of the current request. Typically, query strings are used to sort or filter a GET request (like ?page=1&sort=title) but I suppose it makes sense on a POST to also limit the scope (perhaps like ?action=delete&id=5).

https://stackoverflow.com/a/612035/8250038

Not that it matters in this case because we do have a form:

  1. is_xhr: "true"
  2. t: "{redacted}" (some string)

There are also other endpoints:

  1. https://www.dropbox.com/log/telemetry
  2. https://www.dropbox.com/log/ux_alalytics
  3. https://www.dropbox.com/log/web_user_action

All of which are post actions.

Image