• Exacta Maestro™ Integration Design
  • User Guide
  • GraphQL User Guide
  • FAQ
  • Technical
  • Terminology
Show / Hide Table of Contents
  • GraphQL User Guide
    • Introduction
    • Authentication
    • Schema Organization
    • Building GraphQL Queries
    • Executing GraphQL Queries
    • Executing GraphQL Queries (Legacy)
    • Agent Management
    • Task Management

Exacta Maestro™ GraphQL Schema

This document describes the organization of Exacta Maestro™'s GraphQL API.

Core GraphQL Concepts

GraphQL APIs are organized into hierarchical schemas. The operations and data provided by a schema are described by types and fields. Types describe objects in the schema, and fields describe properties of those objects. A field may be a scalar value (string, number, boolean, etc.) or another type.

The root of the schema is labeled with the GraphQL keyword schema. A schema has one to three fields:

- query: Required. Contains operations which retrieve but do not modify data
- mutation: Optional. Contains operations which modify data.
- subscription: Optional. Not used by Exacta Maestro™.

In GraphQL schema syntax, a schema is defined as

schema {
  query: Query
  mutation: Mutation
  subscription: Subscription
}

In the above example, Query, Mutation, and Subscription are types of the fields query, mutation, and subscription, respectively. The server hosting the schema defines the fields within these root types.

Exacta Maestro™ Fields

Exacta Maestro™'s GraphQL schema adds another layer of organization between the query and mutation types and Exacta Maestro™ operations. Many independent services compose Exacta Maestro™, so the GraphQL schema identifies the service targeted by an operation as a top-level field. For example, AgentHub and TaskAssignment are two Exacta Maestro™ services. Our GraphQL schema is defined as follows:

schema {
    query: Query
    mutation: Mutation
}

type Query {
    agentHubQuery: AgentHubQuery
    taskAssigmentQuery: TaskAssignmentQuery
}

type Mutation {
    agentHubMutation: AgentHubMutation
    taskAssignmentMutation: TaskAssignmentMutation
}

type AgentHubQuery {
    getAgents: [Agent]
    getAgentTypeByAgentId: AgentType
    # Other AgentHub query fields
}

type TaskAssignmentQuery {
    task: TaskModel
    taskGroup: TaskGroup
    # Other Task Assignment query fields
}

type AgentHubMutation {
    addAgent: Boolean
    # Other AgentHub mutation fields
}

type TaskAssignmentMutation {
    createMission: MissionTask
    createTaskGroup: TaskGroup
    # Other TaskAssignment mutation fields
}

See the API Reference for Exacta Maestro™'s full schema.

In This Article