Skip to main content
OWASP Nest provides a comprehensive set of GraphQL queries for retrieving data about projects, chapters, repositories, users, and more.

API Keys

activeApiKeyCount

Get the count of active API keys for the authenticated user. Authentication: Required
query {
  activeApiKeyCount
}

apiKeys

Get all active API keys for the authenticated user. Authentication: Required
query {
  apiKeys {
    uuid
    name
    createdAt
    expiresAt
    isRevoked
  }
}

GitHub Data

repository

Get a specific repository by organization and repository key.
query {
  repository(
    organizationKey: "owasp"
    repositoryKey: "www-project-juice-shop"
  ) {
    name
    description
    starsCount
    forksCount
    openIssuesCount
    languages
    url
    organization {
      login
      name
    }
  }
}
Arguments:
  • organizationKey (String!): The login of the organization
  • repositoryKey (String!): The unique key of the repository

repositories

Get repositories for an organization, ordered by stars.
query {
  repositories(organization: "owasp", limit: 5) {
    name
    starsCount
    description
  }
}
Arguments:
  • organization (String!): The login of the organization
  • limit (Int): Maximum number of repositories to return (default: 12, max: 1000)

recentIssues

Get recent GitHub issues with optional filtering.
query {
  recentIssues(
    organization: "owasp"
    limit: 3
    distinct: false
  ) {
    number
    title
    state
    createdAt
    author {
      login
      avatarUrl
    }
    repository {
      name
    }
  }
}
Arguments:
  • limit (Int): Maximum number of issues to return (default: 5, max: 1000)
  • distinct (Boolean): Return unique issues per author (default: false)
  • login (String): Filter by author’s GitHub login
  • organization (String): Filter by organization login

user

Get a GitHub user profile by login.
query {
  user(login: "bkimminich") {
    login
    name
    avatarUrl
    bio
    company
    location
  }
}
Arguments:
  • login (String!): The GitHub login of the user

topContributedRepositories

Get repositories a user has contributed to, ordered by contribution count.
query {
  topContributedRepositories(login: "johndoe") {
    name
    starsCount
    description
  }
}
Arguments:
  • login (String!): The GitHub login of the user

OWASP Projects

project

Get a specific OWASP project by key.
query {
  project(key: "juice-shop") {
    name
    summary
    level
    type
    isActive
    starsCount
    forksCount
    contributorsCount
    languages
    topics
    repositories {
      name
      url
    }
  }
}
Arguments:
  • key (String!): The project key (without “www-project-” prefix)

recentProjects

Get recently created active projects.
query {
  recentProjects(limit: 3) {
    name
    summary
    level
    createdAt
  }
}
Arguments:
  • limit (Int): Maximum number to return (default: 8, max: 1000)

searchProjects

Search for active projects by name.
query {
  searchProjects(query: "security") {
    name
    summary
    level
  }
}
Arguments:
  • query (String!): Search query (min: 3 chars, max: 100 chars)

isProjectLeader

Check if a GitHub user is listed as a project leader.
query {
  isProjectLeader(login: "bkimminich")
}
Arguments:
  • login (String!): GitHub login to check

OWASP Chapters

chapter

Get a specific OWASP chapter by key.
query {
  chapter(key: "london") {
    name
    region
    url
    createdAt
  }
}
Arguments:
  • key (String!): The chapter key (without “www-chapter-” prefix)

recentChapters

Get recently created active chapters.
query {
  recentChapters(limit: 5) {
    name
    region
    createdAt
  }
}
Arguments:
  • limit (Int): Maximum number to return (default: 8, max: 1000)

OWASP Events

upcomingEvents

Get upcoming OWASP events.
query {
  upcomingEvents(limit: 3) {
    name
    startDate
    endDate
    location
    url
  }
}
Arguments:
  • limit (Int): Maximum number to return (default: 6, max: 1000)

Mentorship Programs

getProgram

Get a mentorship program by key.
query {
  getProgram(programKey: "gsoc-2024") {
    name
    description
    status
    startedAt
    endedAt
    menteesLimit
    domains
    tags
  }
}
Arguments:
  • programKey (String!): The program key

myPrograms

Get paginated programs where the authenticated user is an admin or mentor. Authentication: Required
query {
  myPrograms(search: "", page: 1, limit: 10) {
    currentPage
    totalPages
    programs {
      name
      status
      userRole
    }
  }
}
Arguments:
  • search (String): Search query for program name (default: "")
  • page (Int): Page number (default: 1)
  • limit (Int): Items per page (default: 24, max: 1000)

Using Variables

You can use variables to make your queries more dynamic:
query GetProject($projectKey: String!) {
  project(key: $projectKey) {
    name
    summary
    level
  }
}

Next Steps

Build docs developers (and LLMs) love