API v3 GraphQL Help

MonsterOps API Reference

This page documents API v3 GraphQL. V3 exposes teams, rocks, KPIs, issues, to-dos, and news with name-based object fields.

Endpoint: POST /v3/graphql
GraphiQL: /v3/graphiql
Auth Header: Authorization: YOUR_API_KEY (raw key, not Bearer)
API v3 GraphQL Help

Conventions

Relay-style mutations: all mutations accept one top-level input argument and return a payload object.

Field names are camelCase in GraphQL requests/responses, for example teamId, ownerId, and iconColor.

ID values are prefixed IDs, for example team, rock, to-do, issue, and KPI IDs.

V3 object fields use name for issues, to-dos, and news.

Important: This help page documents API v3 GraphQL only.

Quick Start

query OrganizationTeams {
  organization {
    id
    name
    teams(first: 10) {
      nodes {
        id
        name
      }
    }
  }
}

Read Team Data

query TeamData($teamId: ID!) {
  organization {
    team(id: $teamId) {
      id
      name
      rocks(first: 10, archived: false) {
        nodes {
          id
          name
          status
        }
      }
      kpis(first: 10) {
        nodes {
          id
          name
          values {
            id
            value
            forecastValue
            valueAt
          }
          owner {
            id
            name
          }
        }
      }
      issues(first: 10, archived: false) {
        nodes {
          id
          name
          completedAt
        }
      }
      todos(first: 10, archived: false) {
        nodes {
          id
          name
          dueAt
          completedAt
        }
      }
      news(first: 10, archived: false) {
        nodes {
          id
          name
          completedAt
        }
      }
    }
  }
}

Create A Rock

mutation CreateRock($teamId: ID!, $name: String!) {
  createRock(
    input: {
      teamId: $teamId
      rock: {
        name: $name
        status: "on-track"
      }
    }
  ) {
    rock {
      id
      name
      status
    }
    clientMutationId
  }
}

Query Entry Point

organization: Get the organization for the current API key.

Organization Fields

team(id: ID!): Find a team by ID.

teams(text: String, skip: Int, first: Int, after: String): List filterable teams.

Team Read Fields

rocks(archived: Boolean, first: Int, after: String): RockConnection!

kpis(first: Int, after: String): KpiConnection!

issues(archived: Boolean, first: Int, after: String): IssueConnection!

todos(archived: Boolean, first: Int, after: String): TodoConnection!

news(archived: Boolean, first: Int, after: String): NewsConnection!

Mutation Index

News Mutations

createNews(input: { teamId: ID!, news: NewsCreateInput!, clientMutationId?: String })

updateNews(input: { teamId: ID!, newsId: ID!, news: NewsUpdateInput!, clientMutationId?: String })

deleteNews(input: { teamId: ID!, newsId: ID!, clientMutationId?: String })

Objective Mutations

createObjective(input: { teamId: ID!, objective: ObjectiveInput!, clientMutationId?: String })

updateObjective(input: { teamId: ID!, objectiveId: ID!, objective: ObjectiveUpdateInput!, clientMutationId?: String })

deleteObjective(input: { teamId: ID!, objectiveId: ID!, clientMutationId?: String })

Rock Mutations

createRock(input: { teamId: ID!, rock: RockInput!, clientMutationId?: String })

updateRock(input: { teamId: ID!, id: ID!, rock: RockUpdateInput!, clientMutationId?: String })

deleteRock(input: { teamId: ID!, id: ID!, clientMutationId?: String })

Todo Mutations

createTodo(input: { teamId: ID!, todo: TodoInput!, clientMutationId?: String })

updateTodo(input: { teamId: ID!, todoId: ID!, todo: TodoUpdateInput!, clientMutationId?: String })

deleteTodo(input: { teamId: ID!, todoId: ID!, clientMutationId?: String })

Issue Mutations

createIssue(input: { teamId: ID!, issue: IssueInput!, clientMutationId?: String })

updateIssue(input: { teamId: ID!, issueId: ID!, issue: IssueUpdateInput!, clientMutationId?: String })

deleteIssue(input: { teamId: ID!, issueId: ID!, clientMutationId?: String })

KPI Mutations

createKpi(input: { teamId: ID!, kpi: KpiInput!, clientMutationId?: String })

updateKpi(input: { teamId: ID!, kpiId: ID!, kpi: KpiUpdateInput!, clientMutationId?: String })

deleteKpi(input: { teamId: ID!, kpiId: ID!, clientMutationId?: String })

setKpiSnooze(input: { teamId: ID!, kpiIds: [ID!]!, snooze: Boolean!, clientMutationId?: String })

Snoozes or unsnoozes one or more KPIs. Returns the updated KPIs.

KPI Value Mutations

createKpiValue(input: { teamId: ID!, kpiId: ID!, kpiValue: KpiValueInput!, clientMutationId?: String })

updateKpiValue(input: { teamId: ID!, kpiId: ID!, kpiValueId: ID!, kpiValue: KpiValueUpdateInput!, clientMutationId?: String })

deleteKpiValue(input: { teamId: ID!, kpiId: ID!, kpiValueId: ID!, clientMutationId?: String })

