export-sentry-issue


Nameexport-sentry-issue JSON
Version 0.1.1 PyPI version JSON
download
home_pageNone
SummaryExport Sentry issues to plain text files for offline analysis and debugging
upload_time2025-10-06 08:24:07
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseMIT
keywords debugging error-tracking export sentry
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Sentry Issue Export Tool

[繁體中文版 (Traditional Chinese)](README.zh-TW.md)

Export Sentry issues to plain text files for offline analysis and debugging.

## Features

- Export complete error messages and stack traces
- Support both Self-hosted Sentry and SaaS version
- Include Request information, Breadcrumbs, and Context data
- Display code snippets and variable values
- Debug mode to inspect full data structure
- Batch export multiple issues

## Installation

### Requirements

- Python 3.10+
- `requests` library (automatically installed)

### Setup

```bash
pip install export-sentry-issue
```

## Getting Required Information

### 1. Get Auth Token

1. Log in to Sentry
2. Navigate to: **Settings** → **Account** → **API** → **Auth Tokens**
3. Click **Create New Token**
4. Set permissions (minimum required):
   - ✅ `event:read`
5. Copy the generated Token

### 2. Get Base URL

**SaaS version:**
```
https://sentry.io/api/0/projects/{org-slug}/{project-slug}/issues/
```

**Self-hosted version:**
```
https://your-sentry-domain.com/api/0/projects/{org-slug}/{project-slug}/issues/
```

**How to find org-slug and project-slug:**
- In Sentry UI, check the browser address bar
- Format: `https://sentry.io/organizations/{org-slug}/projects/{project-slug}/`

### 3. Get Issue IDs

- On the Issue detail page, the number at the end of the URL is the Issue ID
- Example: `https://sentry.io/organizations/my-org/issues/12345/` → Issue ID is `12345`

## Usage

### Recommended: Secure Configuration

For better security, save your credentials to a configuration file instead of passing them on the command line:

```bash
# Step 1: Initialize (one-time setup)
export-sentry-issue init

# You'll be prompted to enter:
# - Base URL: https://sentry.io/api/0/projects/my-org/my-project/issues/
# - Token: (hidden input, won't appear on screen)

# Step 2: Export issues using saved configuration
export-sentry-issue export --ids "12345,67890"

# Step 3: When done, revoke and delete the configuration
export-sentry-issue revoke
```

The configuration is saved to `~/.config/export-sentry-issue/config.json` with secure permissions (600).

**✓ Security Benefits:**
- Token never appears in shell history
- Token never appears in process list
- Token stored with secure file permissions (owner read/write only)
- Easy to revoke when no longer needed

### Alternative: Command-Line Parameters

You can still provide credentials via command-line for CI/CD or one-time usage:

```bash
export-sentry-issue export \
  --base-url "https://sentry.io/api/0/projects/my-org/my-project/issues/" \
  --ids "12345,67890" \
  --token "your_sentry_token"
```

**⚠️ Security Warning:** Using `--token` on the command line may expose your token in:
- Shell history (e.g., `~/.bash_history`)
- Process list (visible to other users via `ps`)
- Log files and monitoring tools

### Alternative: Environment Variable

```bash
export SENTRY_TOKEN="your_sentry_token"
export-sentry-issue export \
  --base-url "https://sentry.io/api/0/projects/my-org/my-project/issues/" \
  --ids "12345,67890"
```

### Specify Output File

```bash
export-sentry-issue export \
  --ids "12345" \
  --output "critical_errors.txt"
```

### Debug Mode

When data is incomplete, use debug mode to inspect the raw data structure:

```bash
export-sentry-issue export \
  --ids "12345" \
  --debug
```

Debug mode will:
- Show available data fields
- Mark missing information
- Save raw JSON files (`debug_issue_{id}.json`)

## Commands

### `init` - Initialize Configuration

Securely save your Sentry credentials for future use.

```bash
export-sentry-issue init
```

**Features:**
- Interactive prompts for base URL and token
- Token input is hidden (not displayed on screen)
- Saves to `~/.config/export-sentry-issue/config.json`
- Sets secure file permissions (600 - owner read/write only)
- Verifies token validity before saving
- Allows overwriting existing configuration

### `export` - Export Issues

