Creating & incrementing countersΒΆ

To create a new counter or increment an existing counter, include the counter property in the body of a POST to the /events endpoint. More than one counter can be incremented in the same request.

Note: It may take up to 30 seconds after an event has been posted for the counter to be incremented.

Request syntax


::

    curl -X POST https://api.usergrid.com/<org>/<app>/events -d '{"timestamp":<timestamp>, "counters" : {<counter_name>:<increment_value>}}'

Parameters

+--------------------+---------------------------------------------------------------------------------------+
| Parameter          | Description                                                                           |
+====================+=======================================================================================+
| org                | Organization UUID or organization name                                                |
+--------------------+---------------------------------------------------------------------------------------+
| app                | Application UUID or application name                                                  |
+--------------------+---------------------------------------------------------------------------------------+
| timestamp          | A required UNIX timestamp that specifies the time the counter is being incremented.   |
+--------------------+---------------------------------------------------------------------------------------+
| counter\_name      | The name of the counter to create or the existing counter to increment.               |
+--------------------+---------------------------------------------------------------------------------------+
| increment\_value   | The value to increment the counter by.                                                |
+--------------------+---------------------------------------------------------------------------------------+

Regarding the ``increment_value``, a negative number can be specified to
decrement the value. A value of '0' can be specified to reset the value
of the counter.

For the ``timestamp``, specifying a value of 0 will automatically assign
the current time.

Example request

The following request will increment the ‘button_clicks’ counter by one, with a timestamp of the current time.

::

curl -X POST https://api.usergrid.com/your-org/your-app/events -d '{"timestamp":0, "counters" : {"button_clicks":1}}'

Example response


::

    {
      "action" : "post",
      "application" : "f34f4222-a166-11e2-a7f7-02e81adcf3d0",
      "params" : { },
      "path" : "/events",
      "uri" : "https://api.usergrid.com/your-org/your-app/events",
      "entities" : [ {
        "uuid" : "b11217fc-9d3a-1427-b24e-699740088e05",
        "type" : "event",
        "created" : 1401224590293,
        "modified" : 1401224590293,
        "timestamp" : 1401224590293,
        "counters" : {
          "button_clicks" : 1
        },
        "message" : null,
        "metadata" : {
          "path" : "/events/b11217fc-9d3a-1427-b24e-699740088e05"
        }
      } ],
      "timestamp" : 1401224590291,
      "duration" : 30,
      "organization" : "your-org",
      "applicationName" : "your-app"
    }
        

Decrementing/resetting counters
-------------------------------

To decrement a counter, specify a negative number for the counter value
in any of the above examples.

To reset a counter, specify a value of 0 for the counter value in any of
the above examples.

Note that the Usergrid JavaScript SDK also provides dedicated methods
for decrementing and resetting counters.

Using counters hierarchically
-----------------------------

You can organize counters into hierarchies by giving them dot-separated
names, e.g. ``button_clicks.homepage``. Incrementing a counter lower in
a hierarchy increments all of the counters upward in the hierarchy
chain.

For example, you want to log errors that your app generates, so you
create hierarchical counters for each module and function within that
module. In this example, you create the following set of counters:

::

    errors
    errors.module
    errors.module.function

Incrementing ``errors.module.function`` by 1 increments all three
counters by 1. A hierarchy can be a useful way of easily tracking
actions in your app at both a cumulative and granular level.