Input Objects

NewsCreateInput

{ name: String!, description?: String, icon?: String, iconColor?: String, ownerId?: ID, completedAt?: ISO8601DateTime, archived?: Boolean }

NewsUpdateInput

{ name?: String, description?: String, icon?: String, iconColor?: String, ownerId?: ID, completedAt?: ISO8601DateTime, archived?: Boolean }

ObjectiveInput

{ name: String!, description?: String, dueAt?: ISO8601Date, ownerId?: ID, icon?: String, iconColor?: String, completedAt?: ISO8601DateTime, archived?: Boolean }

ObjectiveUpdateInput

{ name?: String, description?: String, dueAt?: ISO8601Date, ownerId?: ID, icon?: String, iconColor?: String, completedAt?: ISO8601DateTime, archived?: Boolean }

RockInput

{ name: String!, description?: String, icon?: String, iconColor?: String, ownerId?: ID, status?: String, dueAt?: ISO8601Date, archived?: Boolean, milestones?: [RockMilestoneInput!] }

RockUpdateInput

{ name?: String, description?: String, icon?: String, iconColor?: String, ownerId?: ID, status?: String, dueAt?: ISO8601Date, archived?: Boolean, milestones?: [RockMilestoneInput!] }

RockMilestoneInput

{ id?: ID, name: String!, description?: String, icon?: String, status?: String, completedBy?: ISO8601Date, position?: Int, ownerId?: ID }

TodoInput

{ name: String!, description?: String, dueAt?: ISO8601DateTime, ownerId?: ID, icon?: String, iconColor?: String, completedAt?: ISO8601DateTime, archived?: Boolean, priority?: Int }

TodoUpdateInput

{ name?: String, description?: String, dueAt?: ISO8601DateTime, ownerId?: ID, icon?: String, iconColor?: String, completedAt?: ISO8601DateTime, archived?: Boolean, priority?: Int }

IssueInput

{ name: String!, description?: String, priority?: Int, ownerId?: ID, icon?: String, iconColor?: String, timeframe?: String, completedAt?: ISO8601DateTime, archived?: Boolean }

IssueUpdateInput

{ name?: String, description?: String, priority?: Int, ownerId?: ID, icon?: String, iconColor?: String, timeframe?: String, completedAt?: ISO8601DateTime, archived?: Boolean }

KpiInput

{ name: String!, description?: String, icon?: String, targetUnit?: String, targetFormula?: String, targetValue1?: String, targetValue2?: String, targetCurrency?: String, ownerId?: ID, supportWeekly?: Boolean, supportMonthly?: Boolean, supportQuarterly?: Boolean, supportYearly?: Boolean, interpolation?: String }

KpiUpdateInput

{ name?: String, description?: String, icon?: String, targetUnit?: String, targetFormula?: String, targetValue1?: String, targetValue2?: String, targetCurrency?: String, ownerId?: ID, supportWeekly?: Boolean, supportMonthly?: Boolean, supportQuarterly?: Boolean, supportYearly?: Boolean, interpolation?: String }

KpiValueInput

{ valueAt: ISO8601Date!, value?: Float, forecastValue?: Float }

KpiValueUpdateInput

{ valueAt?: ISO8601Date, value?: Float, forecastValue?: Float }

Output Objects

Organization

{ id: ID!, name: String!, team(id: ID!): Team, teams(text?: String, skip?: Int, first?: Int, after?: String): TeamConnection }

Team

{ id: ID!, name: String!, rocks(...): RockConnection!, kpis(...): KpiConnection!, issues(...): IssueConnection!, todos(...): TodoConnection!, news(...): NewsConnection! }

Rock

{ id: ID!, name: String!, description: String, status: String, icon: String, iconColor: String, dueAt: ISO8601Date, archivedAt: ISO8601DateTime, owner: User, milestones: [Milestone!]! }

Milestone

{ id: ID!, name: String!, description: String, status: String, icon: String, completedBy: ISO8601Date, completedAt: ISO8601DateTime, owner: User }

Issue

{ id: ID!, name: String!, description: String, priority: Int, icon: String, iconColor: String, completedAt: ISO8601DateTime, archivedAt: ISO8601DateTime, owner: User }

Todo

{ id: ID!, name: String!, description: String, icon: String, iconColor: String, dueAt: ISO8601DateTime, completedAt: ISO8601DateTime, archivedAt: ISO8601DateTime, owner: User }

News

{ id: ID!, name: String, description: String, icon: String, iconColor: String, completedAt: ISO8601DateTime, archivedAt: ISO8601DateTime, owner: User }

Kpi

{ id: ID!, name: String!, description: String, icon: String, iconColor: String, owner: User, values: [KpiValue!]! }

Objective

{ id: ID!, name: String!, description: String, icon: String, iconColor: String, dueAt: ISO8601Date, completedAt: ISO8601DateTime, archivedAt: ISO8601DateTime, owner: User }

KpiValue

{ id: ID!, value: Float, forecastValue: Float, valueAt: ISO8601Date! }

User

{ id: ID!, name: String!, email: String }