Docs chevron_right API Endpoints
api

GraphQL API

ProjectCore exposes a read-only GraphQL API at POST /graphql for system-to-system integrations. Every query is scoped to the tenant that owns the bearer token used to authenticate the request.

Authentication

The API is authenticated with a tenant-wide GraphQL API bearer token, managed from Tenant Admin → Tokens. Send it in the Authorization header:

Authorization: Bearer <your-tenant-api-token>

Unlike the MCP server (which authenticates as a specific user), the GraphQL API acts tenant-wide. Resolvers scope directly through the resolved tenant rather than through Pundit user policies.

Limits

Max Depth
15

Maximum nesting depth per query.

Max Complexity
200

Maximum query complexity score.

Queries

project(key: String!): Project

Look up a project by its key (e.g. "ACME").

projects: [Project!]!

All projects in this tenant.

issue(key: String!): Issue

Look up an issue by its full key (e.g. "ACME-42").

issues(project_key: String!, assignee_email: String, status: String, limit: Int): [Issue!]!

Issues in a project, optionally filtered by assignee or status.

Arguments
  • •project_key (required) — e.g. "ACME"
  • •assignee_email (optional) — "unassigned" for no assignee
  • •status (optional) — board column/status name
  • •limit (optional) — default 50, max 200

Types

Project
  • id: ID!
  • key: String!
  • name: String!
  • totalTimeSpentSeconds: Int!
  • totalTimeSpentFormatted: String!
  • issues(assignee_email, status, limit): [Issue!]!
Issue
  • fullKey: String!
  • title: String
  • issueType: String!
  • status: String
  • priority: String
  • storyPoints: Float
  • assignee: User
  • reporter: User
  • epic: Issue
  • parent: Issue
  • startDate: ISO8601Date
  • dueDate: ISO8601Date
  • totalTimeSpentSeconds: Int!
  • totalTimeSpentFormatted: String!
  • createdAt: ISO8601DateTime!
  • updatedAt: ISO8601DateTime!
User
  • id: ID!
  • email: String!
  • displayName: String!

Example Query

Fetch all issues in a project with their assignees and status:

curl -X POST https://your-workspace.example.com/graphql \
  -H "Authorization: Bearer $API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "{ issues(projectKey: \"ACME\") { fullKey title status assignee { displayName } priority storyPoints } }"
  }'
explore

Interactive Explorer

An interactive GraphiQL IDE is available at /graphiql for exploring the schema and testing queries. Sign in first — your session authenticates automatically.