Skip to content
This repository has been archived by the owner on Feb 2, 2021. It is now read-only.


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Build Status

This project contains data processing rules for the Disco and Inferno mapreduce rules for the Mozilla Tiles project.

Infernix Input Payloads

The payload it expects is:

  "timestamp": 1407336655489, # unix timestamp, injected by onyx
  "date": "2014-05-27", # iso formatted date string for easy splitting by date, injected by onyx
  "ip": "", # request originator's IPv4 address, injected by onyx
  "ua": "Mozilla/5.0 (Windows NT 5.1; rv:33.0) Gecko/20100101 Firefox/33.0", # request originator's UA, injected by onyx
  "locale": "en-US", # locale str, sent by client
  "click": 2, # this denotes a click action, and the index of the tile click in the "tiles" array. other possible actions: "block", "pin", "unpin"
  "tiles": [
      "url": "", # url if a history tile, absent otherwise
      "id": 8, # tile id if it is an enhanced tile or directory tile. absent otherwise
      "pin": true # if the tile is pinned, absent otherwise

Payloads from Firefox

Valid request examples from firefox, one per line:

Impression ping, because there are no actions


Click ping, the action being "pin"


Click ping, the action being "unpin"


Click ping, the action being "block"


Impression ping, after the "block" action


Impression ping, with an enhanced history tile


Impression ping, with an enhanced and a regular history tile


Note the empty tile at position 7


The web server listening to requests at the api endpoints will then inject a couple of parameters in the log. These include:

  • timestamp: a unix timestamp at time of receipt, in UTC
  • date: an iso formatted date string for easy splitting by date, in UTC
  • ip: request originator's IPv4 address
  • ua: request originator's UA

An important part of the payload sent by firefox is the tiles array. It contains a sequence of JSON objects with data about what was clicked. In the case of a non-impression payload, there will be an action included, which manifests itself as a top-level key to the payload. The value to this key is an integer. This represents the array index in the tiles array that this action is about.



Means that a user clicked on tile at position 0 in tiles. That tile happens to be a directory tile with id 2.

Note: There can only be one action key

This key can be one of:

  • click
  • pin
  • unpin
  • block

Tile Object

The payload from Firefox includes the tiles key which has as value an array of tile objects. This section describes the schema for tile objects found in this array.

These are the parameters a tile object can have:

  • id
  • url
  • pin
  • pos


Value: Integer
A tile id.

This is sent if the tile is a directory tile or an enhanced history tile. If it is strictly a history tile, this key won't be included in the tile object.


Value: String
The url of the tile if it is a history tile.

If it isn't a history tile (i.e. it is a directory tile), this key is not included in the tile object.


Value: Integer
Status about this tile

If this tile is pinned in firefox, the value of this key will be 1. otherwise it won't be included in the tile object.


Value: Integer
The position of the tile in the new tab page

this parameter is only included if the index in the array is not a meaningful representation of the tiles. If all tiles are contiguous in the Firefox new tab page (i.e. there are no gaps), this won't be included in the tile object.

e.g. if a user only has 2 tiles, but happens to have dragged a tile to position 9 and has pinned it, there would be a gap between the tile at index 0 and the last tile, which would be at index 1, but ends up being at position 9.

imagine the user having those tiles:

tiles: [{id: 1}, {id: 2}]

the user drags tile id 2, and moves it to position 9

tiles: [{id: 1}, {id: 2, pos: 9}]


Inferno Rules and Schemas for Tiles project



Code of conduct





No packages published