Export Sentry issues to a plain text file.

```bash
# Using saved configuration
export-sentry-issue export --ids "12345,67890"

# With custom output file
export-sentry-issue export --ids "12345" --output "errors.txt"

# Override saved configuration
export-sentry-issue export \
  --base-url "https://sentry.io/api/0/projects/org/proj/issues/" \
  --token "custom_token" \
  --ids "12345"
```

**Parameters:**

| Parameter | Required | Description |
|-----------|----------|-------------|
| `--ids` | ✅ Yes | Issue ID list, comma-separated (e.g., `12345,67890,11111`) |
| `--base-url` | ❌ No* | Sentry API base URL |
| `--token` | ❌ No* | Sentry Auth Token |
| `--output` | ❌ No | Output file name (default: `sentry_issues_TIMESTAMP.txt`) |
| `--debug` | ❌ No | Enable debug mode, shows available fields and saves raw JSON |

*Required only if not configured via `init` command or environment variable

**Token Priority (highest to lowest):**
1. Command-line `--token` parameter
2. `SENTRY_TOKEN` environment variable
3. Saved configuration file (`~/.config/export-sentry-issue/config.json`)

### `revoke` - Revoke Token

Delete the saved configuration and get instructions to revoke the token from Sentry.

```bash
export-sentry-issue revoke
```

**Actions:**
- Displays current configuration details (masked token)
- Prompts for confirmation
- Deletes `~/.config/export-sentry-issue/config.json`
- Provides instructions to manually revoke token from Sentry UI

**Note:** You must manually revoke the token from Sentry:
1. Go to: **Settings** → **Account** → **API** → **Auth Tokens**
2. Find and delete the token

## Exported Content

The exported text file includes the following information:

### Basic Information
- Issue ID, Title, Status
- Occurrence count
- First/Last seen timestamps
- Permalink

### Detailed Information
- **Error Message**: Exception type and message
- **Stack Trace**: Complete call stack
  - File paths and line numbers
  - Function names
  - Code snippets
  - Variable values
- **Request Information**: URL, Method, Query String, Headers
- **Breadcrumbs**: Operation trail (including database queries)
- **User Information**: User ID, Email, IP
- **Context Information**: Browser, OS, Runtime
- **Tags**: Custom tags
- **Extra Information**: Additional debug data

## Examples

### Example 1: First Time Usage (Recommended)

```bash
# Initialize with your credentials
export-sentry-issue init
# Enter base URL: https://sentry.example.com/api/0/projects/my-org/web-app/issues/
# Enter token: (hidden input)

# Export a single issue
export-sentry-issue export --ids "349" --output "issue_349.txt"

# When done, clean up
export-sentry-issue revoke
```

### Example 2: Batch Export Multiple Issues

```bash
# Using saved configuration
export-sentry-issue export \
  --ids "349,350,351,352,353" \
  --output "batch_export.txt"
```

### Example 3: Self-hosted Sentry

```bash
# Initialize with self-hosted URL
export-sentry-issue init
# Enter base URL: https://your-sentry-domain.com/api/0/projects/mycompany/backend/issues/
# Enter token: (hidden input)

# Export issues
export-sentry-issue export --ids "100,101,102"
```

### Example 4: One-time Export (No Configuration)

```bash
# For CI/CD or one-time usage
export-sentry-issue export \
  --base-url "https://sentry.example.com/api/0/projects/my-org/web-app/issues/" \
  --ids "349" \
  --token "sntrys_xxxxxxxxxxxxx" \
  --output "issue_349.txt"
```

## Troubleshooting

### Error: 403 Forbidden

**Cause:** Insufficient token permissions

**Solution:**
1. Recreate Auth Token
2. Ensure the following permissions are checked:
   - `event:read`
3. Verify you are a member of the project

### Error: 404 Not Found

**Cause:** Incorrect Base URL or Issue ID

**Solution:**
1. Check if Base URL format is correct
2. Verify the Issue ID exists
3. Validate org and project names in Sentry UI

### Missing Breadcrumbs or Request Information

**Cause:** Sentry SDK features not enabled

**Solution:**

Enable `send_default_pii` in your application:

