Skip to main content
OWASP Nest helps you find issues that match your skills and interests across all OWASP projects. This guide shows you how to discover the perfect contribution opportunity.

Understanding Issue Filters

Nest provides powerful filtering options to help you find issues that match your experience level and interests.

Available Filters

Organization

Filter issues by GitHub organization (e.g., “OWASP”)

Repository

Filter issues by specific repository name

State

Filter by issue state: open or closed

Labels

Filter by issue labels like good first issue, bug, enhancement

Finding Issues via the API

You can query issues programmatically using the REST API.

List All Issues

GET /api/v0/issues/
Query Parameters:
  • organization - Organization name (e.g., “OWASP”)
  • repository - Repository name (e.g., “Nest”)
  • state - Issue state: open or closed
  • ordering - Sort order: created_at, -created_at, updated_at, -updated_at
  • page - Page number for pagination
  • limit - Items per page
# Get open issues from OWASP/Nest
curl "https://nest.owasp.org/api/v0/issues/?organization=OWASP&repository=Nest&state=open"

Get Specific Issue

GET /api/v0/issues/{organization}/{repository}/{issue_number}
Example:
curl "https://nest.owasp.org/api/v0/issues/OWASP/Nest/1234"
Response:
{
  "created_at": "2024-01-15T10:30:00Z",
  "state": "open",
  "title": "Add search filters to issues page",
  "updated_at": "2024-01-16T14:20:00Z",
  "url": "https://github.com/OWASP/Nest/issues/1234",
  "body": "Detailed issue description..."
}

Filtering by Experience Level

1

Good First Issues

Perfect for newcomers to the project:
# Search for beginner-friendly issues
curl "https://nest.owasp.org/api/v0/issues/?organization=OWASP&state=open" \
  | jq '.results[] | select(.labels[]? | contains("good first issue"))'
These issues typically:
  • Have clear descriptions
  • Require minimal context
  • Include guidance on implementation
  • Are smaller in scope
2

Intermediate Issues

For contributors with project knowledge:Look for issues labeled:
  • enhancement - Feature improvements
  • bug - Bug fixes requiring investigation
  • refactoring - Code quality improvements
3

Advanced Issues

For experienced contributors:Look for issues labeled:
  • architecture - System design changes
  • performance - Optimization work
  • security - Security enhancements

Sorting and Ordering

Choose the right sort order for your workflow:
curl "https://nest.owasp.org/api/v0/issues/?ordering=-created_at"
Use this to find the latest reported issues.

Finding Issues by Topic

Use the search functionality to find issues by keyword:

Frontend Issues

# Find React/UI related issues
curl "https://nest.owasp.org/api/v0/issues/?repository=Nest" \
  | jq '.results[] | select(.title | test("react|component|ui"; "i"))'

Backend Issues

# Find Django/API related issues
curl "https://nest.owasp.org/api/v0/issues/?repository=Nest" \
  | jq '.results[] | select(.title | test("django|api|database"; "i"))'

Documentation Issues

# Find documentation related issues
curl "https://nest.owasp.org/api/v0/issues/?repository=Nest" \
  | jq '.results[] | select(.title | test("docs|documentation|readme"; "i"))'

Working with Pagination

The API returns paginated results:
{
  "count": 156,
  "next": "https://nest.owasp.org/api/v0/issues/?page=2",
  "previous": null,
  "results": [
    // ... issues ...
  ]
}

Iterate Through All Pages

import requests

def get_all_issues(organization, state="open"):
    issues = []
    url = "https://nest.owasp.org/api/v0/issues/"
    params = {"organization": organization, "state": state}
    
    while url:
        response = requests.get(url, params=params)
        data = response.json()
        issues.extend(data["results"])
        url = data["next"]
        params = {}  # Next URL already includes params
    
    return issues

all_issues = get_all_issues("OWASP")

Best Practices for Issue Selection

Begin with good first issue labels to understand:
  • Project structure and conventions
  • Development workflow
  • Testing requirements
  • Code review process
Before starting work:
  1. Read the issue completely
  2. Check if someone is already assigned
  3. Comment asking to be assigned
  4. Wait for maintainer confirmation
PRs for issues you’re not assigned to will be automatically closed.
Look for clues about issue complexity:
  • Quick wins: Documentation, typos, simple bug fixes
  • Medium effort: UI improvements, basic features
  • Large effort: Architecture changes, complex features
Before claiming an issue:
  1. Read all comments and discussion
  2. Check if there are linked PRs or related issues
  3. Review any design documents or specifications
  4. Ask questions if anything is unclear

Example: Finding Your First Contribution

1

Browse Open Issues

curl "https://nest.owasp.org/api/v0/issues/?organization=OWASP&state=open&ordering=-created_at"
2

Filter by Repository

Choose a project that interests you:
curl "https://nest.owasp.org/api/v0/issues/?organization=OWASP&repository=Nest&state=open"
3

Review Issue Details

Get full details for an issue:
curl "https://nest.owasp.org/api/v0/issues/OWASP/Nest/1234"
4

Request Assignment

On GitHub:
  1. Navigate to the issue URL
  2. Comment: “I’d like to work on this issue. Could you please assign it to me?”
  3. Wait for maintainer response
5

Start Contributing

Once assigned, follow the Contributing Guide to set up your development environment and submit your PR.

Issue State Reference

open
string
Issue is currently open and accepting contributions
closed
string
Issue has been resolved or closed without a fix

Common Issue Labels

LabelDescriptionExperience Level
good first issueBeginner-friendly issueBeginner
bugSomething isn’t workingAll levels
enhancementNew feature or requestIntermediate
documentationDocumentation improvementsBeginner
help wantedExtra attention neededAll levels
priority: highUrgent issueExperienced
wontfixWill not be worked onN/A
Subscribe to repository notifications to get alerts when new issues are created!

Build docs developers (and LLMs) love