Chartlytics API

Headers

For all api end points other than the signin request, you will need to include a authorization header for the JWT token, and a x-timezone header.

Schemas

<Performer>

  org: <string>
  name: <string>
  age: <optional number>
  gender: <optional string>
  grade: <optional string>
  user: <optional string>   // Link to a <User> for performers of `type` 'user'. You can ignore this.
  creator: <string>
  archived: <optional string>
  archivedBy: <optional string>
  type: <Enum('learner', 'user')> // Ignore performers of type user. User performers are used to track users activity.

<Authorization>

  _id: <string>
  org: <string>
  performer: <string>
  user: <string
  roles: <[string]>
  active: <boolean>
  assigner: <string>

<User>

  email: <optional string>
  username: <optional string>
  isGodmin: <boolean>
  activeOrg: <optional string>
  first_name: <optional string>
  last_name: <optional string>
  hasCaseSensitiveUsername: <boolean>
  isBetaTester: <boolean>
  gender: <optional boolean>,
  hasUpdatedPassword: <optional boolean>
  forceSetPasswordOnFirstLogin: <optional boolean>
  login_attempts: <number>
  lock_until: <optional number>
  confirmed: <boolean>
  lastLogin: <optional string>

<Chart>

  globalType: <optional string>
  name: <optional string>
  org: <string>
  group: <optional string>
  performer: <optional string>
  pinpoint: <string>
  sortId: <number> // deprecated
  metadata: {
    recordFloor: <optional number>
    recordCeiling: <optional number>
    enableRecordCeiling: <optional Bboolean>
    correctAimMin: <optional number>
    correctAimMax: <optional number>
    incorrectAimMin: <optional number>
    incorrectAimMax: <optional number>
    durationAimMin: <optional number>
    durationAimMax: <optional number>
    latencyAimMin: <optional number>
    latencyAimMax: <optional number>
    startDate: <optional string>
    aimDate: <optional string>
    daysToAim: <optional number>
    aggregateType: <optional string>
    conditions: <optional [string]>
    totalTrials: <optional number>
    trialTime: <optional number>
  },
  labels: {
    supervisor: <optional string>
    advisor: <optional string>
    manager: <optional string>
    organization: <optional string>
    performerName: <optional string>
    performerAge: <optional number>
    counted: <optional string>
    timer: <optional string>
    counter: <optional string>
    charter: <optional string>
    division: <optional string>
    room: <optional string>
  },
  tags: <[string]>
  assigner: <string>
  assigned: <string>
  archived: <optional string>
  archivedBy: <optional string>

<Measurement>

{
  org: <string>
  pinpoint: <string>
  performer: <string>
  chart: <string>
  raw: {
    correct: <optional number>,
    incorrect: <optional number>,
    latency: <optional number>,
    duration: <optional number>,
    recordFloor: <optional number>,
    recordCeiling: <optional number>,
  },
  clientCreationDate: <optional string>
  recorder: <string>
  recordedBy: <string>
  recorded: <string>
  isUserMeasurement: <boolean>,
  measurer: <string>
  measured: <string>
  locked: <optional string>
  lockedBy: <optional string>

<CreateMeasurementData>

  _id: <optional string>
  clientCreationDate: <optional string>
  measuredDate: <string>                    // ISO date format. The api uses the requests `x-timezone` to account for the requesters timezone.
  correct: <optional number>                // accel - required if a the chart is a frequency chart and the request has no incorrect field
  incorrect: <optional number>              // decel - required if a the chart is a frequency chart and the request has no correct field
  latency: <optional number>                // required if the chart is a latency chart
  duration: <optional number>               // required if the chart is a duration chart
  recordCeiling: <optional number>
  recordFloor: <optional number>

Endpoints

Sign In

Sign into a account.

Endpoint

POST /api/v2/signin

Body

  userIdentifier: <string>      // User's email, or username
  password: <string>

Response

  accessToken: <string>             // JWT token, store this and use it for future requests
  authorization: <Authorization>    // Associated authorization for the logged in user (for the specific organization)
  user: <User>                      // User that logged in
  userId: <string>                  // User Id that is logged in
  orgId: <string>                   // Organization Id that is logged in

Get Performers

Returns list of performers the authorized user has access within the organization.

Endpoint

GET /api/v2/org/:orgId/performer

Response

  msg: <string>
  orgId: <string>
  performers: <[Performer]>

Get Performer's Charts

Returns a list of charts that the authorized user has access to within the organization, for the specific performer.

Endpoint

GET /api/v2/org/:orgId/performer/:performerId/chart

Response

  msg: <string>
  orgId: <string>
  performerId: <string>
  charts: <[Chart]>

Create Measurement

Creates measurement for the specified performer's chart.

Endpoint

POST /api/org/:orgId/chart/:chartId/measurement

Body

  measurements: <[CreateMeasurementData]>

Response

  orgId: <string>
  chartId: <string>
  measurements: <[Measurement]>