```python
import sentry_sdk

sentry_sdk.init(
    dsn="your-dsn",
    send_default_pii=True,  # Enable Request and User information
    traces_sample_rate=1.0,  # Enable performance tracing
)
```

**Use debug mode to inspect:**
```bash
export-sentry-issue export --base-url "..." --ids "123" --token "..." --debug
```

Check `debug_issue_123.json` to see what data is actually available.

### Token Expired

**Solution:**
1. Go to Sentry → Settings → API → Auth Tokens
2. Delete old Token
3. Create new Token
4. Update configuration: `export-sentry-issue init`

### Error: No token provided

**Cause:** No token found in command-line, environment variable, or configuration file

**Solution:**
- Run `export-sentry-issue init` to save your token, OR
- Use `--token` parameter, OR
- Set `SENTRY_TOKEN` environment variable

### Configuration file has insecure permissions

**Warning:** `Config file has insecure permissions!`

**Cause:** Configuration file is readable by other users

**Solution:**
```bash
chmod 600 ~/.config/export-sentry-issue/config.json
```

## Advanced Usage

### Tracking N+1 Query Issues

To effectively track N+1 queries, enable database query tracing in your application:

**Django Example:**
```python
import sentry_sdk
from sentry_sdk.integrations.django import DjangoIntegration

sentry_sdk.init(
    dsn="your-dsn",
    integrations=[DjangoIntegration()],
    traces_sample_rate=1.0,  # Track all transactions
    send_default_pii=True,
)
```

Breadcrumbs will show each database query and its execution time.

### Performance Analysis

Enable Performance Monitoring for more detailed performance data:

```python
sentry_sdk.init(
    dsn="your-dsn",
    traces_sample_rate=1.0,  # 100% sampling
    profiles_sample_rate=1.0,  # Enable profiling
)
```

### Automation Script

Wrap common commands in a shell script:

```bash
#!/bin/bash
# export_today_errors.sh

# Use saved configuration for security
export-sentry-issue export \
  --ids "$1" \
  --output "errors_$(date +%Y%m%d).txt"
```

Usage:
```bash
# First time: initialize configuration
export-sentry-issue init

# Then use the script
chmod +x export_today_errors.sh
./export_today_errors.sh "123,456,789"
```

### CI/CD Integration

For automated environments, use environment variables:

```yaml
# GitHub Actions example
- name: Export Sentry Issues
  env:
    SENTRY_TOKEN: ${{ secrets.SENTRY_TOKEN }}
  run: |
    export-sentry-issue export \
      --base-url "https://sentry.io/api/0/projects/org/proj/issues/" \
      --ids "123,456" \
      --output "issues.txt"
```

## FAQ

**Q: Can I export all unresolved issues?**

A: This tool requires specific Issue IDs. To batch export, first list all issues using Sentry API, then extract IDs:

```bash
curl -H "Authorization: Bearer TOKEN" \
  "https://sentry.io/api/0/projects/org/project/issues/?query=is:unresolved" \
  | jq '.[].id' | tr '\n' ','
```

**Q: Which Sentry versions are supported?**

A: Supports Sentry 9.0+ and all SaaS versions.

**Q: Will the exported data contain sensitive information?**

A: May include:
- User Email and IP addresses
- Request Headers (Authorization and Cookie are filtered)
- Code snippets and variable values

Please handle exported files securely.

**Q: Can I export to JSON or CSV?**

A: Currently only plain text format is supported. For JSON, use the debug mode generated JSON files.

**Q: Where is my token stored?**

A: When you run `init`, the token is stored in `~/.config/export-sentry-issue/config.json` with file permissions set to 600 (owner read/write only).

**Q: Is it safe to use the `init` command?**

A: Yes. The `init` command uses secure practices:
- Token input is hidden (uses `getpass`)
- File stored with restrictive permissions (600)
- Token is validated before saving
- Warns if file permissions become insecure

**Q: Can I use this in a CI/CD pipeline?**

A: Yes. For CI/CD, use environment variables instead of the config file:
```bash
export SENTRY_TOKEN="${{ secrets.SENTRY_TOKEN }}"
export-sentry-issue export --base-url "..." --ids "..."
```

## License

