# \*/times, reads and raw data

{% hint style="info" %}
The \*/times API generates a detection from a received location if it fulfills three conditions. The API can provide multiple detections for a split.&#x20;

* The device id belongs to the event.&#x20;

* The location is around the detection radius of a geofence.&#x20;

* The timestamp of the location is between the event start- and end time.
  {% endhint %}

* **Effortless detections** with virtual timekeeping points (geofence) and with geolocations of participants. No timing hardware, no transponders.

* **Passings are recorded in a radius** around the geofence. Set the radius in the setting of the data API of your event.&#x20;

* **Flexibly adjust settings in between:** add timekeeping points or change their locations of a running event or even of a past event, recalculate detections with new parameters.

### Request

**URL** `https://racemap.com/api/data/v1/:eventId/times`\
**Method** GET

**Live sample** <https://racemap.com/api/data/v1/61a21210e5d45d000199f7d9/times>\
**Past sample** <https://racemap.com/api/data/v1/60a3b443f096f800018add7c/times>

#### Optional query with `id` of a checkpoint

* The `id` of a virtual timekeeping point to get all reads of this geofence in chronological order.&#x20;
* Live sample split "Split 3" \
  [https://racemap.com/api/data/v1/61a21210e5d45d000199f7d9/times/**6450e60747adaed475b484b4**](https://racemap.com/api/data/v1/61a21210e5d45d000199f7d9/times/6450e60747adaed475b484b4)
* Past sample split "Finish" \
  [https://racemap.com/api/data/v1/60a3b443f096f800018add7c/times/**64513872c3ab09659eb09683**](https://racemap.com/api/data/v1/60a3b443f096f800018add7c/times/64513872c3ab09659eb09683)

### Response

#### Event object

| Field          | Description \[unit]           | Sample                            |
| -------------- | ----------------------------- | --------------------------------- |
| `name`         | Name of event                 | `"Sample live \| 100km Duathlon"` |
| `location`     | Location                      | `"🇩🇪 Dresden"`                  |
| `startTime`    | Start time in UTC             | `"2022-03-09T07:00:03.201Z"`      |
| `endTime`      | End time in UTC               | `"2022-03-09T14:59:38.201Z"`      |
| `timekeepings` | Array for checkpoint objects  |                                   |
| `starters`     | Array for participant objects |                                   |

#### Checkpoint object

<table><thead><tr><th width="232">Field</th><th width="232.33333333333331">Description</th><th>Sample</th></tr></thead><tbody><tr><td><code>name</code></td><td>Name of virtual timekeeping point </td><td><code>"Split 5"</code></td></tr><tr><td><code>offset</code></td><td>Distance [m] along the <a href="https://docs.racemap.com/create-live-tracking/tab-map#shadowtrack">shadowtrack</a></td><td><code>49222.81</code></td></tr><tr><td><code>id</code></td><td>Unique Racemap ID of timekeeping point</td><td><code>"6450e60747adaed475b48"</code></td></tr><tr><td><code>position</code></td><td>Array with longitude, latitude, hight [m]</td><td><code>13.881129999, 51.075250000, 250</code></td></tr></tbody></table>

#### Participant object

| Field         | Description \[unit]                                                                                                                                                                                                                                                               | Sample                                                                                                                                                              |
| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`          | Unique Racemap ID of participant                                                                                                                                                                                                                                                  | `"61a2122f181c0a6c4bb5376e"`                                                                                                                                        |
| `importId`    | User-defined ID with imported participant data, [Generic API](https://docs.racemap.com/api-import-and-export-data/import-basics/metadata-api) (`importId`) or [RACE\|RESULT API](https://docs.racemap.com/api-import-and-export-data/import-basics/metadata-import-via-rr) (`Id`) | <p><code>"UniqueImportId\_2"</code> or <code>"null"</code><br>if no importId exists</p>                                                                             |
| `startNumber` | Bib number                                                                                                                                                                                                                                                                        | `"2"`                                                                                                                                                               |
| `name`        | Name                                                                                                                                                                                                                                                                              | `"CLV Megware"`                                                                                                                                                     |
| `times`       | Object for checkpoint arrays                                                                                                                                                                                                                                                      | <p><code>null</code> <br>if no locations within <code>startTime</code> and <code>endTime</code><br><code>{}</code> <br>if there are locations but no detections</p> |

#### Checkpoint array

<table><thead><tr><th>Description</th><th>Sample</th><th data-hidden></th></tr></thead><tbody><tr><td>Unique Racemap ID of timekeeping point, array for detection objects </td><td><code>6450e60747adaed475b484b4</code></td><td></td></tr></tbody></table>

#### Detection object

| Field             | Description \[unit]                               | Sample                       |
| ----------------- | ------------------------------------------------- | ---------------------------- |
| `time`            | Timestamp of detection in UTC                     | `"2022-03-09T10:08:00.000Z"` |
| `distanceToSplit` | Distance \[m] of detection from timekeeping point | `43.96`                      |

#### Sample response

{% code expandable="true" %}

```javascript
{
  "name": "Sample | 100km Duathlon",
  "location": "🇩🇪 Dresden",
  "startTime": "2020-04-25T06:00:00Z",
  "endTime": "2020-10-30T18:15:00Z",
  "timekeepings": [
    {
      "name": "Start",
      "offset": 0,
      "position": [13.704069467101244, 51.027617808548015, 159],
      "id": "64513872c3ab09659eb09674"
    },
    {
      "name": "Ruppendorf",
      "offset": 29510,
      "position": [13.599722542890463, 50.90910508578093, 377],
      "id": "64513873368d2f24f3a5feb9"
    },
    {
      "name": "🕖",
      "offset": 48130,
      "position": [13.633563734472718, 50.77911506210913, 570],
      "id": "64513873a2c6e28dbe010405"
    },
    {
      "name": "Bergwertung",
      "offset": 49950,
      "position": [13.623273503927214, 50.76995405256768, 743],
      "id": "64513874c3ab09659eb096b5"
    },
    {
      "name": "🕖",
      "offset": 67660,
      "position": [13.69125, 50.82612, 471],
      "id": "645138746451816d07b38788"
    },
    {
      "name": "Bergwertung",
      "offset": 68780,
      "position": [13.697525647974045, 50.83382486871975, 603],
      "id": "6451387410e583b28d7167e6"
    },
    {
      "name": "Finish",
      "offset": 100260,
      "position": [13.704038205094022, 51.02687962934201, 166],
      "id": "64513872c3ab09659eb09683"
    }
  ],
  "starters": [
    {
      "id": "60a3b6791474227ee54a5bdf",
      "importId": "UniqueImportId_1",
      "startNumber": "01",
      "name": "Konrad",
      "times": null
    },
    {
      "id": "60a3b679147422b72a4a5be0",
      "importId": "UniqueImportId_2",
      "startNumber": "02",
      "name": "Jörg",
      "times": {
        "64513872c3ab09659eb09674": [
          {
            "time": "2020-04-26T08:23:55Z",
            "distanceToSplit": 16.81
          },
          {
            "time": "2020-04-26T08:24:00Z",
            "distanceToSplit": 8.92
          }
        ],
        "64513873368d2f24f3a5feb9": [
          {
            "time": "2020-04-26T10:19:45Z",
            "distanceToSplit": 20.36
          },
          {
            "time": "2020-04-26T10:19:50Z",
            "distanceToSplit": 26.4
          }
        ],
        "64513873a2c6e28dbe010405": [
          {
            "time": "2020-04-26T11:30:40Z",
            "distanceToSplit": 14.17
          },
          {
            "time": "2020-04-26T11:30:45Z",
            "distanceToSplit": 15.18
          }
        ],
        "64513874c3ab09659eb096b5": [
          {
            "time": "2020-04-26T11:41:05Z",
            "distanceToSplit": 19.22
          },
          {
            "time": "2020-04-26T11:41:10Z",
            "distanceToSplit": 4.46
          }
        ],
        "645138746451816d07b38788": [
          {
            "time": "2020-04-26T13:00:30Z",
            "distanceToSplit": 16.19
          },
          {
            "time": "2020-04-26T13:00:35Z",
            "distanceToSplit": 8.29
          },
          {
            "time": "2020-04-26T13:00:40Z",
            "distanceToSplit": 17.85
          },
          {
            "time": "2020-04-26T13:00:45Z",
            "distanceToSplit": 27.8
          }
        ],
        "6451387410e583b28d7167e6": [
          {
            "time": "2020-04-26T13:08:40Z",
            "distanceToSplit": 26.12
          },
          {
            "time": "2020-04-26T13:08:45Z",
            "distanceToSplit": 12.82
          },
          {
            "time": "2020-04-26T13:08:50Z",
            "distanceToSplit": 4.25
          },
          {
            "time": "2020-04-26T13:08:55Z",
            "distanceToSplit": 15.45
          }
        ],
        "64513872c3ab09659eb09683": [
          {
            "time": "2020-04-26T14:50:30Z",
            "distanceToSplit": 28.16
          },
          {
            "time": "2020-04-26T14:50:35Z",
            "distanceToSplit": 2.91
          }
        ]
      }
    },
    {
      "id": "60a3b67914742230ef4a5be2",
      "importId": "UniqueImportId_3",
      "startNumber": "03",
      "name": "Leupold",
      "times": {
        "64513872c3ab09659eb09674": [
          {
            "time": "2020-05-01T07:49:45Z",
            "distanceToSplit": 13.06
          },
          {
            "time": "2020-05-01T07:49:50Z",
            "distanceToSplit": 10.56
          },
          {
            "time": "2020-05-01T13:06:25Z",
            "distanceToSplit": 19.77
          },
          {
            "time": "2020-05-01T13:06:30Z",
            "distanceToSplit": 17.84
          }
        ],
        "64513873368d2f24f3a5feb9": [
          {
            "time": "2020-05-01T09:26:45Z",
            "distanceToSplit": 1.69
          }
        ],
        "64513873a2c6e28dbe010405": [
          {
            "time": "2020-05-01T10:24:35Z",
            "distanceToSplit": 12.15
          },
          {
            "time": "2020-05-01T10:24:40Z",
            "distanceToSplit": 22.72
          }
        ],
        "64513874c3ab09659eb096b5": [
          {
            "time": "2020-05-01T10:34:50Z",
            "distanceToSplit": 27.7
          },
          {
            "time": "2020-05-01T10:34:55Z",
            "distanceToSplit": 1.95
          }
        ],
        "645138746451816d07b38788": [
          {
            "time": "2020-05-01T11:24:30Z",
            "distanceToSplit": 18.56
          },
          {
            "time": "2020-05-01T11:24:35Z",
            "distanceToSplit": 10.39
          },
          {
            "time": "2020-05-01T11:24:40Z",
            "distanceToSplit": 22.24
          }
        ],
        "6451387410e583b28d7167e6": [
          {
            "time": "2020-05-01T11:31:30Z",
            "distanceToSplit": 29.7
          },
          {
            "time": "2020-05-01T11:31:35Z",
            "distanceToSplit": 10.6
          },
          {
            "time": "2020-05-01T11:31:40Z",
            "distanceToSplit": 5.61
          },
          {
            "time": "2020-05-01T11:31:45Z",
            "distanceToSplit": 22.52
          }
        ],
        "64513872c3ab09659eb09683": [
          {
            "time": "2020-05-01T13:06:15Z",
            "distanceToSplit": 11.25
          },
          {
            "time": "2020-05-01T13:06:20Z",
            "distanceToSplit": 25.62
          }
        ]
      }
    }
  ]
}
```

{% endcode %}

#### Sample response with `id` of checkpoint

Checkpoint "Bergwertung" \
[https://racemap.com/api/data/v1/60a3b443f096f800018add7c/times/**6451387410e583b28d7167e6**](https://racemap.com/api/data/v1/60a3b443f096f800018add7c/times/6451387410e583b28d7167e6)

#### Times array with detection objects

<table><thead><tr><th width="221.33333333333331">Field</th><th>Description [unit]</th><th>Sample</th></tr></thead><tbody><tr><td><code>id</code></td><td>Unique Racemap ID of participant</td><td><code>"6450e60747adaed475b48"</code></td></tr><tr><td><code>importId</code></td><td>User-defined ID with imported participant data, <a href="../api-import-and-export-data/import-basics/metadata-api">Generic API</a> (<code>importId</code>) or <a href="../api-import-and-export-data/import-basics/metadata-import-via-rr">RACE|RESULT API</a> (<code>Id</code>)</td><td><code>"UniqueImportId_2"</code></td></tr><tr><td><code>startNumber</code></td><td>Bib number</td><td><code>"02"</code></td></tr><tr><td><code>name</code></td><td>Name</td><td><code>"Jörg"</code></td></tr><tr><td><code>time</code></td><td>Timestamp of detection in UTC</td><td><code>"2022-03-09T10:08:00.000Z"</code></td></tr><tr><td><code>distanceToSplit</code></td><td>Distance [m] of detection from timekeeping point</td><td><code>16.19</code></td></tr></tbody></table>

{% code expandable="true" %}

```javascript
{
  "name": "Sample | 100km Duathlon",
  "location": "🇩🇪 Dresden",
  "startTime": "2020-04-25T06:00:00Z",
  "endTime": "2020-10-30T18:15:00Z",
  "timekeepingId": "6451387410e583b28d7167e6",
  "timekeepingName": "Bergwertung",
  "times": [
    {},
    {
      "id": "60a3b679147422b72a4a5be0",
      "importId": "UniqueImportId_2",
      "startNumber": "02",
      "name": "Jörg",
      "time": "2020-04-26T13:08:45Z",
      "distanceToSplit": 12.82
    },
    {
      "id": "60a3b679147422b72a4a5be0",
      "importId": "UniqueImportId_2",
      "startNumber": "02",
      "name": "Jörg",
      "time": "2020-04-26T13:08:50Z",
      "distanceToSplit": 4.25
    },
    {
      "id": "60a3b679147422b72a4a5be0",
      "importId": "UniqueImportId_2",
      "startNumber": "02",
      "name": "Jörg",
      "time": "2020-04-26T13:08:55Z",
      "distanceToSplit": 15.45
    },
    {
      "id": "60a3b67914742230ef4a5be2",
      "importId": "UniqueImportId_3",
      "startNumber": "03",
      "name": "Leupold",
      "time": "2020-05-01T11:31:30Z",
      "distanceToSplit": 29.7
    },
    {
      "id": "60a3b67914742230ef4a5be2",
      "importId": "UniqueImportId_3",
      "startNumber": "03",
      "name": "Leupold",
      "time": "2020-05-01T11:31:35Z",
      "distanceToSplit": 10.6
    },
    {
      "id": "60a3b67914742230ef4a5be2",
      "importId": "UniqueImportId_3",
      "startNumber": "03",
      "name": "Leupold",
      "time": "2020-05-01T11:31:40Z",
      "distanceToSplit": 5.61
    },
    {
      "id": "60a3b67914742230ef4a5be2",
      "importId": "UniqueImportId_3",
      "startNumber": "03",
      "name": "Leupold",
      "time": "2020-05-01T11:31:45Z",
      "distanceToSplit": 22.52
    },
    {
      "id": "60a3b679147422101b4a5be3",
      "importId": "UniqueImportId_4",
      "startNumber": "04",
      "name": " KRad",
      "time": "2020-05-02T10:41:35Z",
      "distanceToSplit": 17.72
    },
    {
      "id": "60a3b679147422101b4a5be3",
      "importId": "UniqueImportId_4",
      "startNumber": "04",
      "name": " KRad",
      "time": "2020-05-02T10:41:40Z",
      "distanceToSplit": 7.18
    },
    {
      "id": "60a3b679147422101b4a5be3",
      "importId": "UniqueImportId_4",
      "startNumber": "04",
      "name": " KRad",
      "time": "2020-05-02T10:41:45Z",
      "distanceToSplit": 11.5
    },
    {
      "id": "60a3b679147422101b4a5be3",
      "importId": "UniqueImportId_4",
      "startNumber": "04",
      "name": " KRad",
      "time": "2020-05-02T10:41:50Z",
      "distanceToSplit": 29.53
    }
  ]
}
```

{% endcode %}

### Export to RACE|RESULT

RACE|RESULT event settings: Main Window, Simple API

* Type: Custom
* Details: rawdata/addmanual

Settings create an API key to push external data to RACE|RESULT. The duration of the key is limited. Sample:  <https://api.raceresult.com/180472/G5XQYZKPIPU5J1RSCVIZ48QKVU5JIIJP>

![](https://1672210197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LSRNxaH2Ju9Flr7JhJD%2F-MjnDaOzGowx1Uom9v1k%2F-MjnFlci2mpv6r7LuI8N%2Fscreenshot-events.raceresult.com-2021.09.10-15_28_26.png?alt=media\&token=a9f856cd-4255-4d85-8012-84ae3f6f4833)

Data from Racemap \*/times API need be transferred to RACE|RESULT API format, e.g. with a python script:

* syntax: <https://api.raceresult.com/`eventId`/`apiKey`?&`bib`=bibNumber&`time`=timeOfDetections&`TimingPoint`=splitName>
* timeOfDetections in seconds
* sample: <https://api.raceresult.com/180472/G5XQYZKPIPU5J1RSCVIZ48QKVU5JIIJP?&bib=1&time=36600&TimingPoint=Messstelle1>

Using this format virtual detections are imported in RACE|RESULT one by one.

![](https://1672210197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LSRNxaH2Ju9Flr7JhJD%2F-MjnDaOzGowx1Uom9v1k%2F-MjnII-YafvX3HzOHM3l%2Fscreenshot-events.raceresult.com-2021.09.10-15_44_34.png?alt=media\&token=a27d94e5-c6bb-48ca-a46c-212deb9044e9)