MIT License

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "export-sentry-issue",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "debugging, error-tracking, export, sentry",
    "author": null,
    "author_email": "Jian-Long Huang <contact@jlhuang.com>",
    "download_url": "https://files.pythonhosted.org/packages/7c/14/e8d221909598d74da1768e03d47830cc6c5453bfaa459cf7113661781fd0/export_sentry_issue-0.1.1.tar.gz",
    "platform": null,
    "description": "# Sentry Issue Export Tool\n\n[\u7e41\u9ad4\u4e2d\u6587\u7248 (Traditional Chinese)](README.zh-TW.md)\n\nExport Sentry issues to plain text files for offline analysis and debugging.\n\n## Features\n\n- Export complete error messages and stack traces\n- Support both Self-hosted Sentry and SaaS version\n- Include Request information, Breadcrumbs, and Context data\n- Display code snippets and variable values\n- Debug mode to inspect full data structure\n- Batch export multiple issues\n\n## Installation\n\n### Requirements\n\n- Python 3.10+\n- `requests` library (automatically installed)\n\n### Setup\n\n```bash\npip install export-sentry-issue\n```\n\n## Getting Required Information\n\n### 1. Get Auth Token\n\n1. Log in to Sentry\n2. Navigate to: **Settings** \u2192 **Account** \u2192 **API** \u2192 **Auth Tokens**\n3. Click **Create New Token**\n4. Set permissions (minimum required):\n   - \u2705 `event:read`\n5. Copy the generated Token\n\n### 2. Get Base URL\n\n**SaaS version:**\n```\nhttps://sentry.io/api/0/projects/{org-slug}/{project-slug}/issues/\n```\n\n**Self-hosted version:**\n```\nhttps://your-sentry-domain.com/api/0/projects/{org-slug}/{project-slug}/issues/\n```\n\n**How to find org-slug and project-slug:**\n- In Sentry UI, check the browser address bar\n- Format: `https://sentry.io/organizations/{org-slug}/projects/{project-slug}/`\n\n### 3. Get Issue IDs\n\n- On the Issue detail page, the number at the end of the URL is the Issue ID\n- Example: `https://sentry.io/organizations/my-org/issues/12345/` \u2192 Issue ID is `12345`\n\n## Usage\n\n### Recommended: Secure Configuration\n\nFor better security, save your credentials to a configuration file instead of passing them on the command line:\n\n```bash\n# Step 1: Initialize (one-time setup)\nexport-sentry-issue init\n\n# You'll be prompted to enter:\n# - Base URL: https://sentry.io/api/0/projects/my-org/my-project/issues/\n# - Token: (hidden input, won't appear on screen)\n\n# Step 2: Export issues using saved configuration\nexport-sentry-issue export --ids \"12345,67890\"\n\n# Step 3: When done, revoke and delete the configuration\nexport-sentry-issue revoke\n```\n\nThe configuration is saved to `~/.config/export-sentry-issue/config.json` with secure permissions (600).\n\n**\u2713 Security Benefits:**\n- Token never appears in shell history\n- Token never appears in process list\n- Token stored with secure file permissions (owner read/write only)\n- Easy to revoke when no longer needed\n\n### Alternative: Command-Line Parameters\n\nYou can still provide credentials via command-line for CI/CD or one-time usage:\n\n```bash\nexport-sentry-issue export \\\n  --base-url \"https://sentry.io/api/0/projects/my-org/my-project/issues/\" \\\n  --ids \"12345,67890\" \\\n  --token \"your_sentry_token\"\n```\n\n**\u26a0\ufe0f Security Warning:** Using `--token` on the command line may expose your token in:\n- Shell history (e.g., `~/.bash_history`)\n- Process list (visible to other users via `ps`)\n- Log files and monitoring tools\n\n### Alternative: Environment Variable\n\n```bash\nexport SENTRY_TOKEN=\"your_sentry_token\"\nexport-sentry-issue export \\\n  --base-url \"https://sentry.io/api/0/projects/my-org/my-project/issues/\" \\\n  --ids \"12345,67890\"\n```\n\n### Specify Output File\n\n```bash\nexport-sentry-issue export \\\n  --ids \"12345\" \\\n  --output \"critical_errors.txt\"\n```\n\n### Debug Mode\n\nWhen data is incomplete, use debug mode to inspect the raw data structure:\n\n```bash\nexport-sentry-issue export \\\n  --ids \"12345\" \\\n  --debug\n```\n\nDebug mode will:\n- Show available data fields\n- Mark missing information\n- Save raw JSON files (`debug_issue_{id}.json`)\n\n## Commands\n\n### `init` - Initialize Configuration\n\nSecurely save your Sentry credentials for future use.\n\n```bash\nexport-sentry-issue init\n```\n\n**Features:**\n- Interactive prompts for base URL and token\n- Token input is hidden (not displayed on screen)\n- Saves to `~/.config/export-sentry-issue/config.json`\n- Sets secure file permissions (600 - owner read/write only)\n- Verifies token validity before saving\n- Allows overwriting existing configuration\n\n### `export` - Export Issues\n\nExport Sentry issues to a plain text file.\n\n```bash\n# Using saved configuration\nexport-sentry-issue export --ids \"12345,67890\"\n\n# With custom output file\nexport-sentry-issue export --ids \"12345\" --output \"errors.txt\"\n\n# Override saved configuration\nexport-sentry-issue export \\\n  --base-url \"https://sentry.io/api/0/projects/org/proj/issues/\" \\\n  --token \"custom_token\" \\\n  --ids \"12345\"\n```\n\n**Parameters:**\n\n| Parameter | Required | Description |\n|-----------|----------|-------------|\n| `--ids` | \u2705 Yes | Issue ID list, comma-separated (e.g., `12345,67890,11111`) |\n| `--base-url` | \u274c No* | Sentry API base URL |\n| `--token` | \u274c No* | Sentry Auth Token |\n| `--output` | \u274c No | Output file name (default: `sentry_issues_TIMESTAMP.txt`) |\n| `--debug` | \u274c No | Enable debug mode, shows available fields and saves raw JSON |\n\n*Required only if not configured via `init` command or environment variable\n\n**Token Priority (highest to lowest):**\n1. Command-line `--token` parameter\n2. `SENTRY_TOKEN` environment variable\n3. Saved configuration file (`~/.config/export-sentry-issue/config.json`)\n\n### `revoke` - Revoke Token\n\nDelete the saved configuration and get instructions to revoke the token from Sentry.\n\n```bash\nexport-sentry-issue revoke\n```\n\n**Actions:**\n- Displays current configuration details (masked token)\n- Prompts for confirmation\n- Deletes `~/.config/export-sentry-issue/config.json`\n- Provides instructions to manually revoke token from Sentry UI\n\n**Note:** You must manually revoke the token from Sentry:\n1. Go to: **Settings** \u2192 **Account** \u2192 **API** \u2192 **Auth Tokens**\n2. Find and delete the token\n\n## Exported Content\n\nThe exported text file includes the following information:\n\n### Basic Information\n- Issue ID, Title, Status\n- Occurrence count\n- First/Last seen timestamps\n- Permalink\n\n### Detailed Information\n- **Error Message**: Exception type and message\n- **Stack Trace**: Complete call stack\n  - File paths and line numbers\n  - Function names\n  - Code snippets\n  - Variable values\n- **Request Information**: URL, Method, Query String, Headers\n- **Breadcrumbs**: Operation trail (including database queries)\n- **User Information**: User ID, Email, IP\n- **Context Information**: Browser, OS, Runtime\n- **Tags**: Custom tags\n- **Extra Information**: Additional debug data\n\n## Examples\n\n### Example 1: First Time Usage (Recommended)\n\n```bash\n# Initialize with your credentials\nexport-sentry-issue init\n# Enter base URL: https://sentry.example.com/api/0/projects/my-org/web-app/issues/\n# Enter token: (hidden input)\n\n# Export a single issue\nexport-sentry-issue export --ids \"349\" --output \"issue_349.txt\"\n\n# When done, clean up\nexport-sentry-issue revoke\n```\n\n### Example 2: Batch Export Multiple Issues\n\n```bash\n# Using saved configuration\nexport-sentry-issue export \\\n  --ids \"349,350,351,352,353\" \\\n  --output \"batch_export.txt\"\n```\n\n### Example 3: Self-hosted Sentry\n\n```bash\n# Initialize with self-hosted URL\nexport-sentry-issue init\n# Enter base URL: https://your-sentry-domain.com/api/0/projects/mycompany/backend/issues/\n# Enter token: (hidden input)\n\n# Export issues\nexport-sentry-issue export --ids \"100,101,102\"\n```\n\n### Example 4: One-time Export (No Configuration)\n\n```bash\n# For CI/CD or one-time usage\nexport-sentry-issue export \\\n  --base-url \"https://sentry.example.com/api/0/projects/my-org/web-app/issues/\" \\\n  --ids \"349\" \\\n  --token \"sntrys_xxxxxxxxxxxxx\" \\\n  --output \"issue_349.txt\"\n```\n\n## Troubleshooting\n\n### Error: 403 Forbidden\n\n**Cause:** Insufficient token permissions\n\n**Solution:**\n1. Recreate Auth Token\n2. Ensure the following permissions are checked:\n   - `event:read`\n3. Verify you are a member of the project\n\n### Error: 404 Not Found\n\n**Cause:** Incorrect Base URL or Issue ID\n\n**Solution:**\n1. Check if Base URL format is correct\n2. Verify the Issue ID exists\n3. Validate org and project names in Sentry UI\n\n### Missing Breadcrumbs or Request Information\n\n**Cause:** Sentry SDK features not enabled\n\n**Solution:**\n\nEnable `send_default_pii` in your application:\n\n```python\nimport sentry_sdk\n\nsentry_sdk.init(\n    dsn=\"your-dsn\",\n    send_default_pii=True,  # Enable Request and User information\n    traces_sample_rate=1.0,  # Enable performance tracing\n)\n```\n\n**Use debug mode to inspect:**\n```bash\nexport-sentry-issue export --base-url \"...\" --ids \"123\" --token \"...\" --debug\n```\n\nCheck `debug_issue_123.json` to see what data is actually available.\n\n### Token Expired\n\n**Solution:**\n1. Go to Sentry \u2192 Settings \u2192 API \u2192 Auth Tokens\n2. Delete old Token\n3. Create new Token\n4. Update configuration: `export-sentry-issue init`\n\n### Error: No token provided\n\n**Cause:** No token found in command-line, environment variable, or configuration file\n\n**Solution:**\n- Run `export-sentry-issue init` to save your token, OR\n- Use `--token` parameter, OR\n- Set `SENTRY_TOKEN` environment variable\n\n### Configuration file has insecure permissions\n\n**Warning:** `Config file has insecure permissions!`\n\n**Cause:** Configuration file is readable by other users\n\n**Solution:**\n```bash\nchmod 600 ~/.config/export-sentry-issue/config.json\n```\n\n## Advanced Usage\n\n### Tracking N+1 Query Issues\n\nTo effectively track N+1 queries, enable database query tracing in your application:\n\n**Django Example:**\n```python\nimport sentry_sdk\nfrom sentry_sdk.integrations.django import DjangoIntegration\n\nsentry_sdk.init(\n    dsn=\"your-dsn\",\n    integrations=[DjangoIntegration()],\n    traces_sample_rate=1.0,  # Track all transactions\n    send_default_pii=True,\n)\n```\n\nBreadcrumbs will show each database query and its execution time.\n\n### Performance Analysis\n\nEnable Performance Monitoring for more detailed performance data:\n\n```python\nsentry_sdk.init(\n    dsn=\"your-dsn\",\n    traces_sample_rate=1.0,  # 100% sampling\n    profiles_sample_rate=1.0,  # Enable profiling\n)\n```\n\n### Automation Script\n\nWrap common commands in a shell script:\n\n```bash\n#!/bin/bash\n# export_today_errors.sh\n\n# Use saved configuration for security\nexport-sentry-issue export \\\n  --ids \"$1\" \\\n  --output \"errors_$(date +%Y%m%d).txt\"\n```\n\nUsage:\n```bash\n# First time: initialize configuration\nexport-sentry-issue init\n\n# Then use the script\nchmod +x export_today_errors.sh\n./export_today_errors.sh \"123,456,789\"\n```\n\n### CI/CD Integration\n\nFor automated environments, use environment variables:\n\n```yaml\n# GitHub Actions example\n- name: Export Sentry Issues\n  env:\n    SENTRY_TOKEN: ${{ secrets.SENTRY_TOKEN }}\n  run: |\n    export-sentry-issue export \\\n      --base-url \"https://sentry.io/api/0/projects/org/proj/issues/\" \\\n      --ids \"123,456\" \\\n      --output \"issues.txt\"\n```\n\n## FAQ\n\n**Q: Can I export all unresolved issues?**\n\nA: This tool requires specific Issue IDs. To batch export, first list all issues using Sentry API, then extract IDs:\n\n```bash\ncurl -H \"Authorization: Bearer TOKEN\" \\\n  \"https://sentry.io/api/0/projects/org/project/issues/?query=is:unresolved\" \\\n  | jq '.[].id' | tr '\\n' ','\n```\n\n**Q: Which Sentry versions are supported?**\n\nA: Supports Sentry 9.0+ and all SaaS versions.\n\n**Q: Will the exported data contain sensitive information?**\n\nA: May include:\n- User Email and IP addresses\n- Request Headers (Authorization and Cookie are filtered)\n- Code snippets and variable values\n\nPlease handle exported files securely.\n\n**Q: Can I export to JSON or CSV?**\n\nA: Currently only plain text format is supported. For JSON, use the debug mode generated JSON files.\n\n**Q: Where is my token stored?**\n\nA: When you run `init`, the token is stored in `~/.config/export-sentry-issue/config.json` with file permissions set to 600 (owner read/write only).\n\n**Q: Is it safe to use the `init` command?**\n\nA: Yes. The `init` command uses secure practices:\n- Token input is hidden (uses `getpass`)\n- File stored with restrictive permissions (600)\n- Token is validated before saving\n- Warns if file permissions become insecure\n\n**Q: Can I use this in a CI/CD pipeline?**\n\nA: Yes. For CI/CD, use environment variables instead of the config file:\n```bash\nexport SENTRY_TOKEN=\"${{ secrets.SENTRY_TOKEN }}\"\nexport-sentry-issue export --base-url \"...\" --ids \"...\"\n```\n\n## License\n\nMIT License\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Export Sentry issues to plain text files for offline analysis and debugging",
    "version": "0.1.1",
    "project_urls": {
        "Documentation": "https://github.com/jlhg/export-sentry-issue#readme",
        "Issues": "https://github.com/jlhg/export-sentry-issue/issues",
        "Source": "https://github.com/jlhg/export-sentry-issue"
    },
    "split_keywords": [
        "debugging",
        " error-tracking",
        " export",
        " sentry"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fd0762439830091465aef23c324e5af95af939b52200b47300aaa72cfaab5784",
                "md5": "5213b2bf3016b232cacf04de74cdbf23",
                "sha256": "c545fb0e231437baa12209538485bbef96019285da1d2ae49f0a767cd8ff7b8e"
            },
            "downloads": -1,
            "filename": "export_sentry_issue-0.1.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "5213b2bf3016b232cacf04de74cdbf23",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 15115,
            "upload_time": "2025-10-06T08:23:34",
            "upload_time_iso_8601": "2025-10-06T08:23:34.373752Z",
            "url": "https://files.pythonhosted.org/packages/fd/07/62439830091465aef23c324e5af95af939b52200b47300aaa72cfaab5784/export_sentry_issue-0.1.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7c14e8d221909598d74da1768e03d47830cc6c5453bfaa459cf7113661781fd0",
                "md5": "13ed441fc8edf51e75fa4ec236d7cf80",
                "sha256": "e5f4fdad498e1d84450d6a0036defb2c81f6b6c5b5a301c48087920b5b681f15"
            },
            "downloads": -1,
            "filename": "export_sentry_issue-0.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "13ed441fc8edf51e75fa4ec236d7cf80",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 17063,
            "upload_time": "2025-10-06T08:24:07",
            "upload_time_iso_8601": "2025-10-06T08:24:07.568073Z",
            "url": "https://files.pythonhosted.org/packages/7c/14/e8d221909598d74da1768e03d47830cc6c5453bfaa459cf7113661781fd0/export_sentry_issue-0.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-06 08:24:07",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jlhg",
    "github_project": "export-sentry-issue#readme",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "export-sentry-issue"
}
        
Elapsed time: 1.91480s