diff --git a/api-reference/cost-estimations/create-cost-estimation.mdx b/api-reference/cost-estimations/create-cost-estimation.mdx index 66f58c9..82c859c 100644 --- a/api-reference/cost-estimations/create-cost-estimation.mdx +++ b/api-reference/cost-estimations/create-cost-estimation.mdx @@ -1,6 +1,6 @@ --- title: "Create cost estimation" -api: "POST /cost-estimations" +openapi: "POST /cost-estimations" description: "Estimate the credit cost of scanning one or more repositories before starting a scan." --- @@ -12,86 +12,6 @@ Cost estimations run asynchronously. The `POST` returns a record in `pending` or **Scope required**: `write` -## Request - -```bash -curl -X POST https://api.hacktron.ai/v1/cost-estimations \ - -H "X-Api-Key: $HACKTRON_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ - "name": "nightly-estimate", - "repos": [ - { - "source": "connected", - "repo_url": "https://github.com/acme/backend", - "branch": "main" - } - ] - }' -``` - -### Body - -| Field | Type | Required | Description | -| ------- | -------- | -------- | ------------------------------------------------------------------------------------------------ | -| `name` | string | No | Friendly label for this estimation. Max 255 chars. | -| `repos` | object[] | Yes | 1–20 repositories to estimate. Each entry is one of the repo shapes below, identified by `source`. | - -### Repo shapes - -Repositories use a discriminated union on the `source` field. - -#### `connected` — a repository already synced to Hacktron via GitHub, GitLab, or Bitbucket - -| Field | Type | Required | Description | -| ------------------------ | ------ | -------- | ---------------------------------------------------- | -| `source` | `"connected"` | Yes | Discriminator. | -| `repo_url` | string | Yes | Full HTTPS URL of the repository. Max 500 chars. | -| `branch` | string | Yes | Branch to estimate. Max 255 chars. | -| `github_installation_id` | int | No | Specific GitHub App installation ID to use. | - -#### `public` — a public git repository Hacktron can clone anonymously - -| Field | Type | Required | Description | -| ---------- | ------ | -------- | ----------------------------------------- | -| `source` | `"public"` | Yes | Discriminator. | -| `repo_url` | string | Yes | Full HTTPS URL. Max 500 chars. | -| `branch` | string | Yes | Branch to estimate. Max 255 chars. | - -#### `upload` — a previously uploaded archive - -| Field | Type | Required | Description | -| ------------ | ------ | -------- | ----------------------------------- | -| `source` | `"upload"` | Yes | Discriminator. | -| `archive_id` | UUID | Yes | ID of a scan archive you uploaded. | - -## Response - -`201 Created` — the estimation is queued. Poll `GET /cost-estimations/{id}` until `status` reaches a terminal value. - -```json -{ - "id": "b4f5c6a1-2d3e-4f56-9a8b-0c1d2e3f4a5b", - "organization_id": "f336d0bc-b841-465b-8045-024475c079dd", - "user_id": "e5a6d7c8-9b0a-1c2d-3e4f-5a6b7c8d9e0f", - "name": "nightly-estimate", - "task_id": "cost_est_acme-backend_1712345678", - "status": "pending", - "repos": [ - { - "source": "connected", - "repo_url": "https://github.com/acme/backend", - "branch": "main" - } - ], - "total_credits": null, - "repo_results": null, - "error": null, - "created_at": "2026-04-13T12:00:00.000Z", - "updated_at": "2026-04-13T12:00:00.000Z" -} -``` - ### Terminal statuses | Status | Meaning | @@ -101,8 +21,3 @@ Repositories use a discriminated union on the `source` field. | `failed` | The whole estimation failed. `error` contains a message. | Once in a terminal state, an estimation is immutable. Pass its `id` as `cost_estimation_id` to [`POST /scans`](/api-reference/scans/create-scan) to start the scan. The scan must use repositories and branches that were included in the estimate. - -## Errors - -- `400` — invalid or missing fields (for example, more than 20 repos, invalid `source`, or missing `repo_url`). -- `401` / `403` — authentication or scope failure. diff --git a/api-reference/cost-estimations/get-cost-estimation.mdx b/api-reference/cost-estimations/get-cost-estimation.mdx index a50b001..ee899e3 100644 --- a/api-reference/cost-estimations/get-cost-estimation.mdx +++ b/api-reference/cost-estimations/get-cost-estimation.mdx @@ -1,6 +1,6 @@ --- title: "Get cost estimation" -api: "GET /cost-estimations/{id}" +openapi: "GET /cost-estimations/{id}" description: "Fetch a cost estimation by ID." --- @@ -9,63 +9,3 @@ Returns a single cost estimation. Poll this endpoint on a pending estimation unt **Scope required**: `read` - -## Request - -```bash -curl "https://api.hacktron.ai/v1/cost-estimations/b4f5c6a1-2d3e-4f56-9a8b-0c1d2e3f4a5b" \ - -H "X-Api-Key: $HACKTRON_API_KEY" -``` - -### Path parameters - -| Parameter | Type | Description | -| --------- | ---- | --------------------------------- | -| `id` | UUID | The cost estimation UUID. | - -## Response - -`200 OK` — see [Create cost estimation](/api-reference/cost-estimations/create-cost-estimation) for the response schema. - -```json -{ - "id": "b4f5c6a1-2d3e-4f56-9a8b-0c1d2e3f4a5b", - "organization_id": "f336d0bc-b841-465b-8045-024475c079dd", - "user_id": "e5a6d7c8-9b0a-1c2d-3e4f-5a6b7c8d9e0f", - "name": "nightly-estimate", - "task_id": "cost_est_acme-backend_1712345678", - "status": "completed", - "repos": [ - { - "source": "connected", - "repo_url": "https://github.com/acme/backend", - "branch": "main", - "commit_sha": "abc123def456" - } - ], - "total_credits": 4200, - "repo_results": [ - { - "repo_url": "https://github.com/acme/backend", - "branch": "main", - "commit_sha": "abc123def456", - "status": "completed", - "from_cache": false, - "credits": 4200, - "applications": [ - { - "app_name": "backend-api", - "app_root_path": "apps/api", - "architecture": "NestJS REST API with PostgreSQL" - } - ] - } - ], - "created_at": "2026-04-13T12:00:00.000Z", - "updated_at": "2026-04-13T12:03:21.000Z" -} -``` - -## Errors - -- `404` — estimation not found or not visible to your organization. diff --git a/api-reference/cost-estimations/list-cost-estimations.mdx b/api-reference/cost-estimations/list-cost-estimations.mdx index 1d60b4b..3b3aa86 100644 --- a/api-reference/cost-estimations/list-cost-estimations.mdx +++ b/api-reference/cost-estimations/list-cost-estimations.mdx @@ -1,6 +1,6 @@ --- title: "List cost estimations" -api: "GET /cost-estimations" +openapi: "GET /cost-estimations" description: "List cost estimations for your organization." --- @@ -13,74 +13,3 @@ Returns cost estimations for the organization, most recent first. Use offset-bas Unlike most list endpoints, cost estimations use **offset‑based pagination** (`limit` + `offset`) instead of `page` + `limit`. See [Pagination, filtering & sorting](/api-reference/pagination-filtering) for the general conventions. - -## Request - -```bash -curl "https://api.hacktron.ai/v1/cost-estimations?limit=20&offset=0" \ - -H "X-Api-Key: $HACKTRON_API_KEY" -``` - -### Query parameters - -| Parameter | Type | Default | Max | Description | -| --------- | ------- | ------- | --- | ------------------------------------ | -| `limit` | integer | `50` | `100` | Number of items to return. | -| `offset` | integer | `0` | — | Number of items to skip. | - -## Response - -`200 OK` - -```json -{ - "data": [ - { - "id": "b4f5c6a1-2d3e-4f56-9a8b-0c1d2e3f4a5b", - "organization_id": "f336d0bc-b841-465b-8045-024475c079dd", - "user_id": "e5a6d7c8-9b0a-1c2d-3e4f-5a6b7c8d9e0f", - "name": "nightly-estimate", - "task_id": "cost_est_acme-backend_1712345678", - "status": "completed", - "repos": [ - { - "source": "connected", - "repo_url": "https://github.com/acme/backend", - "branch": "main", - "commit_sha": "abc123def456" - } - ], - "total_credits": 4200, - "repo_results": [ - { - "repo_url": "https://github.com/acme/backend", - "branch": "main", - "commit_sha": "abc123def456", - "status": "completed", - "from_cache": false, - "credits": 4200, - "applications": [ - { - "app_name": "backend-api", - "app_root_path": "apps/api", - "architecture": "NestJS REST API with PostgreSQL" - } - ] - } - ], - "created_at": "2026-04-13T12:00:00.000Z", - "updated_at": "2026-04-13T12:03:21.000Z" - } - ], - "total": 42 -} -``` - -### Fields - -| Field | Type | Description | -| ------- | -------- | --------------------------------------------------- | -| `data` | object[] | The estimations on this page. | -| `total` | integer | Total number of estimations in the organization. | - -See [Create cost estimation](/api-reference/cost-estimations/create-cost-estimation) for the full estimation object shape. diff --git a/api-reference/findings/add-finding-comment.mdx b/api-reference/findings/add-finding-comment.mdx index 5df6d39..46ef0d4 100644 --- a/api-reference/findings/add-finding-comment.mdx +++ b/api-reference/findings/add-finding-comment.mdx @@ -1,6 +1,6 @@ --- title: "Add finding comment" -api: "POST /findings/{id}/comments" +openapi: "POST /findings/{id}/comments" description: "Append a comment to a finding's triage thread." --- @@ -9,43 +9,3 @@ Appends a comment to a finding's triage thread. Comments appear in the dashboard **Scope required**: `write` - -## Request - -```bash -curl -X POST https://api.hacktron.ai/v1/findings/d1e2f3a4-b5c6-7890-1234-567890abcdef/comments \ - -H "X-Api-Key: $HACKTRON_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ - "comment": "Confirmed reproducible on staging. Opened JIRA-4821." - }' -``` - -### Path parameters - -| Parameter | Type | Description | -| --------- | ---- | ----------------- | -| `id` | UUID | Finding UUID. | - -### Body - -| Field | Type | Required | Description | -| --------- | ------ | -------- | ------------------------------------------ | -| `comment` | string | Yes | Comment text. 1–4000 characters. | - -## Response - -`201 Created` - -```json -{ - "comment_id": "c0ffee01-feed-4bad-badc-0ffee0000002" -} -``` - -The comment is tagged with `source: "api"` and attributed to the API key's creator. It then appears in the finding's [`triage_thread`](/api-reference/findings/get-finding). - -## Errors - -- `400` — comment missing or exceeds 4000 characters. -- `404` — finding not found or not visible to your organization. diff --git a/api-reference/findings/get-finding.mdx b/api-reference/findings/get-finding.mdx index a930ad8..dcc0574 100644 --- a/api-reference/findings/get-finding.mdx +++ b/api-reference/findings/get-finding.mdx @@ -1,6 +1,6 @@ --- title: "Get finding" -api: "GET /findings/{id}" +openapi: "GET /findings/{id}" description: "Fetch a single finding with full triage context." --- @@ -9,79 +9,3 @@ Returns a single finding along with its triage thread, occurrence count, reposit **Scope required**: `read` - -## Request - -```bash -curl "https://api.hacktron.ai/v1/findings/d1e2f3a4-b5c6-7890-1234-567890abcdef" \ - -H "X-Api-Key: $HACKTRON_API_KEY" -``` - -### Path parameters - -| Parameter | Type | Description | -| --------- | ---- | ----------------- | -| `id` | UUID | Finding UUID. | - -## Response - -`200 OK` — all the fields from [List findings](/api-reference/findings/list-findings#finding-fields), plus: - -```json -{ - "id": "d1e2f3a4-b5c6-7890-1234-567890abcdef", - "title": "SQL injection in /api/v1/checkout", - "category": "injection", - "severity": "critical", - "state": "open", - "description": "...", - "affected_file": "apps/api/src/checkout/checkout.service.ts", - "affected_code": "...", - "proof_of_concept": "...", - "tags": ["injection", "sql"], - "scan_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "found_at": "2026-04-13T12:15:00.000Z", - "updated_at": "2026-04-13T12:20:00.000Z", - "triage_thread": [ - { - "id": "c0ffee01-feed-4bad-badc-0ffee0000001", - "reaction": null, - "comment": "Confirmed reproducible on staging — cart_id=1' OR '1'='1 returns 200 with full row dump.", - "user_id": "e5a6d7c8-9b0a-1c2d-3e4f-5a6b7c8d9e0f", - "username": "alex", - "source": "api", - "timestamp": "2026-04-13T12:22:00.000Z" - } - ], - "mermaid_trace": "graph TD\n A[Request] --> B[checkout.service.ts]\n B --> C[(Postgres)]", - "occurrence_count": 1, - "repo_url": "https://github.com/acme/backend", - "scan_type": "full" -} -``` - -### Extra fields - -| Field | Type | Description | -| ------------------ | --------------- | --------------------------------------------------------------------------------------------- | -| `triage_thread` | object[] | Comments and reactions on the finding, aggregated across GitHub, Slack, the web app, and the API. | -| `mermaid_trace` | string\|null | Mermaid diagram source for the vulnerability trace. `null` when Hacktron did not produce one. | -| `occurrence_count` | integer | Number of scans in which this finding has appeared. Minimum `1`. | -| `repo_url` | string\|null | Primary repository URL of the parent scan. | -| `scan_type` | enum\|null | `pr` or `full`. | - -### Triage thread entry - -| Field | Type | Description | -| ----------- | ------------- | ------------------------------------------------------------------------ | -| `id` | UUID | Entry identifier. | -| `reaction` | string\|null | Triage reaction. One of the finding states (`open`, `true_positive`, `false_positive`, `accepted_risk`, `resolved`). `null` for comment-only entries. | -| `comment` | string\|null | Comment text. `null` for reaction-only entries. | -| `user_id` | UUID | Author user ID. | -| `username` | string | Author display name. | -| `source` | enum | Origin of the entry. One of `github`, `slack`, `web`, `api`, `agent`. | -| `timestamp` | string | ISO 8601 timestamp. | - -## Errors - -- `404` — finding not found, still in verification, or not visible to your organization. diff --git a/api-reference/findings/list-findings.mdx b/api-reference/findings/list-findings.mdx index c95dd67..c89aee2 100644 --- a/api-reference/findings/list-findings.mdx +++ b/api-reference/findings/list-findings.mdx @@ -1,6 +1,6 @@ --- title: "List findings" -api: "GET /findings" +openapi: "openapi.json GET /findings" description: "List findings across all scans in your organization." --- @@ -9,73 +9,3 @@ Returns findings across every scan in the organization, with filtering and sorti **Scope required**: `read` - -## Request - -```bash -curl "https://api.hacktron.ai/v1/findings?severity=critical&state=open&sort_by=found_at&sort_order=DESC&page=1&limit=50" \ - -H "X-Api-Key: $HACKTRON_API_KEY" -``` - -### Query parameters - -| Parameter | Type | Default | Description | -| ------------ | ------- | ---------- | ------------------------------------------------------------------------------------------------------- | -| `page` | integer | `1` | 1‑based page number. | -| `limit` | integer | `15` | Items per page. Max `100`. | -| `severity` | enum | — | Filter by severity: `critical`, `high`, `medium`, `low`, `info`. | -| `state` | enum | — | Filter by state: `open`, `true_positive`, `false_positive`, `accepted_risk`, `resolved`. | -| `scan_id` | UUID | — | Only return findings produced by this scan. The scan must exist in the organization. | -| `sort_by` | enum | `found_at` | One of `found_at`, `updated_at`, `severity`. | -| `sort_order` | enum | `DESC` | `ASC` or `DESC`. | - -## Response - -`200 OK` - -```json -{ - "data": [ - { - "id": "d1e2f3a4-b5c6-7890-1234-567890abcdef", - "title": "SQL injection in /api/v1/checkout", - "category": "injection", - "severity": "critical", - "state": "open", - "description": "User-supplied cart ID is concatenated into a SQL query...", - "affected_file": "apps/api/src/checkout/checkout.service.ts", - "affected_code": "const rows = await conn.query(`SELECT * FROM carts WHERE id = '${cartId}'`);", - "proof_of_concept": "POST /api/v1/checkout with cart_id=1' OR '1'='1", - "tags": ["injection", "sql"], - "scan_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "found_at": "2026-04-13T12:15:00.000Z", - "updated_at": "2026-04-13T12:20:00.000Z" - } - ], - "total": 284, - "page": 1, - "limit": 50 -} -``` - -### Finding fields - -| Field | Type | Description | -| ------------------ | ------------- | --------------------------------------------------------------------------- | -| `id` | UUID | Finding identifier. | -| `title` | string | Short summary. | -| `category` | string | Vulnerability category (for example `injection`, `auth`, `xss`). | -| `severity` | enum | `critical`, `high`, `medium`, `low`, `info`. | -| `state` | enum | `open`, `true_positive`, `false_positive`, `accepted_risk`, `resolved`. | -| `description` | string | Long‑form description of the issue. | -| `affected_file` | string | Path relative to the repository root. | -| `affected_code` | string | Code snippet of the affected location. | -| `proof_of_concept` | string\|null | Reproduction steps or payload. `null` if none was captured. | -| `tags` | string[] | Free‑form tags. | -| `scan_id` | UUID\|null | Scan that produced this finding. | -| `found_at` | string | ISO 8601 timestamp when the finding was first discovered. | -| `updated_at` | string | ISO 8601 timestamp of the most recent state or severity change. | - -## Errors - -- `404` — `scan_id` was provided but the scan does not exist or is not visible. diff --git a/api-reference/findings/update-finding.mdx b/api-reference/findings/update-finding.mdx index f629ad8..f83ab69 100644 --- a/api-reference/findings/update-finding.mdx +++ b/api-reference/findings/update-finding.mdx @@ -1,6 +1,6 @@ --- title: "Update finding" -api: "PATCH /findings/{id}" +openapi: "PATCH /findings/{id}" description: "Change a finding's state, severity, and/or duplicate link." --- @@ -9,64 +9,3 @@ Updates the `state`, `severity`, `duplicate_of`, or any combination of them on a **Scope required**: `write` - -## Request - -```bash -curl -X PATCH https://api.hacktron.ai/v1/findings/d1e2f3a4-b5c6-7890-1234-567890abcdef \ - -H "X-Api-Key: $HACKTRON_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ - "state": "true_positive", - "severity": "critical", - "duplicate_of": null, - "reason": "Confirmed reproducible against staging. Raising from high to critical." - }' -``` - -### Path parameters - -| Parameter | Type | Description | -| --------- | ---- | ----------------- | -| `id` | UUID | Finding UUID. | - -### Body - -At least one of `state`, `severity`, or `duplicate_of` must be provided. Providing none of them returns `400`. - -| Field | Type | Description | -| ----------------- | ------ | ------------------------------------------------------------------------------------------------------------ | -| `state` | enum | New state. One of `open`, `true_positive`, `false_positive`, `accepted_risk`, `resolved`. | -| `severity` | enum | New severity. One of `critical`, `high`, `medium`, `low`, `info`. | -| `duplicate_of` | UUID\|null | Canonical finding UUID to mark this finding as a duplicate of, or `null` to unmark it. The canonical finding must be in the same repository. | -| `state_reason` | string | Reason for the state change. Max 2000 chars. Falls back to `reason` if omitted. | -| `severity_reason` | string | Reason for the severity change. Max 2000 chars. Falls back to `reason` if omitted. | -| `reason` | string | Shorthand applied to both state and severity when their specific reason fields are omitted. Max 2000 chars. | - - - Pass `reason` alone when the same justification applies to both state and severity. Use `state_reason` and `severity_reason` only when the justifications differ. - - - - Setting `duplicate_of` to another finding UUID closes this finding as a duplicate. Setting `duplicate_of` to `null` removes the duplicate link and reopens the finding. - - -## Response - -`200 OK` - -```json -{ - "id": "d1e2f3a4-b5c6-7890-1234-567890abcdef", - "state": "true_positive", - "severity": "critical", - "duplicate_of": null -} -``` - -The response contains only the updated state, severity, and duplicate link. Fetch the full finding via [`GET /findings/{id}`](/api-reference/findings/get-finding) for the remaining fields. - -## Errors - -- `400` — none of `state`, `severity`, or `duplicate_of` provided, or field validation failed. -- `404` — finding not found, still in verification, or not visible to your organization. diff --git a/api-reference/scans/create-scan.mdx b/api-reference/scans/create-scan.mdx index 0ac77fa..f475aa2 100644 --- a/api-reference/scans/create-scan.mdx +++ b/api-reference/scans/create-scan.mdx @@ -1,6 +1,6 @@ --- title: "Trigger a Whitebox Scan" -api: "POST /scans" +openapi: "POST /scans" description: "Start a Whitebox Scan against one or more repositories." --- @@ -29,81 +29,6 @@ immediately with a scan `id` for polling. change repositories, archives, or branches, create a new estimate first. -## Request - -```bash -curl -X POST https://api.hacktron.ai/v1/scans \ - -H "X-Api-Key: $HACKTRON_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ - "cost_estimation_id": "b4f5c6a1-2d3e-4f56-9a8b-0c1d2e3f4a5b", - "repos": [ - { - "url": "https://github.com/acme/backend", - "branch": "main", - "source": "connected" - } - ], - "target_urls": ["https://staging.acme.com"], - "auth_instructions": "Use test account test@acme.com / hunter2", - "custom_context": "Focus on the payment flow under /api/v1/checkout" - }' -``` - -### Body - -| Field | Type | Required | Description | -| ---------------------- | -------- | -------- | ----------------------------------------------------------------------------------------------------------------------- | -| `cost_estimation_id` | UUID | Yes | ID of a completed or partial cost estimation with a positive `total_credits` value. | -| `repos` | object[] | Yes | At least one repository. The first is the primary target; additional entries are scanned as related repositories. | -| `target_urls` | string[] | No | Public live URLs to include in the assessment, such as staging or production URLs. Private and internal network URLs are rejected. | -| `auth_instructions` | string | No | Credentials or steps Hacktron should use to authenticate. Max 2000 chars. | -| `custom_context` | string | No | Additional scope, focus areas, exclusions, or testing notes. Max 2000 chars. | -| `context_document_ids` | UUID[] | No | IDs of context documents to attach to the scan. | - -### Repo object - -| Field | Type | Required | Description | -| -------- | ------ | -------- | ----------------------------------------------------------------------- | -| `url` | string | Yes | HTTPS URL of the repository. Must match a repository in the cost estimation. | -| `branch` | string | Yes | Branch to scan. Must match the branch used in the cost estimation. | -| `source` | enum | No | `connected`, `public`, or `upload`. Defaults to `connected`. | - - - `POST /scans` accepts the REST API repo shape shown above. Cost estimations - use `repo_url`; scan creation uses `url`. - - -## Response - -`201 Created` - -```json -{ - "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "task_id": "web_scan_1712345678", - "status": "pending", - "message": "Scan started" -} -``` - -| Field | Type | Description | -| --------- | ------ | ------------------------------------------------------------- | -| `id` | UUID | Scan UUID. Use this to fetch status, details, and findings. | -| `task_id` | string | Internal task identifier (also visible in the dashboard). | -| `status` | string | Always `pending` at creation time. | -| `message` | string | Status message suitable for display. | - -## Errors - -- `400` — missing `repos`, invalid fields, cost estimate not ready, zero-credit - estimate, repo not included in the estimate, branch mismatch, private target - URL, or a scan that already claimed the estimate. -- `401` / `403` — authentication or scope failure. -- `402` — insufficient Whitebox Scan credits. Top up from - [Credits and billing](/white-box-pentest/billing) in the dashboard. -- `404` — cost estimation not found or not visible to your organization. - ## Next steps - Poll [`GET /scans/{id}/status`](/api-reference/scans/get-scan-status) until status is `completed`. diff --git a/api-reference/scans/export-scan-findings.mdx b/api-reference/scans/export-scan-findings.mdx index 4b9c9e7..3d80799 100644 --- a/api-reference/scans/export-scan-findings.mdx +++ b/api-reference/scans/export-scan-findings.mdx @@ -1,6 +1,6 @@ --- title: "Export scan findings" -api: "GET /scans/{id}/findings/export" +openapi: "GET /scans/{id}/findings/export" description: "Download all findings for a scan as JSON, CSV, or SARIF." --- @@ -10,37 +10,13 @@ Returns every approved finding for a scan in one of three formats. Unlike [List **Scope required**: `read` -## Request - -```bash -curl "https://api.hacktron.ai/v1/scans/a1b2c3d4-e5f6-7890-abcd-ef1234567890/findings/export?format=sarif" \ - -H "X-Api-Key: $HACKTRON_API_KEY" \ - -o findings.sarif -``` - -### Path parameters - -| Parameter | Type | Description | -| --------- | ---- | ------------- | -| `id` | UUID | Scan UUID. | - -### Query parameters - -| Parameter | Type | Required | Description | -| --------- | ---- | -------- | --------------------------------------------- | -| `format` | enum | Yes | One of `json`, `csv`, `sarif`. | - -## Response - -The `Content-Type` and `Content-Disposition` headers depend on the requested format. - ### `format=json` ```http Content-Type: application/json; charset=utf-8 ``` -Returns a JSON array of finding objects, each matching the schema described in [List findings](/api-reference/findings/list-findings#finding-fields). +Returns a JSON array of finding objects, each matching the schema described in [List findings](/api-reference/findings/list-findings#response-data). ### `format=csv` @@ -59,8 +35,3 @@ Content-Disposition: attachment; filename="findings-.sarif" ``` Returns a [SARIF 2.1.0](https://sarifweb.azurewebsites.net/) document. SARIF is consumed by GitHub code scanning, Azure DevOps, and most IDE security plugins; use this format to integrate Hacktron findings into existing security tooling. - -## Errors - -- `400` — missing or invalid `format` query parameter. -- `404` — scan not found or not visible to your organization. diff --git a/api-reference/scans/get-scan-status.mdx b/api-reference/scans/get-scan-status.mdx index acd10ea..075bc63 100644 --- a/api-reference/scans/get-scan-status.mdx +++ b/api-reference/scans/get-scan-status.mdx @@ -1,6 +1,6 @@ --- title: "Get scan status" -api: "GET /scans/{id}/status" +openapi: "GET /scans/{id}/status" description: "Lightweight endpoint for polling a scan until it completes." --- @@ -10,41 +10,8 @@ Returns a minimal payload with the scan's current status. Use this for polling; **Scope required**: `read` -## Request - -```bash -curl "https://api.hacktron.ai/v1/scans/a1b2c3d4-e5f6-7890-abcd-ef1234567890/status" \ - -H "X-Api-Key: $HACKTRON_API_KEY" -``` - -### Path parameters - -| Parameter | Type | Description | -| --------- | ---- | ------------- | -| `id` | UUID | Scan UUID. | - -## Response - -`200 OK` - -```json -{ - "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "task_id": "web_scan_1712345678", - "status": "running", - "created_at": "2026-04-13T12:00:00.000Z", - "updated_at": "2026-04-13T12:18:04.000Z" -} -``` - -See [List scans](/api-reference/scans/list-scans#scan-statuses) for the full list of status values. - ## Recommended polling -A poll interval of **10–30 seconds** is sufficient. Pentest scans complete on the order of minutes; tighter polling provides no additional signal and consumes the [rate limit](/api-reference/rate-limits) quota. +A poll interval of **10-30 seconds** is sufficient. Pentest scans complete on the order of minutes; tighter polling provides no additional signal and consumes the [rate limit](/api-reference/rate-limits) quota. Stop polling when `status` reaches a terminal value: `completed`, `failed`, `stopped`, `cancelled`, or `skipped`. - -## Errors - -- `404` — scan not found or not visible to your organization. diff --git a/api-reference/scans/get-scan.mdx b/api-reference/scans/get-scan.mdx index 84d00a0..169a3d3 100644 --- a/api-reference/scans/get-scan.mdx +++ b/api-reference/scans/get-scan.mdx @@ -1,6 +1,6 @@ --- title: "Get scan" -api: "GET /scans/{id}" +openapi: "GET /scans/{id}" description: "Fetch a single scan, including its findings summary." --- @@ -9,49 +9,3 @@ Returns the full record for a single scan, including its findings summary. **Scope required**: `read` - -## Request - -```bash -curl "https://api.hacktron.ai/v1/scans/a1b2c3d4-e5f6-7890-abcd-ef1234567890" \ - -H "X-Api-Key: $HACKTRON_API_KEY" -``` - -### Path parameters - -| Parameter | Type | Description | -| --------- | ---- | --------------- | -| `id` | UUID | Scan UUID. | - -## Response - -`200 OK` - -```json -{ - "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "task_id": "web_scan_1712345678", - "scan_type": "full", - "status": "completed", - "name": "acme/backend@main", - "repo_url": "https://github.com/acme/backend", - "branch": "main", - "pr_number": null, - "target_urls": ["https://staging.acme.com"], - "findings_summary": { - "critical": 1, - "high": 3, - "medium": 7, - "low": 12, - "info": 4 - }, - "created_at": "2026-04-13T12:00:00.000Z", - "updated_at": "2026-04-13T13:42:18.000Z" -} -``` - -See [List scans](/api-reference/scans/list-scans) for a description of each field. - -## Errors - -- `404` — scan not found or not visible to your organization. diff --git a/api-reference/scans/list-scan-findings.mdx b/api-reference/scans/list-scan-findings.mdx index 8a04e72..843440b 100644 --- a/api-reference/scans/list-scan-findings.mdx +++ b/api-reference/scans/list-scan-findings.mdx @@ -1,6 +1,6 @@ --- title: "List scan findings" -api: "GET /scans/{id}/findings" +openapi: "GET /scans/{id}/findings" description: "Paginate through the findings produced by a scan." --- @@ -11,62 +11,3 @@ Only findings that have passed automated verification (`verification_status = ap **Scope required**: `read` - -## Request - -```bash -curl "https://api.hacktron.ai/v1/scans/a1b2c3d4-e5f6-7890-abcd-ef1234567890/findings?severity=high&state=open&page=1&limit=50" \ - -H "X-Api-Key: $HACKTRON_API_KEY" -``` - -### Path parameters - -| Parameter | Type | Description | -| --------- | ---- | ------------- | -| `id` | UUID | Scan UUID. | - -### Query parameters - -| Parameter | Type | Default | Description | -| ------------ | ------- | ------- | ---------------------------------------------------------------------------------------- | -| `page` | integer | `1` | 1‑based page number. | -| `limit` | integer | `15` | Items per page. Max `100`. | -| `severity` | enum | — | Filter by severity: `critical`, `high`, `medium`, `low`, `info`. | -| `state` | enum | — | Filter by state: `open`, `true_positive`, `false_positive`, `accepted_risk`, `resolved`. | -| `sort_by` | enum | `found_at` | One of `found_at`, `updated_at`, `severity`. | -| `sort_order` | enum | `DESC` | `ASC` or `DESC`. | - -## Response - -`200 OK` - -```json -{ - "data": [ - { - "id": "d1e2f3a4-b5c6-7890-1234-567890abcdef", - "title": "SQL injection in /api/v1/checkout", - "category": "injection", - "severity": "critical", - "state": "open", - "description": "User-supplied cart ID is concatenated into a SQL query...", - "affected_file": "apps/api/src/checkout/checkout.service.ts", - "affected_code": "const rows = await conn.query(`SELECT * FROM carts WHERE id = '${cartId}'`);", - "proof_of_concept": "POST /api/v1/checkout with cart_id=1' OR '1'='1", - "tags": ["injection", "sql"], - "scan_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "found_at": "2026-04-13T12:15:00.000Z", - "updated_at": "2026-04-13T12:20:00.000Z" - } - ], - "total": 11, - "page": 1, - "limit": 50 -} -``` - -See [List findings](/api-reference/findings/list-findings#finding-fields) for the field reference. - -## Errors - -- `404` — scan not found or not visible to your organization. diff --git a/api-reference/scans/list-scans.mdx b/api-reference/scans/list-scans.mdx index 8353df9..1ddb1c2 100644 --- a/api-reference/scans/list-scans.mdx +++ b/api-reference/scans/list-scans.mdx @@ -1,6 +1,6 @@ --- title: "List scans" -api: "GET /scans" +openapi: "GET /scans" description: "List scans with pagination, filtering, and sorting." --- @@ -9,86 +9,3 @@ Returns scans in your organization, with filtering by type and status. **Scope required**: `read` - -## Request - -```bash -curl "https://api.hacktron.ai/v1/scans?status=completed&sort_by=created_at&sort_order=DESC&page=1&limit=25" \ - -H "X-Api-Key: $HACKTRON_API_KEY" -``` - -### Query parameters - -| Parameter | Type | Default | Description | -| ------------ | ------- | ------- | ------------------------------------------------------------------- | -| `page` | integer | `1` | 1‑based page number. | -| `limit` | integer | `15` | Items per page. Max `100`. | -| `scan_type` | enum | — | Filter by scan type. Values: `pr`, `full`. | -| `status` | enum | — | Filter by status. See [Scan statuses](#scan-statuses). | -| `sort_by` | enum | `created_at` | One of `created_at`, `updated_at`, `status`. | -| `sort_order` | enum | `DESC` | `ASC` or `DESC`. | - -### Scan statuses - -| Value | Meaning | -| ----------------------- | -------------------------------------------------------------- | -| `pending` | Scan queued, not yet started. | -| `running` | Scan is in progress. | -| `pending_verification` | Findings are being verified automatically. | -| `pending_triage` | Findings are ready for triage. | -| `completed` | Scan finished successfully. | -| `failed` | Scan failed. See scan detail for error context. | -| `stopped` / `cancelled` | Scan was stopped or cancelled before completion. | -| `skipped` | Scan was skipped (no applicable content). | -| `draft` | Scan was created but never started. | - -## Response - -`200 OK` - -```json -{ - "data": [ - { - "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "task_id": "web_scan_1712345678", - "scan_type": "full", - "status": "completed", - "name": "acme/backend@main", - "repo_url": "https://github.com/acme/backend", - "branch": "main", - "pr_number": null, - "target_urls": ["https://staging.acme.com"], - "findings_summary": { - "critical": 1, - "high": 3, - "medium": 7, - "low": 12, - "info": 4 - }, - "created_at": "2026-04-13T12:00:00.000Z", - "updated_at": "2026-04-13T13:42:18.000Z" - } - ], - "total": 142, - "page": 1, - "limit": 25 -} -``` - -### Scan object fields - -| Field | Type | Description | -| ------------------- | ------------- | ---------------------------------------------------------------- | -| `id` | UUID | Scan identifier. | -| `task_id` | string | Internal task ID for correlation with the dashboard. | -| `scan_type` | enum | `pr` or `full`. | -| `status` | enum | Current scan status. | -| `name` | string\|null | Display name. Defaults to `repo@branch`. | -| `repo_url` | string\|null | Primary repository URL. | -| `branch` | string\|null | Primary branch scanned. | -| `pr_number` | integer\|null | GitHub PR number (PR scans only). | -| `target_urls` | string[]\|null| Live targets for Whitebox Scans. | -| `findings_summary` | object | Approved finding counts by severity. | -| `created_at` | string | ISO 8601 timestamp. | -| `updated_at` | string | ISO 8601 timestamp. | diff --git a/docs.json b/docs.json index 102437a..67422fb 100644 --- a/docs.json +++ b/docs.json @@ -276,6 +276,7 @@ "contextual": { "options": [ "copy", + "download-spec", "view", "chatgpt", "claude", diff --git a/openapi.json b/openapi.json new file mode 100644 index 0000000..408bf0c --- /dev/null +++ b/openapi.json @@ -0,0 +1,2299 @@ +{ + "openapi": "3.0.0", + "paths": { + "/scans": { + "post": { + "operationId": "RestScanController_create", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RestCreateScanDto" + } + } + } + }, + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RestCreateScanResponseDto" + } + } + } + }, + "402": { + "description": "Insufficient credits" + } + }, + "summary": "Trigger a pentest scan", + "tags": [ + "REST API - Scans" + ] + }, + "get": { + "operationId": "RestScanController_list", + "parameters": [ + { + "name": "page", + "required": false, + "in": "query", + "description": "The page number to retrieve.", + "schema": { + "default": 1, + "type": "number" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "The number of items to retrieve per page.", + "schema": { + "default": 15, + "type": "number" + } + }, + { + "name": "scan_type", + "required": false, + "in": "query", + "schema": { + "type": "string", + "enum": [ + "pr", + "full" + ] + } + }, + { + "name": "status", + "required": false, + "in": "query", + "schema": { + "type": "string", + "enum": [ + "pending", + "running", + "completed", + "failed", + "stopped", + "cancelled", + "skipped", + "pending_verification", + "pending_triage", + "draft", + "estimating", + "estimated" + ] + } + }, + { + "name": "sort_by", + "required": false, + "in": "query", + "schema": { + "type": "string", + "enum": [ + "created_at", + "updated_at", + "status" + ] + } + }, + { + "name": "sort_order", + "required": false, + "in": "query", + "schema": { + "default": "DESC", + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RestScanListResponseDto" + } + } + } + } + }, + "summary": "List scans with pagination and filters", + "tags": [ + "REST API - Scans" + ] + } + }, + "/scans/{id}/status": { + "get": { + "operationId": "RestScanController_getStatus", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RestScanStatusResponseDto" + } + } + } + } + }, + "summary": "Get scan status", + "tags": [ + "REST API - Scans" + ] + } + }, + "/scans/{id}/findings/export": { + "get": { + "operationId": "RestScanController_exportFindings", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "format", + "required": true, + "in": "query", + "description": "Export format", + "schema": { + "type": "string", + "enum": [ + "json", + "csv", + "sarif" + ] + } + } + ], + "responses": { + "200": { + "description": "" + } + }, + "summary": "Export findings for a scan", + "tags": [ + "REST API - Scans" + ] + } + }, + "/scans/{id}/findings": { + "get": { + "operationId": "RestScanController_listScanFindings", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "page", + "required": false, + "in": "query", + "description": "The page number to retrieve.", + "schema": { + "default": 1, + "type": "number" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "The number of items to retrieve per page.", + "schema": { + "default": 15, + "type": "number" + } + }, + { + "name": "severity", + "required": false, + "in": "query", + "schema": { + "type": "string", + "enum": [ + "critical", + "high", + "medium", + "low", + "info" + ] + } + }, + { + "name": "state", + "required": false, + "in": "query", + "schema": { + "type": "string", + "enum": [ + "open", + "true_positive", + "false_positive", + "accepted_risk", + "resolved", + "closed" + ] + } + }, + { + "name": "scan_id", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "scan_type", + "required": false, + "in": "query", + "description": "Filter by scan type across all scans associated with the finding.", + "schema": { + "type": "string", + "enum": [ + "pr", + "full" + ] + } + }, + { + "name": "repo_url", + "required": false, + "in": "query", + "description": "Filter by exact repository URL.", + "schema": { + "type": "string" + } + }, + { + "name": "found_since", + "required": false, + "in": "query", + "description": "Only include findings discovered on/after this ISO 8601 timestamp.", + "schema": { + "type": "string" + } + }, + { + "name": "found_until", + "required": false, + "in": "query", + "description": "Only include findings discovered before this ISO 8601 timestamp.", + "schema": { + "type": "string" + } + }, + { + "name": "sort_by", + "required": false, + "in": "query", + "schema": { + "type": "string", + "enum": [ + "found_at", + "updated_at", + "severity" + ] + } + }, + { + "name": "sort_order", + "required": false, + "in": "query", + "schema": { + "default": "DESC", + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RestFindingListResponseDto" + } + } + } + } + }, + "summary": "List findings for a specific scan", + "tags": [ + "REST API - Scans" + ] + } + }, + "/scans/{id}": { + "get": { + "operationId": "RestScanController_getById", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RestScanResponseDto" + } + } + } + } + }, + "summary": "Get scan by UUID", + "tags": [ + "REST API - Scans" + ] + } + }, + "/findings": { + "get": { + "operationId": "RestFindingController_list", + "parameters": [ + { + "name": "page", + "required": false, + "in": "query", + "description": "The page number to retrieve.", + "schema": { + "default": 1, + "type": "number" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "The number of items to retrieve per page.", + "schema": { + "default": 15, + "type": "number" + } + }, + { + "name": "severity", + "required": false, + "in": "query", + "schema": { + "type": "string", + "enum": [ + "critical", + "high", + "medium", + "low", + "info" + ] + } + }, + { + "name": "state", + "required": false, + "in": "query", + "schema": { + "type": "string", + "enum": [ + "open", + "true_positive", + "false_positive", + "accepted_risk", + "resolved", + "closed" + ] + } + }, + { + "name": "scan_id", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "scan_type", + "required": false, + "in": "query", + "description": "Filter by scan type across all scans associated with the finding.", + "schema": { + "type": "string", + "enum": [ + "pr", + "full" + ] + } + }, + { + "name": "repo_url", + "required": false, + "in": "query", + "description": "Filter by exact repository URL.", + "schema": { + "type": "string" + } + }, + { + "name": "found_since", + "required": false, + "in": "query", + "description": "Only include findings discovered on/after this ISO 8601 timestamp.", + "schema": { + "type": "string" + } + }, + { + "name": "found_until", + "required": false, + "in": "query", + "description": "Only include findings discovered before this ISO 8601 timestamp.", + "schema": { + "type": "string" + } + }, + { + "name": "sort_by", + "required": false, + "in": "query", + "schema": { + "type": "string", + "enum": [ + "found_at", + "updated_at", + "severity" + ] + } + }, + { + "name": "sort_order", + "required": false, + "in": "query", + "schema": { + "default": "DESC", + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RestFindingListResponseDto" + } + } + } + } + }, + "summary": "List findings with pagination and filters", + "tags": [ + "REST API - Findings" + ] + } + }, + "/findings/{id}": { + "patch": { + "operationId": "RestFindingController_update", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RestUpdateFindingDto" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RestUpdateFindingResponseDto" + } + } + } + } + }, + "summary": "Update finding state, severity, and/or duplicate link", + "tags": [ + "REST API - Findings" + ] + }, + "get": { + "operationId": "RestFindingController_getById", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RestFindingDetailResponseDto" + } + } + } + } + }, + "summary": "Get finding details", + "tags": [ + "REST API - Findings" + ] + } + }, + "/findings/{id}/comments": { + "post": { + "operationId": "RestFindingController_addComment", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RestAddCommentDto" + } + } + } + }, + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RestAddCommentResponseDto" + } + } + } + } + }, + "summary": "Add a comment to a finding", + "tags": [ + "REST API - Findings" + ] + } + }, + "/cost-estimations": { + "post": { + "operationId": "RestCostEstimationController_create", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateCostEstimationDto" + } + } + } + }, + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CostEstimationResponseDto" + } + } + } + } + }, + "summary": "Create a cost estimation for one or more repos", + "tags": [ + "REST API - Cost Estimations" + ] + }, + "get": { + "operationId": "RestCostEstimationController_list", + "parameters": [ + { + "name": "limit", + "required": false, + "in": "query", + "schema": { + "type": "number" + } + }, + { + "name": "offset", + "required": false, + "in": "query", + "schema": { + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RestCostEstimationListResponseDto" + } + } + } + } + }, + "summary": "List cost estimations", + "tags": [ + "REST API - Cost Estimations" + ] + } + }, + "/cost-estimations/{id}": { + "get": { + "operationId": "RestCostEstimationController_findOne", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CostEstimationResponseDto" + } + } + } + } + }, + "summary": "Get cost estimation details", + "tags": [ + "REST API - Cost Estimations" + ] + } + }, + "/repos": { + "get": { + "operationId": "RestRepoController_list", + "parameters": [], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MergedReposResponseDto" + } + } + } + } + }, + "summary": "List repositories from all connected providers, including whether PR scans are enabled", + "tags": [ + "REST API - Repos" + ] + } + }, + "/hfw/verdicts/batch": { + "post": { + "description": "Public, fast-mode HFW batch verdict proxy. This endpoint is intentionally scoped to feed-backed verdicts and can be moved behind X-Api-Key later.", + "operationId": "RestHfwController_getBatchVerdicts", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RestHfwBatchRequestDto" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RestHfwBatchResponseDto" + } + } + } + } + }, + "security": [], + "summary": "Get fast dependency verdicts for landing and GitHub Action scans", + "tags": [ + "REST API - HFW" + ] + } + }, + "/hfw/osv/feed": { + "get": { + "operationId": "RestHfwController_getOsvFeed", + "parameters": [ + { + "name": "limit", + "required": false, + "in": "query", + "schema": { + "minimum": 1, + "maximum": 500, + "default": 200, + "type": "number" + } + }, + { + "name": "offset", + "required": false, + "in": "query", + "schema": { + "minimum": 0, + "default": 0, + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RestHfwOsvFeedResponseDto" + } + } + } + } + }, + "security": [], + "summary": "List known-malware feed entries for package sitemap generation", + "tags": [ + "REST API - HFW" + ] + } + }, + "/hfw/verdict/{ecosystem}/{packageName}": { + "get": { + "description": "Public, fast-mode HFW verdict proxy. This endpoint is intentionally scoped to feed-backed verdicts and can be moved behind X-Api-Key later.", + "operationId": "RestHfwController_getPackageVerdict", + "parameters": [ + { + "name": "version", + "required": true, + "in": "query", + "description": "Package version to check", + "schema": { + "type": "string" + } + }, + { + "name": "wait_seconds", + "required": false, + "in": "query", + "description": "Seconds to wait for an upstream verdict. Fast mode normally returns immediately.", + "schema": { + "minimum": 0, + "maximum": 60, + "default": 0, + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RestHfwVerdictResponseDto" + } + } + } + } + }, + "security": [], + "summary": "Get a fast dependency verdict for GitHub Action scans", + "tags": [ + "REST API - HFW" + ] + } + }, + "/hfw/verdict/{ecosystem}/{scope}/{packageName}": { + "get": { + "operationId": "RestHfwController_getScopedNpmPackageVerdict", + "parameters": [ + { + "name": "version", + "required": true, + "in": "query", + "description": "Package version to check", + "schema": { + "type": "string" + } + }, + { + "name": "wait_seconds", + "required": false, + "in": "query", + "description": "Seconds to wait for an upstream verdict. Fast mode normally returns immediately.", + "schema": { + "minimum": 0, + "maximum": 60, + "default": 0, + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RestHfwVerdictResponseDto" + } + } + } + } + }, + "security": [], + "summary": "Get a fast dependency verdict for scoped npm GitHub Action scans", + "tags": [ + "REST API - HFW" + ] + } + } + }, + "info": { + "title": "Hacktron REST API", + "description": "Public REST API for programmatic access to Hacktron", + "version": "1.0", + "contact": {} + }, + "tags": [], + "servers": [ + { + "url": "https://api.hacktron.ai/v1" + } + ], + "components": { + "securitySchemes": { + "api-key": { + "type": "apiKey", + "in": "header", + "name": "X-Api-Key" + } + }, + "schemas": { + "RestRepoDto": { + "type": "object", + "properties": { + "url": { + "type": "string", + "description": "Repository URL" + }, + "branch": { + "type": "string", + "description": "Branch name" + }, + "source": { + "type": "string", + "description": "Repository source", + "enum": [ + "connected", + "public", + "upload" + ], + "default": "connected" + } + }, + "required": [ + "url", + "branch" + ] + }, + "RestCreateScanDto": { + "type": "object", + "properties": { + "cost_estimation_id": { + "type": "string", + "description": "Completed cost estimation UUID" + }, + "repos": { + "description": "Repositories to scan", + "type": "array", + "items": { + "$ref": "#/components/schemas/RestRepoDto" + } + }, + "target_urls": { + "description": "Target URLs for pentest", + "type": "array", + "items": { + "type": "string" + } + }, + "auth_instructions": { + "type": "string", + "description": "Authentication instructions for the target", + "maxLength": 2000 + }, + "custom_context": { + "type": "string", + "description": "Custom context for the pentest", + "maxLength": 2000 + }, + "context_document_ids": { + "description": "Context document UUIDs to include", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "cost_estimation_id", + "repos" + ] + }, + "RestCreateScanResponseDto": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "task_id": { + "type": "string" + }, + "status": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "id", + "task_id", + "status", + "message" + ] + }, + "RestScanFindingsSummaryDto": { + "type": "object", + "properties": { + "critical": { + "type": "number" + }, + "high": { + "type": "number" + }, + "medium": { + "type": "number" + }, + "low": { + "type": "number" + }, + "info": { + "type": "number" + } + }, + "required": [ + "critical", + "high", + "medium", + "low", + "info" + ] + }, + "RestScanResponseDto": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "task_id": { + "type": "string" + }, + "scan_type": { + "type": "string", + "enum": [ + "pr", + "full" + ] + }, + "status": { + "type": "string" + }, + "name": { + "type": "string", + "nullable": true + }, + "repo_url": { + "type": "string", + "nullable": true + }, + "branch": { + "type": "string", + "nullable": true + }, + "pr_number": { + "type": "number", + "nullable": true + }, + "target_urls": { + "nullable": true, + "type": "array", + "items": { + "type": "string" + } + }, + "findings_summary": { + "$ref": "#/components/schemas/RestScanFindingsSummaryDto" + }, + "created_at": { + "type": "string" + }, + "updated_at": { + "type": "string" + } + }, + "required": [ + "id", + "task_id", + "scan_type", + "status", + "name", + "repo_url", + "branch", + "pr_number", + "target_urls", + "findings_summary", + "created_at", + "updated_at" + ] + }, + "RestScanListResponseDto": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RestScanResponseDto" + } + }, + "total": { + "type": "number" + }, + "page": { + "type": "number" + }, + "limit": { + "type": "number" + } + }, + "required": [ + "data", + "total", + "page", + "limit" + ] + }, + "RestScanStatusResponseDto": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "task_id": { + "type": "string" + }, + "status": { + "type": "string", + "enum": [ + "pending", + "running", + "completed", + "failed", + "stopped", + "cancelled", + "skipped", + "pending_verification", + "pending_triage", + "draft", + "estimating", + "estimated" + ] + }, + "created_at": { + "type": "string" + }, + "updated_at": { + "type": "string" + } + }, + "required": [ + "id", + "task_id", + "status", + "created_at", + "updated_at" + ] + }, + "RestFindingResponseDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Finding UUID" + }, + "title": { + "type": "string" + }, + "category": { + "type": "string" + }, + "severity": { + "type": "string", + "enum": [ + "critical", + "high", + "medium", + "low", + "info" + ] + }, + "state": { + "type": "string", + "enum": [ + "open", + "true_positive", + "false_positive", + "accepted_risk", + "resolved", + "closed" + ] + }, + "description": { + "type": "string" + }, + "affected_file": { + "type": "string" + }, + "affected_code": { + "type": "string" + }, + "proof_of_concept": { + "type": "string", + "nullable": true + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "scan_id": { + "type": "string", + "nullable": true + }, + "found_at": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "resolved_at": { + "type": "string", + "nullable": true, + "description": "Timestamp of the most recent transition to resolved (ISO 8601). Null if never resolved." + } + }, + "required": [ + "id", + "title", + "category", + "severity", + "state", + "description", + "affected_file", + "affected_code", + "proof_of_concept", + "tags", + "scan_id", + "found_at", + "updated_at", + "resolved_at" + ] + }, + "RestFindingListResponseDto": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RestFindingResponseDto" + } + }, + "total": { + "type": "number" + }, + "page": { + "type": "number" + }, + "limit": { + "type": "number" + } + }, + "required": [ + "data", + "total", + "page", + "limit" + ] + }, + "RestUpdateFindingDto": { + "type": "object", + "properties": { + "state": { + "type": "string", + "enum": [ + "open", + "true_positive", + "false_positive", + "accepted_risk", + "resolved", + "closed" + ], + "description": "New finding state" + }, + "severity": { + "type": "string", + "enum": [ + "critical", + "high", + "medium", + "low", + "info" + ], + "description": "New severity level" + }, + "state_reason": { + "type": "string", + "description": "Reason for the state change (defaults to reason if omitted)" + }, + "severity_reason": { + "type": "string", + "description": "Reason for the severity change (defaults to reason if omitted)" + }, + "reason": { + "type": "string", + "description": "Shorthand reason applied to both state and severity changes when their specific reason is not provided" + }, + "duplicate_of": { + "type": "string", + "nullable": true, + "description": "UUID of the canonical finding to mark this finding as a duplicate of, or null to unmark. The target must be in the same repository." + } + } + }, + "RestUpdateFindingResponseDto": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "state": { + "type": "string", + "enum": [ + "open", + "true_positive", + "false_positive", + "accepted_risk", + "resolved", + "closed" + ] + }, + "severity": { + "type": "string", + "enum": [ + "critical", + "high", + "medium", + "low", + "info" + ] + }, + "duplicate_of": { + "type": "string", + "nullable": true, + "description": "UUID of the canonical finding this duplicates, if any." + } + }, + "required": [ + "id", + "state", + "severity", + "duplicate_of" + ] + }, + "RestAddCommentDto": { + "type": "object", + "properties": { + "comment": { + "type": "string", + "description": "Comment text", + "maxLength": 4000 + } + }, + "required": [ + "comment" + ] + }, + "RestAddCommentResponseDto": { + "type": "object", + "properties": { + "comment_id": { + "type": "string" + } + }, + "required": [ + "comment_id" + ] + }, + "RestTriageThreadEntryDto": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "reaction": { + "type": "string", + "nullable": true + }, + "comment": { + "type": "string", + "nullable": true + }, + "user_id": { + "type": "string" + }, + "username": { + "type": "string" + }, + "source": { + "type": "string" + }, + "timestamp": { + "type": "string" + } + }, + "required": [ + "id", + "reaction", + "comment", + "user_id", + "source", + "timestamp" + ] + }, + "TaintStepDto": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "source", + "propagation", + "sink" + ] + }, + "file": { + "type": "string" + }, + "line": { + "type": "number" + }, + "end_line": { + "type": "number" + }, + "symbol": { + "type": "string" + }, + "description": { + "type": "string" + }, + "detail": { + "type": "string", + "description": "Raw symbol docstring; supplemental context for the stepped taint flow." + }, + "taint_sources": { + "type": "array", + "items": { + "type": "string" + } + }, + "code": { + "type": "string", + "description": "Source code lines for this step's symbol, pre-sliced by the worker." + }, + "code_start_line": { + "type": "number", + "description": "1-based start line number of the `code` slice in the source file. Used by the frontend as the anchor for chevron-expand requests to GET /findings/:uuid/source." + }, + "code_end_line": { + "type": "number", + "description": "1-based end line number of the `code` slice in the source file. Used by the frontend as the anchor for chevron-expand requests to GET /findings/:uuid/source." + } + }, + "required": [ + "type", + "file", + "line", + "end_line", + "symbol", + "description", + "taint_sources" + ] + }, + "RestFindingDetailResponseDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Finding UUID" + }, + "title": { + "type": "string" + }, + "category": { + "type": "string" + }, + "severity": { + "type": "string", + "enum": [ + "critical", + "high", + "medium", + "low", + "info" + ] + }, + "state": { + "type": "string", + "enum": [ + "open", + "true_positive", + "false_positive", + "accepted_risk", + "resolved", + "closed" + ] + }, + "description": { + "type": "string" + }, + "affected_file": { + "type": "string" + }, + "affected_code": { + "type": "string" + }, + "proof_of_concept": { + "type": "string", + "nullable": true + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "scan_id": { + "type": "string", + "nullable": true + }, + "found_at": { + "type": "string" + }, + "updated_at": { + "type": "string" + }, + "resolved_at": { + "type": "string", + "nullable": true, + "description": "Timestamp of the most recent transition to resolved (ISO 8601). Null if never resolved." + }, + "triage_thread": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RestTriageThreadEntryDto" + } + }, + "taint_path": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaintStepDto" + } + }, + "occurrence_count": { + "type": "number" + }, + "repo_url": { + "type": "string", + "nullable": true + }, + "scan_type": { + "type": "string", + "nullable": true + } + }, + "required": [ + "id", + "title", + "category", + "severity", + "state", + "description", + "affected_file", + "affected_code", + "proof_of_concept", + "tags", + "scan_id", + "found_at", + "updated_at", + "resolved_at", + "triage_thread", + "taint_path", + "occurrence_count", + "repo_url", + "scan_type" + ] + }, + "ConnectedCostEstimationRepoDto": { + "type": "object", + "properties": { + "source": { + "type": "string", + "description": "Source type", + "enum": [ + "connected" + ], + "default": "connected" + }, + "repo_url": { + "type": "string", + "description": "Repository URL" + }, + "branch": { + "type": "string", + "description": "Branch name" + }, + "github_installation_id": { + "type": "number", + "description": "GitHub App installation ID. Omitted for PAT-based connections (e.g. GitHub Enterprise), where the installation is resolved from repo_url and the organization instead." + } + }, + "required": [ + "source", + "repo_url", + "branch" + ] + }, + "PublicCostEstimationRepoDto": { + "type": "object", + "properties": { + "source": { + "type": "string", + "description": "Source type", + "enum": [ + "public" + ] + }, + "repo_url": { + "type": "string", + "description": "Repository URL" + }, + "branch": { + "type": "string", + "description": "Branch name" + } + }, + "required": [ + "source", + "repo_url", + "branch" + ] + }, + "UploadCostEstimationRepoDto": { + "type": "object", + "properties": { + "source": { + "type": "string", + "description": "Source type", + "enum": [ + "upload" + ] + }, + "archive_id": { + "type": "string", + "description": "Scan archive ID" + } + }, + "required": [ + "source", + "archive_id" + ] + }, + "CreateCostEstimationDto": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Friendly name for this estimation" + }, + "repos": { + "type": "array", + "description": "Repositories to estimate", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ConnectedCostEstimationRepoDto" + }, + { + "$ref": "#/components/schemas/PublicCostEstimationRepoDto" + }, + { + "$ref": "#/components/schemas/UploadCostEstimationRepoDto" + } + ], + "discriminator": { + "propertyName": "source", + "mapping": { + "connected": "#/components/schemas/ConnectedCostEstimationRepoDto", + "public": "#/components/schemas/PublicCostEstimationRepoDto", + "upload": "#/components/schemas/UploadCostEstimationRepoDto" + } + } + } + } + }, + "required": [ + "repos" + ] + }, + "RepoInputResponseDto": { + "type": "object", + "properties": { + "source": { + "type": "string", + "description": "Source type", + "enum": [ + "connected", + "public", + "upload" + ] + }, + "repo_url": { + "type": "string", + "description": "Repository URL", + "example": "https://github.com/owner/repo" + }, + "branch": { + "type": "string", + "description": "Branch name", + "example": "main" + }, + "commit_sha": { + "type": "string", + "description": "Resolved commit SHA", + "example": "abc123def456" + }, + "archive_id": { + "type": "string", + "description": "Archive ID (for upload sources)" + } + } + }, + "RepoResultApplicationDto": { + "type": "object", + "properties": { + "app_name": { + "type": "string", + "description": "Application name", + "example": "backend-api" + }, + "app_root_path": { + "type": "string", + "description": "Application root path", + "example": "apps/api" + }, + "architecture": { + "type": "string", + "description": "Architecture description", + "example": "NestJS REST API with PostgreSQL" + } + }, + "required": [ + "app_name", + "app_root_path" + ] + }, + "RepoResultResponseDto": { + "type": "object", + "properties": { + "repo_url": { + "type": "string", + "description": "Repository URL", + "example": "https://github.com/owner/repo" + }, + "branch": { + "type": "string", + "description": "Branch name", + "example": "main" + }, + "commit_sha": { + "type": "string", + "description": "Commit SHA", + "example": "abc123def456" + }, + "status": { + "type": "string", + "description": "Result status", + "enum": [ + "completed", + "failed" + ], + "example": "completed" + }, + "from_cache": { + "type": "boolean", + "description": "Whether result was served from cache", + "example": false + }, + "applications": { + "description": "Detected applications", + "type": "array", + "items": { + "$ref": "#/components/schemas/RepoResultApplicationDto" + } + }, + "credits": { + "type": "number", + "description": "Estimated credits for this repo", + "example": 4000 + }, + "error": { + "type": "string", + "description": "Error message (when status is failed)" + }, + "failure_reason": { + "type": "string", + "description": "Structured failure reason", + "enum": [ + "unsupported_language" + ] + }, + "unsupported_languages": { + "description": "Detected unsupported languages among the top languages", + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "repo_url", + "status", + "from_cache" + ] + }, + "CostEstimationResponseDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Estimation UUID", + "example": "123e4567-e89b-12d3-a456-426614174000" + }, + "organization_id": { + "type": "string", + "description": "Organization UUID", + "example": "f336d0bc-b841-465b-8045-024475c079dd" + }, + "user_id": { + "type": "string", + "description": "User UUID", + "example": "f336d0bc-b841-465b-8045-024475c079dd" + }, + "name": { + "type": "string", + "description": "Friendly name for this estimation" + }, + "task_id": { + "type": "string", + "description": "Task identifier", + "example": "cost_est_owner-repo_12345" + }, + "status": { + "type": "string", + "description": "Estimation status", + "enum": [ + "pending", + "running", + "completed", + "partial", + "failed" + ], + "example": "completed" + }, + "repos": { + "description": "Input repositories", + "type": "array", + "items": { + "$ref": "#/components/schemas/RepoInputResponseDto" + } + }, + "total_credits": { + "type": "number", + "description": "Total estimated credits across all repos", + "example": 8000 + }, + "repo_results": { + "description": "Per-repo estimation results", + "type": "array", + "items": { + "$ref": "#/components/schemas/RepoResultResponseDto" + } + }, + "error": { + "type": "string", + "description": "Error message" + }, + "triage_required": { + "type": "boolean", + "description": "Whether human triage is mandatory for a scan of this estimation (large app, above the predicted-cost threshold). The customer cannot opt out when true.", + "example": false + }, + "triage_fee_credits": { + "type": "number", + "description": "Triage fee in credits (a percentage of the scan base credits) added when triage is enabled", + "example": 1600 + }, + "created_at": { + "format": "date-time", + "type": "string", + "description": "Timestamp when estimation was created", + "example": "2026-03-10T12:00:00.000Z" + }, + "updated_at": { + "format": "date-time", + "type": "string", + "description": "Timestamp when estimation was last updated", + "example": "2026-03-10T12:05:00.000Z" + } + }, + "required": [ + "id", + "organization_id", + "user_id", + "task_id", + "status", + "repos", + "triage_required", + "triage_fee_credits", + "created_at", + "updated_at" + ] + }, + "RestCostEstimationListResponseDto": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CostEstimationResponseDto" + } + }, + "total": { + "type": "number" + } + }, + "required": [ + "data", + "total" + ] + }, + "UnifiedRepoDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Internal UUID", + "example": "123e4567-e89b-12d3-a456-426614174000" + }, + "provider": { + "type": "string", + "description": "Source provider", + "enum": [ + "github", + "gitlab", + "bitbucket" + ], + "example": "github" + }, + "name": { + "type": "string", + "description": "Display name (owner/repo for GitHub, namespace/project for GitLab, workspace/slug for Bitbucket)", + "example": "octocat/Hello-World" + }, + "providerKey": { + "type": "string", + "description": "Provider-native identifier for mutation endpoints. GitHub: owner/repo, GitLab: numeric projectId (as string), Bitbucket: repository UUID.", + "example": "octocat/Hello-World" + }, + "enabled": { + "type": "boolean", + "description": "Whether the repository is enabled for scanning", + "example": true + }, + "threatModelUpdatedAt": { + "type": "string", + "nullable": true, + "description": "ISO timestamp of the repo's most recent threat_model.md update, or null if it has none. Repos are returned ordered by this (most recent first; repos without a threat model last).", + "example": "2026-06-22T12:00:00.000Z" + }, + "prScansEnabled": { + "type": "boolean", + "description": "Whether PR/MR scans are enabled (GitHub and GitLab)", + "example": true + }, + "prScanBranches": { + "description": "Target branches for PR/MR scans (GitHub and GitLab)", + "example": [ + "main", + "develop" + ], + "type": "array", + "items": { + "type": "string" + } + }, + "installationId": { + "type": "number", + "description": "GitHub App installation ID (GitHub only)", + "example": 12345678 + }, + "baseUrl": { + "type": "string", + "nullable": true, + "description": "GitHub Enterprise base URL for self-hosted (PAT) installations. Null/absent for github.com. Clients should build clone/display URLs from this host instead of assuming github.com (GitHub only).", + "example": "https://ghe.example.com" + }, + "defaultBranch": { + "type": "string", + "description": "Default branch (GitLab only)", + "example": "main" + }, + "visibility": { + "type": "string", + "description": "Project visibility (GitLab only)", + "example": "private" + }, + "webhookRegistered": { + "type": "boolean", + "description": "Whether a webhook is registered for this project (GitLab only)", + "example": true + }, + "isPrivate": { + "type": "boolean", + "description": "Whether the repository is private (Bitbucket only)", + "example": true + } + }, + "required": [ + "id", + "provider", + "name", + "providerKey", + "enabled", + "threatModelUpdatedAt" + ] + }, + "MergedReposResponseDto": { + "type": "object", + "properties": { + "repos": { + "description": "Unified list of repositories from all providers", + "type": "array", + "items": { + "$ref": "#/components/schemas/UnifiedRepoDto" + } + }, + "errors": { + "description": "Providers that failed to respond", + "example": [], + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "repos", + "errors" + ] + }, + "RestHfwBatchPackageDto": { + "type": "object", + "properties": { + "ecosystem": { + "type": "string", + "enum": [ + "npm", + "pypi" + ] + }, + "package": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "ecosystem", + "package", + "version" + ] + }, + "RestHfwBatchRequestDto": { + "type": "object", + "properties": { + "packages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RestHfwBatchPackageDto" + } + } + }, + "required": [ + "packages" + ] + }, + "RestHfwVerdictResponseDto": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "ready", + "pending", + "scanning" + ] + }, + "ecosystem": { + "type": "string", + "enum": [ + "npm", + "pypi" + ] + }, + "package": { + "type": "string" + }, + "version": { + "type": "string" + }, + "level": { + "type": "string", + "enum": [ + "clean", + "suspicious", + "malicious", + "unknown" + ] + }, + "confidence": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "findings": { + "type": "array", + "items": { + "type": "object" + } + }, + "source": { + "type": "string" + }, + "osv_id": { + "type": "string" + } + }, + "required": [ + "status", + "ecosystem", + "package", + "version", + "level", + "confidence", + "summary", + "findings" + ] + }, + "RestHfwBatchResponseDto": { + "type": "object", + "properties": { + "status": { + "type": "string" + }, + "verdicts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RestHfwVerdictResponseDto" + } + }, + "errors": { + "type": "array", + "items": { + "type": "object" + } + } + }, + "required": [ + "status", + "verdicts", + "errors" + ] + }, + "RestHfwOsvFeedResultDto": { + "type": "object", + "properties": { + "ecosystem": { + "type": "string" + }, + "package": { + "type": "string" + }, + "versions": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "ecosystem", + "package", + "versions" + ] + }, + "RestHfwOsvFeedResponseDto": { + "type": "object", + "properties": { + "total": { + "type": "number" + }, + "results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RestHfwOsvFeedResultDto" + } + } + }, + "required": [ + "results" + ] + } + } + }, + "security": [ + { + "api-key": [] + } + ] +} \ No newline at end of file diff --git a/package.json b/package.json index a3eb40a..ced7d72 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,6 @@ "dev": "mintlify dev" }, "devDependencies": { - "mintlify": "4.2.417" + "mintlify": "4.2.678" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dca46fd..c572c1e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: devDependencies: mintlify: - specifier: 4.2.417 - version: 4.2.417(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/node@25.3.5)(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(typescript@5.9.3) + specifier: 4.2.678 + version: 4.2.678(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/node@25.3.5)(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(typescript@5.9.3) packages: @@ -314,6 +314,10 @@ packages: '@types/node': optional: true + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -357,19 +361,16 @@ packages: '@types/react': '>=16' react: '>=16' - '@mintlify/cli@4.0.1020': - resolution: {integrity: sha512-CSWJS/ZjmBIhPaoYKtaDhllyTZhFmQ3ePjAEKEawOM5uldtNDijHYhQttRESLjfzLSidaZeNnyU+W1qeWtCRew==} + '@mintlify/cli@4.0.1281': + resolution: {integrity: sha512-LaGfrFU+idFt0vhNC6FV2fMDqmicMQr+3RBDDT7mwP7illW9h8BtyLjt7XTi9VAGdmfImUxUh85GQx/ehup0RA==} engines: {node: '>=18.0.0'} hasBin: true - '@mintlify/common@1.0.661': - resolution: {integrity: sha512-/Hdiblzaomp+AWStQ4smhVMgesQhffzQjC9aYBnmLReNdh2Js+ccQFUaWL3TNIxwiS2esaZvsHSV/D+zyRS3hg==} + '@mintlify/common@1.0.996': + resolution: {integrity: sha512-bF7S2pCAk/gTLH1hRq00wwuroI8IEM39PoylbW72WR0Byr0sT7fYv4scAiu9QqLooFU15C7J6MtSpUh7P8m9YQ==} - '@mintlify/common@1.0.788': - resolution: {integrity: sha512-e4Z5a7osMDf52oCHcq09U4nnTbEgmWGeMs/lKSbCrZJIdB8M+MbKul3LvEDXnLpzx6tWTC3JF78QSZOdKtxePg==} - - '@mintlify/link-rot@3.0.955': - resolution: {integrity: sha512-hdcmDe2NaQLyLAnZAZyYGSVCJw/cyuKQJaRrlwR9XfRYRIHYDPIXnGAKd+CWgvHrq+nHhPFTVpUYtD/9redHZg==} + '@mintlify/link-rot@3.0.1184': + resolution: {integrity: sha512-iCwqxJG9ZyJC6BzM+i+U96jj670gWhVMz4oOLqZFUN/HJWdQO0N0My/iRLSHbstQoKPQjV/rqXFC+KW+Q88nUA==} engines: {node: '>=18.0.0'} '@mintlify/mdx@3.0.4': @@ -379,40 +380,28 @@ packages: react: ^18.3.1 react-dom: ^18.3.1 - '@mintlify/models@0.0.255': - resolution: {integrity: sha512-LIUkfA7l7ypHAAuOW74ZJws/NwNRqlDRD/U466jarXvvSlGhJec/6J4/I+IEcBvWDnc9anLFKmnGO04jPKgAsg==} - engines: {node: '>=18.0.0'} - - '@mintlify/models@0.0.283': - resolution: {integrity: sha512-UY4PgxMZqD9QN6G0uSZgTLlMf7Ik0pliw+0AUPm+PGIlsIUMHfB1OyxuWZl9BD3Kpqm61QHI61Ud77NAGRUfUA==} + '@mintlify/models@0.0.335': + resolution: {integrity: sha512-LYGD1y8y8wVurrKLHg6p1tgHta4dcmzeb/ZoRI9U+rBEIGvQaHoAMmV29EvuVZpJ7IKFnLoRKeCU1CkXpEuIVQ==} engines: {node: '>=18.0.0'} '@mintlify/openapi-parser@0.0.8': resolution: {integrity: sha512-9MBRq9lS4l4HITYCrqCL7T61MOb20q9IdU7HWhqYMNMM1jGO1nHjXasFy61yZ8V6gMZyyKQARGVoZ0ZrYN48Og==} engines: {node: '>=18'} - '@mintlify/prebuild@1.0.926': - resolution: {integrity: sha512-ZpbQFHD5YPeCFg8iCG3QASFKcB7c7Ib54qO7vo9c6CLY0hrcvQuY8upDNhujFDmK+g/Khnk1wF5T7mvkbH4CkQ==} - - '@mintlify/previewing@4.0.984': - resolution: {integrity: sha512-aAFPpghC6mctVd5nNZ8SYNl6pIt8DWX6F2JnefSjPj7Iglw2c+JTzEsaCoaVPbd7F3QfVfCax9bzZlKeXmciEw==} - engines: {node: '>=18.0.0'} + '@mintlify/prebuild@1.0.1143': + resolution: {integrity: sha512-DEdhlhIoaTgkKC5PJg4NBRCYuRzXE1sH5BSYi2k5I2R3u5T+F4Zlr4YqkjVwwolbZkmjbmQDC1xDyxAH3A5FWA==} - '@mintlify/scraping@4.0.522': - resolution: {integrity: sha512-PL2k52WT5S5OAgnT2K13bP7J2El6XwiVvQlrLvxDYw5KMMV+y34YVJI8ZscKb4trjitWDgyK0UTq2KN6NQgn6g==} + '@mintlify/previewing@4.0.1209': + resolution: {integrity: sha512-SkjwVNVhCSUp/LL7/AbVJX1wf5RyFcFR5ypRfygD4aEg5T/eZtzgrUsXZRXniG6683UKM/G1lzQaUAvb7AooRQ==} engines: {node: '>=18.0.0'} - hasBin: true - '@mintlify/scraping@4.0.650': - resolution: {integrity: sha512-aZmpHp9UqaE6uO8JsD1L9EXrV2FZ6PpofCNNVT/StcF6XiNVm9VC5g25U2MSb5qx0RgXJJ8Z1F3aUP6IdrBnaw==} + '@mintlify/scraping@4.0.861': + resolution: {integrity: sha512-Kfr1oFR0k8UKOg3R+OGuf9HXhHacGOX+KzjIbkEwawDu3Zrff5m22zt3iQjW/I5nOhRN9JzKq3MiWwCXMm4Beg==} engines: {node: '>=18.0.0'} hasBin: true - '@mintlify/validation@0.1.555': - resolution: {integrity: sha512-11QVUReL4N5u8wSCgZt4RN7PA0jYQoMEBZ5IrUp5pgb5ZJBOoGV/vPsQrxPPa1cxsUDAuToNhtGxRQtOav/w8w==} - - '@mintlify/validation@0.1.626': - resolution: {integrity: sha512-Ltn28sfiTzbBWlC/qhUDzWC80s9szhdg3p1YyhNulmI33zlvg5cyNQbty7CEgvZxGaATd17J+cS1peUVMCSYog==} + '@mintlify/validation@0.1.776': + resolution: {integrity: sha512-Zs/iwO0IhfsOcLJitVondFzF9ODmdPVSmPIQSLN0R6d8XzrVX7/PoaHEI76xhv0k7PxK11TQV3BfQZGNXmk+FA==} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -429,8 +418,11 @@ packages: '@openapi-contrib/openapi-schema-to-json-schema@3.2.0': resolution: {integrity: sha512-Gj6C0JwCr8arj0sYuslWXUBSP/KnUlEGnPW4qxlXvAl543oaNQgMgIgkQUA6vs5BCCvwTEiL8m/wdWzfl4UvSw==} - '@puppeteer/browsers@2.3.0': - resolution: {integrity: sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==} + '@posthog/core@1.7.1': + resolution: {integrity: sha512-kjK0eFMIpKo9GXIbts8VtAknsoZ18oZorANdtuTj1CbgS28t4ZVq//HAWhnxEuXRTrtkd+SUJ6Ux3j2Af8NCuA==} + + '@puppeteer/browsers@2.7.1': + resolution: {integrity: sha512-MK7rtm8JjaxPN7Mf1JdZIZKPD2Z+W7osvrC1vjpvfOX1K0awDIHYbNi89f7eotp7eMUn2shWnt03HwVbriXtKQ==} engines: {node: '>=18'} hasBin: true @@ -775,9 +767,6 @@ packages: '@types/acorn@4.0.6': resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} - '@types/cookie@0.4.1': - resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} - '@types/cors@2.8.19': resolution: {integrity: sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==} @@ -832,6 +821,9 @@ packages: '@types/urijs@1.19.26': resolution: {integrity: sha512-wkXrVzX5yoqLnndOwFsieJA7oKM8cNkOKJtf/3vVGSUFkWDKZvFHpIl9Pvqb/T9UsawBBFMTTD8xu7sK5MWuvg==} + '@types/ws@8.18.1': + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} @@ -875,6 +867,10 @@ packages: resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} engines: {node: '>=12.0'} + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + agent-base@7.1.4: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} @@ -1006,11 +1002,8 @@ packages: resolution: {integrity: sha512-yOA4wFeI7ET3v32Di/sUybQ+ttP20JHSW3mxLuNGeO0uD6PPcvLrIQXSvy/rhJOWU5JrYh7U4OHplWMmtAtjMg==} engines: {node: '>=0.11'} - axios@1.10.0: - resolution: {integrity: sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==} - - axios@1.13.2: - resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==} + axios@1.16.1: + resolution: {integrity: sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==} b4a@1.8.0: resolution: {integrity: sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==} @@ -1084,8 +1077,11 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} - body-parser@1.20.1: - resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + body-parser@1.20.5: + resolution: {integrity: sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} brace-expansion@1.1.12: @@ -1171,12 +1167,15 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} - chromium-bidi@0.6.2: - resolution: {integrity: sha512-4WVBa6ijmUTVr9cZD4eicQD8Mdy/HCX3bzEIYYpmk0glqYLoWH+LqQEvV9RpDRzoQSbY1KJHloYXbDMXMbDPhg==} + chromium-bidi@2.1.2: + resolution: {integrity: sha512-vtRWBK2uImo5/W2oG6/cDkkHSm+2t6VHgnj+Rcwhb0pP74OoUb4GipyRX/T/y39gYQPhioP0DPShn+A7P6CHNw==} peerDependencies: devtools-protocol: '*' @@ -1269,12 +1268,8 @@ packages: cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - cookie@0.4.2: - resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} - engines: {node: '>= 0.6'} - - cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} cors@2.8.6: @@ -1290,6 +1285,10 @@ packages: typescript: optional: true + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} @@ -1358,6 +1357,10 @@ packages: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + defer-to-connect@2.0.1: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} @@ -1412,8 +1415,8 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - devtools-protocol@0.0.1312386: - resolution: {integrity: sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==} + devtools-protocol@0.0.1402036: + resolution: {integrity: sha512-JwAYQgEvm3yD45CHB+RmF5kMbWtXBaOGwuxa87sZogHcLCv8c/IqnThaoQ1y60d7pXWjSKWQphPEc+1rAScVdg==} didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} @@ -1442,8 +1445,8 @@ packages: emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} end-of-stream@1.4.5: @@ -1453,8 +1456,8 @@ packages: resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} engines: {node: '>=10.0.0'} - engine.io@6.5.5: - resolution: {integrity: sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==} + engine.io@6.6.9: + resolution: {integrity: sha512-clKkw4C7nJ22mGgoVcCg6V/W/TxdNyIOTr89k2ONZu81qqkddPFDF0LXcbAwhzPD8DjkiRCjzuiO6Y+fkpD4vg==} engines: {node: '>=10.2.0'} entities@6.0.1: @@ -1574,8 +1577,12 @@ packages: events-universal@1.0.1: resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==} - express@4.18.2: - resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} + expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + + express@4.22.0: + resolution: {integrity: sha512-c2iPh3xp5vvCLgaHK03+mWLFPhox7j1LwyxcZwFVApEv5i0X+IjPpbT50SJJwwLpdBVfp45AkK/v+AFgv/XlfQ==} engines: {node: '>= 0.10.0'} extend@3.0.2: @@ -1628,12 +1635,12 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - finalhandler@1.2.0: - resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + finalhandler@1.3.2: + resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==} engines: {node: '>= 0.8'} - follow-redirects@1.15.11: - resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + follow-redirects@1.16.0: + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -1661,6 +1668,10 @@ packages: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} + fractional-indexing@3.2.0: + resolution: {integrity: sha512-PcOxmqwYCW7O2ovKRU8OoQQj2yqTfEB/yeTYk4gPid6dN5ODRfU1hXd9tTVZzax/0NkO7AxpHykvZnT1aYp/BQ==} + engines: {node: ^14.13.1 || >=16.0.0} + fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} @@ -1668,6 +1679,9 @@ packages: front-matter@4.0.2: resolution: {integrity: sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==} + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + fs-extra@11.1.0: resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==} engines: {node: '>=14.14'} @@ -1680,9 +1694,8 @@ packages: resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} engines: {node: '>=14.14'} - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} @@ -1742,6 +1755,9 @@ packages: resolution: {integrity: sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==} engines: {node: '>= 14'} + github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -1750,6 +1766,10 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob@7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} @@ -1866,6 +1886,10 @@ packages: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} + http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} @@ -1874,6 +1898,10 @@ packages: resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} engines: {node: '>=10.19.0'} + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + https-proxy-agent@7.0.6: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} @@ -1907,9 +1935,16 @@ packages: resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} engines: {node: '>=12'} + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + ink-spinner@5.0.0: resolution: {integrity: sha512-EYEasbEjkqLGyPOUc8hBJZNuC5GvXGMLu0w5gdTNskPc7Izc5vO3tdQEYnzvshucyGCBXc86ig0ujXPMWaQCdA==} engines: {node: '>=14.16'} @@ -2118,10 +2153,16 @@ packages: isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + jiti@1.21.7: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true + jose@6.2.3: + resolution: {integrity: sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -2129,8 +2170,8 @@ packages: resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} hasBin: true - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true jsep@1.4.0: @@ -2165,6 +2206,9 @@ packages: resolution: {integrity: sha512-cjHooZUmIAUmDsHBN+1n8LaZdpmbj03LtYeYPyuYB7OuloiaeaV6N4LcfjcnHVzGWjVQmKrxxTrpDcmSzEZQwQ==} hasBin: true + keytar@7.9.0: + resolution: {integrity: sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -2179,10 +2223,6 @@ packages: resolution: {integrity: sha512-KZ9W9nWDT7rF7Dazg8xyLHGLrmpgq2nVNFUckhqdW3szVP6YhCpp/RAnpmVExA9JvrMynjwSLVrEj3AepHR6ew==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - lilconfig@3.1.3: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} @@ -2193,12 +2233,12 @@ packages: lodash.topath@4.5.2: resolution: {integrity: sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==} - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - lodash@4.17.23: resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} + longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -2292,8 +2332,8 @@ packages: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} - merge-descriptors@1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} @@ -2446,30 +2486,27 @@ packages: minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} + engines: {node: '>= 18'} - mintlify@4.2.417: - resolution: {integrity: sha512-/Fh5XaL+DUYLvbkUWhlRVc+g6/xh47Mgxnj7Ns05N09EDXS+o38l6vmBcJXuULpc5yhSXfDVtF1rsax+Xi1lew==} + mintlify@4.2.678: + resolution: {integrity: sha512-RWLXdKXFPD91RMjWmOtFcC1I52H+c/ASHIHjhcqcJyqeRjs7tr08EcpW/j9aPdl8SA7Ug2XqHGhLD1qUEbKa3A==} engines: {node: '>=18.0.0'} hasBin: true mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true + mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -2489,6 +2526,9 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + napi-build-utils@2.0.0: + resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} + negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} @@ -2515,6 +2555,13 @@ packages: nlcst-to-string@4.0.0: resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==} + node-abi@3.94.0: + resolution: {integrity: sha512-W5ZNO5KRPB5TkYmGVD9F6YqhsglXJzE6etpbmT+f6EQElhiX/UTG551cnsRGvLG3fyZEg9HwaDmNmj5nwJ4z9g==} + engines: {node: '>=10'} + + node-addon-api@4.3.0: + resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==} + node-fetch@2.6.7: resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} engines: {node: 4.x || >=6.0.0} @@ -2545,6 +2592,9 @@ packages: resolution: {integrity: sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==} engines: {node: '>=14.16'} + oauth4webapi@3.8.6: + resolution: {integrity: sha512-iwemM91xz8nryHti2yTmg5fhyEMVOkOXwHNqbvcATjyajb5oQxCQzrNOA6uElRHuMhQQTKUyFKV9y/CNyg25BQ==} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -2589,6 +2639,9 @@ packages: openapi-types@12.1.3: resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} + openid-client@6.8.2: + resolution: {integrity: sha512-uOvTCndr4udZsKihJ68H9bUICrriHdUVJ6Az+4Ns6cW55rwM5h0bjVIzDz2SxgOI84LKjFyjOFvERLzdTUROGA==} + own-keys@1.0.1: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} @@ -2642,11 +2695,19 @@ packages: resolution: {integrity: sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-to-regexp@0.1.7: - resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + path-to-regexp@0.1.13: + resolution: {integrity: sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==} pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} @@ -2715,10 +2776,20 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + postcss@8.5.14: + resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} engines: {node: ^10 || ^12 || >=14} + posthog-node@5.17.2: + resolution: {integrity: sha512-lz3YJOr0Nmiz0yHASaINEDHqoV+0bC3eD8aZAG+Ky292dAnVYul+ga/dMX8KCBXg8hHfKdxw0SztYD5j6dgUqQ==} + engines: {node: '>=20'} + + prebuild-install@7.1.3: + resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} + engines: {node: '>=10'} + deprecated: No longer maintained. Please contact the author of the relevant native addon; alternatives are available. + hasBin: true + progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} @@ -2740,6 +2811,10 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + proxy-from-env@2.1.0: + resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} + engines: {node: '>=10'} + public-ip@5.0.0: resolution: {integrity: sha512-xaH3pZMni/R2BG7ZXXaWS9Wc9wFlhyDVJF47IJ+3ali0TGv+2PsckKxbmo+rnx3ZxiV2wblVhtdS3bohAP6GGw==} engines: {node: ^14.13.1 || >=16.0.0} @@ -2747,18 +2822,22 @@ packages: pump@3.0.4: resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} - puppeteer-core@22.14.0: - resolution: {integrity: sha512-rl4tOY5LcA3e374GAlsGGHc05HL3eGNf5rZ+uxkl6id9zVZKcwcp1Z+Nd6byb6WPiPeecT/dwz8f/iUm+AZQSw==} + puppeteer-core@24.3.1: + resolution: {integrity: sha512-585ccfcTav4KmlSmYbwwOSeC8VdutQHn2Fuk0id/y/9OoeO7Gg5PK1aUGdZjEmos0TAq+pCpChqFurFbpNd3wA==} engines: {node: '>=18'} - puppeteer@22.14.0: - resolution: {integrity: sha512-MGTR6/pM8zmWbTdazb6FKnwIihzsSEXBPH49mFFU96DNZpQOevCAZMnjBZGlZRGRzRK6aADCavR6SQtrbv5dQw==} + puppeteer@24.3.1: + resolution: {integrity: sha512-k0OJ7itRwkr06owp0CP3f/PsRD7Pdw4DjoCUZvjGr+aNgS1z6n/61VajIp0uBjl+V5XAQO1v/3k9bzeZLWs9OQ==} engines: {node: '>=18'} deprecated: < 24.15.0 is no longer supported hasBin: true - qs@6.11.0: - resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + qs@6.14.2: + resolution: {integrity: sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==} + engines: {node: '>=0.6'} + + qs@6.15.3: + resolution: {integrity: sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==} engines: {node: '>=0.6'} queue-microtask@1.2.3: @@ -2772,10 +2851,14 @@ packages: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} - raw-body@2.5.1: - resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} + raw-body@2.5.3: + resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} engines: {node: '>= 0.8'} + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + react-dom@18.3.1: resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} peerDependencies: @@ -2824,6 +2907,10 @@ packages: read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -3009,16 +3096,16 @@ packages: engines: {node: '>=10'} hasBin: true - send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + send@0.19.2: + resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} engines: {node: '>= 0.8.0'} serialize-error@13.0.1: resolution: {integrity: sha512-bBZaRwLH9PN5HbLCjPId4dP5bNGEtumcErgOX952IsvOhVPrm3/AeK1y0UHA/QaPG701eg0yEnOKsCOC6X/kaA==} engines: {node: '>=20'} - serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + serve-static@1.16.3: + resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} engines: {node: '>= 0.8.0'} set-function-length@1.2.2: @@ -3043,6 +3130,14 @@ packages: resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + shiki@3.23.0: resolution: {integrity: sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA==} @@ -3050,6 +3145,10 @@ packages: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} engines: {node: '>= 0.4'} + side-channel-list@1.0.1: + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} + engines: {node: '>= 0.4'} + side-channel-map@1.0.1: resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} engines: {node: '>= 0.4'} @@ -3062,6 +3161,10 @@ packages: resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} engines: {node: '>= 0.4'} + side-channel@1.1.1: + resolution: {integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==} + engines: {node: '>= 0.4'} + signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -3069,10 +3172,16 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + simple-eval@1.0.1: resolution: {integrity: sha512-LH7FpTAkeD+y5xQC4fzS+tFtaNlvt3Ib1zKzvhjv/Y+cioV4zIuw4IZr2yhRLu67CWL7FR9/6KXKnjRoZTvGGQ==} engines: {node: '>=12'} + simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + simple-swizzle@0.2.4: resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} @@ -3095,8 +3204,8 @@ packages: resolution: {integrity: sha512-bPMmpy/5WWKHea5Y/jYAP6k74A+hvmRCQaJuJB6I/ML5JZq/KfNieUVo/3Mh7SAqn7TyFdIo6wqYHInG1MU1bQ==} engines: {node: '>=10.0.0'} - socket.io@4.7.2: - resolution: {integrity: sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==} + socket.io@4.8.0: + resolution: {integrity: sha512-8U6BEgGjQOfGz3HHTYaC/L1GaxDCJ/KM0XTkJly0EhZ5U/du9uNEZy4ZgYzEzIqlx2CMm25CrCqr1ck899eLNA==} engines: {node: '>=10.2.0'} socks-proxy-agent@8.0.5: @@ -3133,6 +3242,10 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} + stop-iteration-iterator@1.1.0: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} @@ -3160,6 +3273,9 @@ packages: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} engines: {node: '>= 0.4'} + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} @@ -3171,12 +3287,21 @@ packages: resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} engines: {node: '>=12'} + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + style-to-js@1.1.21: resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} style-to-object@1.0.14: resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} + sucrase@3.34.0: + resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} + engines: {node: '>=8'} + hasBin: true + sucrase@3.35.1: resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} engines: {node: '>=16 || 14 >=14.17'} @@ -3190,21 +3315,27 @@ packages: resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} engines: {node: '>=20'} - tailwindcss@3.4.4: - resolution: {integrity: sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==} + tailwindcss@3.4.17: + resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==} engines: {node: '>=14.0.0'} hasBin: true + tar-fs@2.1.5: + resolution: {integrity: sha512-OboTd8mmMhZDNPV+UjQcK9yKAatXu2aJ+r1w4im1Otd4M4fl2hwvdoXUxIYHFTHWK/3y3FarBP70v3vwmGlOxw==} + tar-fs@3.1.2: resolution: {integrity: sha512-QGxxTxxyleAdyM3kpFs14ymbYmNFrfY+pHj7Z8FgtbZ7w2//VAgLMac7sT6nRpIHjppXO2AwwEOg0bPFVRcmXw==} + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + tar-stream@3.1.8: resolution: {integrity: sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ==} - tar@6.1.15: - resolution: {integrity: sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==} - engines: {node: '>=10'} - deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + tar@7.5.15: + resolution: {integrity: sha512-dzGK0boVlC4W5QFuQN1EFSl3bIDYsk7Tj40U6eIBnK2k/8ml7TZ5agbI5j5+qnoVcAA+rNtBml8SEiLxZpNqRQ==} + engines: {node: '>=18'} teex@1.0.1: resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==} @@ -3219,9 +3350,6 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} @@ -3258,6 +3386,9 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + twoslash-protocol@0.3.6: resolution: {integrity: sha512-FHGsJ9Q+EsNr5bEbgG3hnbkvEBdW5STgPU824AHUjB4kw0Dn4p8tABT7Ncg1Ie6V0+mDg3Qpy41VafZXcQhWMA==} @@ -3298,6 +3429,9 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} + typed-query-selector@2.12.2: + resolution: {integrity: sha512-EOPFbyIub4ngnEdqi2yOcNeDLaX/0jcE1JoAXQDDMIthap7FoN795lc/SHfIq2d416VufXpM8z/lD+WRm2gfOQ==} + typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} @@ -3307,9 +3441,6 @@ packages: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} - unbzip2-stream@1.4.3: - resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} - undici-types@7.18.2: resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} @@ -3378,9 +3509,6 @@ packages: urijs@1.19.11: resolution: {integrity: sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==} - urlpattern-polyfill@10.0.0: - resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==} - use-callback-ref@1.3.3: resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} engines: {node: '>=10'} @@ -3412,8 +3540,8 @@ packages: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} - uuid@11.1.0: - resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + uuid@11.1.1: + resolution: {integrity: sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==} hasBin: true vary@1.1.2: @@ -3457,6 +3585,11 @@ packages: resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} engines: {node: '>= 0.4'} + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + widest-line@5.0.0: resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} engines: {node: '>=18'} @@ -3476,8 +3609,8 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - ws@8.17.1: - resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + ws@8.18.3: + resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -3488,8 +3621,8 @@ packages: utf-8-validate: optional: true - ws@8.18.3: - resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} + ws@8.19.0: + resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -3500,8 +3633,8 @@ packages: utf-8-validate: optional: true - ws@8.19.0: - resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} + ws@8.21.0: + resolution: {integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -3529,8 +3662,9 @@ packages: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} yaml@2.8.2: resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} @@ -3564,15 +3698,15 @@ packages: peerDependencies: zod: ^3.20.0 - zod@3.21.4: - resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} - - zod@3.23.8: - resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} - zod@3.24.0: resolution: {integrity: sha512-Hz+wiY8yD0VLA2k/+nsg2Abez674dDGTai33SwNvMPuf9uIrBC9eFgIMQxBBbHFxVXi8W+5nX9DcAh9YNSQm/w==} + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + + zod@4.3.6: + resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} + zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -3609,7 +3743,7 @@ snapshots: ajv-errors: 3.0.0(ajv@8.18.0) ajv-formats: 2.1.1(ajv@8.18.0) avsc: 5.7.9 - js-yaml: 4.1.0 + js-yaml: 4.1.1 jsonpath-plus: 10.4.0 node-fetch: 2.6.7 transitivePeerDependencies: @@ -3851,6 +3985,10 @@ snapshots: optionalDependencies: '@types/node': 25.3.5 + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.3 + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -3915,16 +4053,15 @@ snapshots: '@types/react': 19.2.14 react: 19.2.3 - '@mintlify/cli@4.0.1020(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/node@25.3.5)(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(typescript@5.9.3)': + '@mintlify/cli@4.0.1281(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/node@25.3.5)(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(typescript@5.9.3)': dependencies: '@inquirer/prompts': 7.9.0(@types/node@25.3.5) - '@mintlify/common': 1.0.788(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) - '@mintlify/link-rot': 3.0.955(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) - '@mintlify/models': 0.0.283 - '@mintlify/prebuild': 1.0.926(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) - '@mintlify/previewing': 4.0.984(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(typescript@5.9.3) - '@mintlify/scraping': 4.0.650(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) - '@mintlify/validation': 0.1.626(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/common': 1.0.996(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/link-rot': 3.0.1184(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/models': 0.0.335 + '@mintlify/prebuild': 1.0.1143(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/previewing': 4.0.1209(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(typescript@5.9.3) + '@mintlify/validation': 0.1.776(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) adm-zip: 0.5.16 chalk: 5.2.0 color: 4.2.3 @@ -3933,12 +4070,18 @@ snapshots: fs-extra: 11.2.0 ink: 6.3.0(@types/react@19.2.14)(react@19.2.3) inquirer: 12.3.0(@types/node@25.3.5) - js-yaml: 4.1.0 + js-yaml: 4.1.1 mdast-util-mdx-jsx: 3.2.0 + open: 8.4.2 + openid-client: 6.8.2 + posthog-node: 5.17.2 react: 19.2.3 semver: 7.7.2 unist-util-visit: 5.0.0 yargs: 17.7.1 + zod: 4.3.6 + optionalDependencies: + keytar: 7.9.0 transitivePeerDependencies: - '@radix-ui/react-popover' - '@types/node' @@ -3956,74 +4099,14 @@ snapshots: - typescript - utf-8-validate - '@mintlify/common@1.0.661(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': - dependencies: - '@asyncapi/parser': 3.4.0 - '@mintlify/mdx': 3.0.4(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) - '@mintlify/models': 0.0.255 - '@mintlify/openapi-parser': 0.0.8 - '@mintlify/validation': 0.1.555(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) - '@sindresorhus/slugify': 2.2.0 - '@types/mdast': 4.0.4 - acorn: 8.11.2 - acorn-jsx: 5.3.2(acorn@8.11.2) - color-blend: 4.0.0 - estree-util-to-js: 2.0.0 - estree-walker: 3.0.3 - front-matter: 4.0.2 - hast-util-from-html: 2.0.3 - hast-util-to-html: 9.0.4 - hast-util-to-text: 4.0.2 - hex-rgb: 5.0.0 - ignore: 7.0.5 - js-yaml: 4.1.0 - lodash: 4.17.21 - mdast-util-from-markdown: 2.0.2 - mdast-util-gfm: 3.0.0 - mdast-util-mdx: 3.0.0 - mdast-util-mdx-jsx: 3.1.3 - micromark-extension-gfm: 3.0.0 - micromark-extension-mdx-jsx: 3.0.1 - micromark-extension-mdxjs: 3.0.0 - openapi-types: 12.1.3 - postcss: 8.5.6 - rehype-stringify: 10.0.1 - remark: 15.0.1 - remark-frontmatter: 5.0.0 - remark-gfm: 4.0.0 - remark-math: 6.0.0 - remark-mdx: 3.1.0 - remark-parse: 11.0.0 - remark-rehype: 11.1.1 - remark-stringify: 11.0.0 - tailwindcss: 3.4.4 - unified: 11.0.5 - unist-builder: 4.0.0 - unist-util-map: 4.0.0 - unist-util-remove: 4.0.0 - unist-util-remove-position: 5.0.0 - unist-util-visit: 5.0.0 - unist-util-visit-parents: 6.0.1 - vfile: 6.0.3 - transitivePeerDependencies: - - '@radix-ui/react-popover' - - '@types/react' - - debug - - encoding - - react - - react-dom - - supports-color - - ts-node - - typescript - - '@mintlify/common@1.0.788(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': + '@mintlify/common@1.0.996(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': dependencies: '@asyncapi/parser': 3.4.0 '@asyncapi/specs': 6.8.1 '@mintlify/mdx': 3.0.4(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) - '@mintlify/models': 0.0.283 + '@mintlify/models': 0.0.335 '@mintlify/openapi-parser': 0.0.8 - '@mintlify/validation': 0.1.626(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/validation': 0.1.776(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) '@sindresorhus/slugify': 2.2.0 '@types/mdast': 4.0.4 acorn: 8.11.2 @@ -4037,8 +4120,8 @@ snapshots: hast-util-to-text: 4.0.2 hex-rgb: 5.0.0 ignore: 7.0.5 - js-yaml: 4.1.0 - lodash: 4.17.21 + js-yaml: 4.1.1 + lodash: 4.18.1 mdast-util-from-markdown: 2.0.2 mdast-util-gfm: 3.0.0 mdast-util-mdx: 3.0.0 @@ -4047,7 +4130,7 @@ snapshots: micromark-extension-mdx-jsx: 3.0.1 micromark-extension-mdxjs: 3.0.0 openapi-types: 12.1.3 - postcss: 8.5.6 + postcss: 8.5.14 rehype-stringify: 10.0.1 remark: 15.0.1 remark-frontmatter: 5.0.0 @@ -4057,8 +4140,8 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.1 remark-stringify: 11.0.0 - sucrase: 3.35.1 - tailwindcss: 3.4.4 + sucrase: 3.34.0 + tailwindcss-v3: tailwindcss@3.4.17 unified: 11.0.5 unist-builder: 4.0.0 unist-util-map: 4.0.0 @@ -4079,13 +4162,14 @@ snapshots: - ts-node - typescript - '@mintlify/link-rot@3.0.955(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': + '@mintlify/link-rot@3.0.1184(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': dependencies: - '@mintlify/common': 1.0.788(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) - '@mintlify/prebuild': 1.0.926(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) - '@mintlify/previewing': 4.0.984(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(typescript@5.9.3) - '@mintlify/scraping': 4.0.522(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) - '@mintlify/validation': 0.1.626(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/common': 1.0.996(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/models': 0.0.335 + '@mintlify/prebuild': 1.0.1143(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/previewing': 4.0.1209(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(typescript@5.9.3) + '@mintlify/scraping': 4.0.861(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/validation': 0.1.776(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) fs-extra: 11.1.0 unist-util-visit: 4.1.2 transitivePeerDependencies: @@ -4131,19 +4215,13 @@ snapshots: - supports-color - typescript - '@mintlify/models@0.0.255': - dependencies: - axios: 1.10.0 - openapi-types: 12.1.3 - transitivePeerDependencies: - - debug - - '@mintlify/models@0.0.283': + '@mintlify/models@0.0.335': dependencies: - axios: 1.13.2 + axios: 1.16.1 openapi-types: 12.1.3 transitivePeerDependencies: - debug + - supports-color '@mintlify/openapi-parser@0.0.8': dependencies: @@ -4154,22 +4232,22 @@ snapshots: leven: 4.1.0 yaml: 2.8.2 - '@mintlify/prebuild@1.0.926(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': + '@mintlify/prebuild@1.0.1143(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': dependencies: - '@mintlify/common': 1.0.788(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/common': 1.0.996(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) '@mintlify/openapi-parser': 0.0.8 - '@mintlify/scraping': 4.0.650(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) - '@mintlify/validation': 0.1.626(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/scraping': 4.0.861(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/validation': 0.1.776(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) chalk: 5.3.0 favicons: 7.2.0 front-matter: 4.0.2 fs-extra: 11.1.0 - js-yaml: 4.1.0 + js-yaml: 4.1.1 openapi-types: 12.1.3 sharp: 0.33.5 sharp-ico: 0.1.5 unist-util-visit: 4.1.2 - uuid: 11.1.0 + uuid: 11.1.1 transitivePeerDependencies: - '@radix-ui/react-popover' - '@types/react' @@ -4186,26 +4264,27 @@ snapshots: - typescript - utf-8-validate - '@mintlify/previewing@4.0.984(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(typescript@5.9.3)': + '@mintlify/previewing@4.0.1209(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(typescript@5.9.3)': dependencies: - '@mintlify/common': 1.0.788(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) - '@mintlify/prebuild': 1.0.926(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) - '@mintlify/validation': 0.1.626(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/common': 1.0.996(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/prebuild': 1.0.1143(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/validation': 0.1.776(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + adm-zip: 0.5.16 better-opn: 3.0.2 chalk: 5.2.0 chokidar: 3.5.3 - express: 4.18.2 + express: 4.22.0 front-matter: 4.0.2 fs-extra: 11.1.0 got: 13.0.0 ink: 6.3.0(@types/react@19.2.14)(react@19.2.3) ink-spinner: 5.0.0(ink@6.3.0(@types/react@19.2.14)(react@19.2.3))(react@19.2.3) is-online: 10.0.0 - js-yaml: 4.1.0 + js-yaml: 4.1.1 openapi-types: 12.1.3 react: 19.2.3 - socket.io: 4.7.2 - tar: 6.1.15 + socket.io: 4.8.0 + tar: 7.5.15 unist-util-visit: 4.1.2 yargs: 17.7.1 transitivePeerDependencies: @@ -4224,51 +4303,16 @@ snapshots: - typescript - utf-8-validate - '@mintlify/scraping@4.0.522(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': + '@mintlify/scraping@4.0.861(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': dependencies: - '@mintlify/common': 1.0.661(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + '@mintlify/common': 1.0.996(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) '@mintlify/openapi-parser': 0.0.8 fs-extra: 11.1.1 hast-util-to-mdast: 10.1.0 - js-yaml: 4.1.0 + js-yaml: 4.1.1 mdast-util-mdx-jsx: 3.1.3 neotraverse: 0.6.18 - puppeteer: 22.14.0(typescript@5.9.3) - rehype-parse: 9.0.1 - remark-gfm: 4.0.0 - remark-mdx: 3.0.1 - remark-parse: 11.0.0 - remark-stringify: 11.0.0 - unified: 11.0.5 - unist-util-visit: 5.0.0 - yargs: 17.7.1 - zod: 3.21.4 - transitivePeerDependencies: - - '@radix-ui/react-popover' - - '@types/react' - - bare-abort-controller - - bare-buffer - - bufferutil - - debug - - encoding - - react - - react-dom - - react-native-b4a - - supports-color - - ts-node - - typescript - - utf-8-validate - - '@mintlify/scraping@4.0.650(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': - dependencies: - '@mintlify/common': 1.0.788(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) - '@mintlify/openapi-parser': 0.0.8 - fs-extra: 11.1.1 - hast-util-to-mdast: 10.1.0 - js-yaml: 4.1.0 - mdast-util-mdx-jsx: 3.1.3 - neotraverse: 0.6.18 - puppeteer: 22.14.0(typescript@5.9.3) + puppeteer: 24.3.1(typescript@5.9.3) rehype-parse: 9.0.1 remark-gfm: 4.0.0 remark-mdx: 3.0.1 @@ -4294,39 +4338,19 @@ snapshots: - typescript - utf-8-validate - '@mintlify/validation@0.1.555(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': - dependencies: - '@mintlify/mdx': 3.0.4(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) - '@mintlify/models': 0.0.255 - arktype: 2.1.27 - js-yaml: 4.1.0 - lcm: 0.0.3 - lodash: 4.17.21 - object-hash: 3.0.0 - openapi-types: 12.1.3 - uuid: 11.1.0 - zod: 3.21.4 - zod-to-json-schema: 3.20.4(zod@3.21.4) - transitivePeerDependencies: - - '@radix-ui/react-popover' - - '@types/react' - - debug - - react - - react-dom - - supports-color - - typescript - - '@mintlify/validation@0.1.626(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': + '@mintlify/validation@0.1.776(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3)': dependencies: '@mintlify/mdx': 3.0.4(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3)(typescript@5.9.3) - '@mintlify/models': 0.0.283 + '@mintlify/models': 0.0.335 arktype: 2.1.27 - js-yaml: 4.1.0 + fractional-indexing: 3.2.0 + js-yaml: 4.1.1 lcm: 0.0.3 - lodash: 4.17.21 + lodash: 4.18.1 + neotraverse: 0.6.18 object-hash: 3.0.0 openapi-types: 12.1.3 - uuid: 11.1.0 + uuid: 11.1.1 zod: 3.24.0 zod-to-json-schema: 3.20.4(zod@3.24.0) transitivePeerDependencies: @@ -4354,7 +4378,11 @@ snapshots: dependencies: fast-deep-equal: 3.1.3 - '@puppeteer/browsers@2.3.0': + '@posthog/core@1.7.1': + dependencies: + cross-spawn: 7.0.6 + + '@puppeteer/browsers@2.7.1': dependencies: debug: 4.4.3 extract-zip: 2.0.1 @@ -4362,7 +4390,6 @@ snapshots: proxy-agent: 6.5.0 semver: 7.7.2 tar-fs: 3.1.2 - unbzip2-stream: 1.4.3 yargs: 17.7.2 transitivePeerDependencies: - bare-abort-controller @@ -4617,7 +4644,7 @@ snapshots: '@stoplight/json-ref-readers@1.2.2': dependencies: - node-fetch: 2.6.7 + node-fetch: 2.7.0 tslib: 1.14.1 transitivePeerDependencies: - encoding @@ -4631,7 +4658,7 @@ snapshots: dependency-graph: 0.11.0 fast-memoize: 2.5.2 immer: 9.0.21 - lodash: 4.17.21 + lodash: 4.18.1 tslib: 2.8.1 urijs: 1.19.11 @@ -4641,7 +4668,7 @@ snapshots: '@stoplight/path': 1.3.2 '@stoplight/types': 13.20.0 jsonc-parser: 2.2.1 - lodash: 4.17.21 + lodash: 4.18.1 safe-stable-stringify: 1.1.1 '@stoplight/ordered-object-literal@1.0.5': {} @@ -4694,7 +4721,7 @@ snapshots: ajv-draft-04: 1.0.0(ajv@8.18.0) ajv-errors: 3.0.0(ajv@8.18.0) ajv-formats: 2.1.1(ajv@8.18.0) - lodash: 4.17.21 + lodash: 4.17.23 tslib: 2.8.1 transitivePeerDependencies: - encoding @@ -4722,7 +4749,7 @@ snapshots: '@stoplight/path': 1.3.2 '@stoplight/types': 13.20.0 abort-controller: 3.0.0 - lodash: 4.17.23 + lodash: 4.18.1 node-fetch: 2.7.0 tslib: 2.8.1 transitivePeerDependencies: @@ -4762,8 +4789,6 @@ snapshots: dependencies: '@types/estree': 1.0.8 - '@types/cookie@0.4.1': {} - '@types/cors@2.8.19': dependencies: '@types/node': 25.3.5 @@ -4818,6 +4843,10 @@ snapshots: '@types/urijs@1.19.26': {} + '@types/ws@8.18.1': + dependencies: + '@types/node': 25.3.5 + '@types/yauzl@2.10.3': dependencies: '@types/node': 25.3.5 @@ -4857,6 +4886,12 @@ snapshots: adm-zip@0.5.16: {} + agent-base@6.0.2: + dependencies: + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + agent-base@7.1.4: {} aggregate-error@4.0.1: @@ -4971,21 +5006,15 @@ snapshots: avsc@5.7.9: {} - axios@1.10.0: - dependencies: - follow-redirects: 1.15.11 - form-data: 4.0.5 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - - axios@1.13.2: + axios@1.16.1: dependencies: - follow-redirects: 1.15.11 + follow-redirects: 1.16.0 form-data: 4.0.5 - proxy-from-env: 1.1.0 + https-proxy-agent: 5.0.1 + proxy-from-env: 2.1.0 transitivePeerDependencies: - debug + - supports-color b4a@1.8.0: {} @@ -5026,7 +5055,8 @@ snapshots: dependencies: bare-path: 3.0.0 - base64-js@1.5.1: {} + base64-js@1.5.1: + optional: true base64id@2.0.0: {} @@ -5038,18 +5068,25 @@ snapshots: binary-extensions@2.3.0: {} - body-parser@1.20.1: + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + optional: true + + body-parser@1.20.5: dependencies: bytes: 3.1.2 content-type: 1.0.5 debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 - http-errors: 2.0.0 + http-errors: 2.0.1 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.11.0 - raw-body: 2.5.1 + qs: 6.15.3 + raw-body: 2.5.3 type-is: 1.6.18 unpipe: 1.0.0 transitivePeerDependencies: @@ -5070,6 +5107,7 @@ snapshots: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 + optional: true bytes@3.1.2: {} @@ -5148,14 +5186,16 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chownr@2.0.0: {} + chownr@1.1.4: + optional: true + + chownr@3.0.0: {} - chromium-bidi@0.6.2(devtools-protocol@0.0.1312386): + chromium-bidi@2.1.2(devtools-protocol@0.0.1402036): dependencies: - devtools-protocol: 0.0.1312386 + devtools-protocol: 0.0.1402036 mitt: 3.0.1 - urlpattern-polyfill: 10.0.0 - zod: 3.23.8 + zod: 3.25.76 clean-stack@4.2.0: dependencies: @@ -5230,9 +5270,7 @@ snapshots: cookie-signature@1.0.6: {} - cookie@0.4.2: {} - - cookie@0.5.0: {} + cookie@0.7.2: {} cors@2.8.6: dependencies: @@ -5243,11 +5281,17 @@ snapshots: dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 parse-json: 5.2.0 optionalDependencies: typescript: 5.9.3 + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + cssesc@3.0.0: {} cssfilter@0.0.10: {} @@ -5305,6 +5349,9 @@ snapshots: dependencies: mimic-response: 3.1.0 + deep-extend@0.6.0: + optional: true + defer-to-connect@2.0.1: {} define-data-property@1.1.4: @@ -5352,7 +5399,7 @@ snapshots: dependencies: dequal: 2.0.3 - devtools-protocol@0.0.1312386: {} + devtools-protocol@0.0.1402036: {} didyoumean@1.2.2: {} @@ -5378,7 +5425,7 @@ snapshots: emoji-regex@8.0.0: {} - encodeurl@1.0.2: {} + encodeurl@2.0.0: {} end-of-stream@1.4.5: dependencies: @@ -5386,18 +5433,18 @@ snapshots: engine.io-parser@5.2.3: {} - engine.io@6.5.5: + engine.io@6.6.9: dependencies: - '@types/cookie': 0.4.1 '@types/cors': 2.8.19 '@types/node': 25.3.5 + '@types/ws': 8.18.1 accepts: 1.3.8 base64id: 2.0.0 - cookie: 0.4.2 + cookie: 0.7.2 cors: 2.8.6 - debug: 4.3.7 + debug: 4.4.3 engine.io-parser: 5.2.3 - ws: 8.17.1 + ws: 8.21.0 transitivePeerDependencies: - bufferutil - supports-color @@ -5583,34 +5630,37 @@ snapshots: transitivePeerDependencies: - bare-abort-controller - express@4.18.2: + expand-template@2.0.3: + optional: true + + express@4.22.0: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.1 + body-parser: 1.20.5 content-disposition: 0.5.4 content-type: 1.0.5 - cookie: 0.5.0 + cookie: 0.7.2 cookie-signature: 1.0.6 debug: 2.6.9 depd: 2.0.0 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 1.2.0 + finalhandler: 1.3.2 fresh: 0.5.2 http-errors: 2.0.0 - merge-descriptors: 1.0.1 + merge-descriptors: 1.0.3 methods: 1.1.2 on-finished: 2.4.1 parseurl: 1.3.3 - path-to-regexp: 0.1.7 + path-to-regexp: 0.1.13 proxy-addr: 2.0.7 - qs: 6.11.0 + qs: 6.14.2 range-parser: 1.2.1 safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 + send: 0.19.2 + serve-static: 1.16.3 setprototypeof: 1.2.0 statuses: 2.0.1 type-is: 1.6.18 @@ -5673,19 +5723,19 @@ snapshots: dependencies: to-regex-range: 5.0.1 - finalhandler@1.2.0: + finalhandler@1.3.2: dependencies: debug: 2.6.9 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 parseurl: 1.3.3 - statuses: 2.0.1 + statuses: 2.0.2 unpipe: 1.0.0 transitivePeerDependencies: - supports-color - follow-redirects@1.15.11: {} + follow-redirects@1.16.0: {} for-each@0.3.5: dependencies: @@ -5705,12 +5755,17 @@ snapshots: forwarded@0.2.0: {} + fractional-indexing@3.2.0: {} + fresh@0.5.2: {} front-matter@4.0.2: dependencies: js-yaml: 3.14.2 + fs-constants@1.0.0: + optional: true + fs-extra@11.1.0: dependencies: graceful-fs: 4.2.11 @@ -5729,9 +5784,7 @@ snapshots: jsonfile: 6.2.0 universalify: 2.0.1 - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 + fs.realpath@1.0.0: {} fsevents@2.3.3: optional: true @@ -5797,6 +5850,9 @@ snapshots: transitivePeerDependencies: - supports-color + github-from-package@0.0.0: + optional: true + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -5805,6 +5861,15 @@ snapshots: dependencies: is-glob: 4.0.3 + glob@7.1.6: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + globalthis@1.0.4: dependencies: define-properties: 1.2.1 @@ -6055,6 +6120,14 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 + http-errors@2.0.1: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.2 + toidentifier: 1.0.1 + http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.4 @@ -6067,6 +6140,13 @@ snapshots: quick-lru: 5.1.1 resolve-alpn: 1.2.1 + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 @@ -6084,7 +6164,8 @@ snapshots: dependencies: safer-buffer: 2.1.2 - ieee754@1.2.1: {} + ieee754@1.2.1: + optional: true ignore@7.0.5: {} @@ -6097,8 +6178,16 @@ snapshots: indent-string@5.0.0: {} + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + inherits@2.0.4: {} + ini@1.3.8: + optional: true + ink-spinner@5.0.0(ink@6.3.0(@types/react@19.2.14)(react@19.2.3))(react@19.2.3): dependencies: cli-spinners: 2.9.2 @@ -6320,8 +6409,12 @@ snapshots: isarray@2.0.5: {} + isexe@2.0.0: {} + jiti@1.21.7: {} + jose@6.2.3: {} + js-tokens@4.0.0: {} js-yaml@3.14.2: @@ -6329,7 +6422,7 @@ snapshots: argparse: 1.0.10 esprima: 4.0.1 - js-yaml@4.1.0: + js-yaml@4.1.1: dependencies: argparse: 2.0.1 @@ -6361,6 +6454,12 @@ snapshots: dependencies: commander: 8.3.0 + keytar@7.9.0: + dependencies: + node-addon-api: 4.3.0 + prebuild-install: 7.1.3 + optional: true + keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -6373,18 +6472,16 @@ snapshots: leven@4.1.0: {} - lilconfig@2.1.0: {} - lilconfig@3.1.3: {} lines-and-columns@1.2.4: {} lodash.topath@4.5.2: {} - lodash@4.17.21: {} - lodash@4.17.23: {} + lodash@4.18.1: {} + longest-streak@3.1.0: {} loose-envify@1.4.0: @@ -6406,7 +6503,7 @@ snapshots: '@types/mdast': 4.0.4 escape-string-regexp: 5.0.0 unist-util-is: 6.0.1 - unist-util-visit-parents: 6.0.1 + unist-util-visit-parents: 6.0.2 mdast-util-from-markdown@2.0.2: dependencies: @@ -6447,7 +6544,7 @@ snapshots: '@types/mdast': 4.0.4 devlop: 1.1.0 escape-string-regexp: 5.0.0 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 mdast-util-to-markdown: 2.1.2 micromark-extension-frontmatter: 2.0.0 transitivePeerDependencies: @@ -6465,7 +6562,7 @@ snapshots: dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 mdast-util-to-markdown: 2.1.2 micromark-util-normalize-identifier: 2.0.1 transitivePeerDependencies: @@ -6474,7 +6571,7 @@ snapshots: mdast-util-gfm-strikethrough@2.0.0: dependencies: '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color @@ -6484,7 +6581,7 @@ snapshots: '@types/mdast': 4.0.4 devlop: 1.1.0 markdown-table: 3.0.4 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color @@ -6493,14 +6590,14 @@ snapshots: dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color mdast-util-gfm@3.0.0: dependencies: - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 mdast-util-gfm-autolink-literal: 2.0.1 mdast-util-gfm-footnote: 2.1.0 mdast-util-gfm-strikethrough: 2.0.0 @@ -6528,7 +6625,7 @@ snapshots: '@types/mdast': 4.0.4 devlop: 1.1.0 longest-streak: 3.1.0 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 mdast-util-to-markdown: 2.1.2 unist-util-remove-position: 5.0.0 transitivePeerDependencies: @@ -6540,7 +6637,7 @@ snapshots: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color @@ -6581,7 +6678,7 @@ snapshots: mdast-util-mdx@3.0.0: dependencies: - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 mdast-util-mdx-expression: 2.0.1 mdast-util-mdx-jsx: 3.2.0 mdast-util-mdxjs-esm: 2.0.1 @@ -6595,7 +6692,7 @@ snapshots: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color @@ -6635,7 +6732,7 @@ snapshots: media-typer@0.3.0: {} - merge-descriptors@1.0.1: {} + merge-descriptors@1.0.3: {} merge2@1.4.1: {} @@ -6778,8 +6875,8 @@ snapshots: micromark-extension-mdxjs@3.0.0: dependencies: - acorn: 8.11.2 - acorn-jsx: 5.3.2(acorn@8.11.2) + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) micromark-extension-mdx-expression: 3.0.1 micromark-extension-mdx-jsx: 3.0.1 micromark-extension-mdx-md: 2.0.0 @@ -6946,20 +7043,18 @@ snapshots: dependencies: brace-expansion: 1.1.12 - minipass@3.3.6: - dependencies: - yallist: 4.0.0 + minimist@1.2.8: + optional: true - minipass@5.0.0: {} + minipass@7.1.3: {} - minizlib@2.1.2: + minizlib@3.1.0: dependencies: - minipass: 3.3.6 - yallist: 4.0.0 + minipass: 7.1.3 - mintlify@4.2.417(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/node@25.3.5)(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(typescript@5.9.3): + mintlify@4.2.678(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/node@25.3.5)(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(typescript@5.9.3): dependencies: - '@mintlify/cli': 4.0.1020(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/node@25.3.5)(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(typescript@5.9.3) + '@mintlify/cli': 4.0.1281(@radix-ui/react-popover@1.1.15(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(react@19.2.3))(@types/node@25.3.5)(@types/react@19.2.14)(react-dom@18.3.1(react@19.2.3))(typescript@5.9.3) transitivePeerDependencies: - '@radix-ui/react-popover' - '@types/node' @@ -6979,7 +7074,8 @@ snapshots: mitt@3.0.1: {} - mkdirp@1.0.4: {} + mkdirp-classic@0.5.3: + optional: true ms@2.0.0: {} @@ -6995,6 +7091,9 @@ snapshots: nanoid@3.3.11: {} + napi-build-utils@2.0.0: + optional: true + negotiator@0.6.3: {} neotraverse@0.6.18: {} @@ -7031,6 +7130,14 @@ snapshots: dependencies: '@types/nlcst': 2.0.3 + node-abi@3.94.0: + dependencies: + semver: 7.7.2 + optional: true + + node-addon-api@4.3.0: + optional: true + node-fetch@2.6.7: dependencies: whatwg-url: 5.0.0 @@ -7045,6 +7152,8 @@ snapshots: normalize-url@8.1.1: {} + oauth4webapi@3.8.6: {} + object-assign@4.1.1: {} object-hash@3.0.0: {} @@ -7090,6 +7199,11 @@ snapshots: openapi-types@12.1.3: {} + openid-client@6.8.2: + dependencies: + jose: 6.2.3 + oauth4webapi: 3.8.6 + own-keys@1.0.1: dependencies: get-intrinsic: 1.3.0 @@ -7166,9 +7280,13 @@ snapshots: patch-console@2.0.0: {} + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + path-parse@1.0.7: {} - path-to-regexp@0.1.7: {} + path-to-regexp@0.1.13: {} pend@1.2.0: {} @@ -7186,28 +7304,28 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-import@15.1.0(postcss@8.5.6): + postcss-import@15.1.0(postcss@8.5.14): dependencies: - postcss: 8.5.6 + postcss: 8.5.14 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.11 - postcss-js@4.1.0(postcss@8.5.6): + postcss-js@4.1.0(postcss@8.5.14): dependencies: camelcase-css: 2.0.1 - postcss: 8.5.6 + postcss: 8.5.14 - postcss-load-config@4.0.2(postcss@8.5.6): + postcss-load-config@4.0.2(postcss@8.5.14): dependencies: lilconfig: 3.1.3 yaml: 2.8.2 optionalDependencies: - postcss: 8.5.6 + postcss: 8.5.14 - postcss-nested@6.2.0(postcss@8.5.6): + postcss-nested@6.2.0(postcss@8.5.14): dependencies: - postcss: 8.5.6 + postcss: 8.5.14 postcss-selector-parser: 6.1.2 postcss-selector-parser@6.1.2: @@ -7217,12 +7335,32 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss@8.5.6: + postcss@8.5.14: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 + posthog-node@5.17.2: + dependencies: + '@posthog/core': 1.7.1 + + prebuild-install@7.1.3: + dependencies: + detect-libc: 2.1.2 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 2.0.0 + node-abi: 3.94.0 + pump: 3.0.4 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.5 + tunnel-agent: 0.6.0 + optional: true + progress@2.0.3: {} property-information@6.5.0: {} @@ -7249,6 +7387,8 @@ snapshots: proxy-from-env@1.1.0: {} + proxy-from-env@2.1.0: {} + public-ip@5.0.0: dependencies: dns-socket: 4.2.2 @@ -7260,12 +7400,13 @@ snapshots: end-of-stream: 1.4.5 once: 1.4.0 - puppeteer-core@22.14.0: + puppeteer-core@24.3.1: dependencies: - '@puppeteer/browsers': 2.3.0 - chromium-bidi: 0.6.2(devtools-protocol@0.0.1312386) + '@puppeteer/browsers': 2.7.1 + chromium-bidi: 2.1.2(devtools-protocol@0.0.1402036) debug: 4.4.3 - devtools-protocol: 0.0.1312386 + devtools-protocol: 0.0.1402036 + typed-query-selector: 2.12.2 ws: 8.19.0 transitivePeerDependencies: - bare-abort-controller @@ -7275,12 +7416,14 @@ snapshots: - supports-color - utf-8-validate - puppeteer@22.14.0(typescript@5.9.3): + puppeteer@24.3.1(typescript@5.9.3): dependencies: - '@puppeteer/browsers': 2.3.0 + '@puppeteer/browsers': 2.7.1 + chromium-bidi: 2.1.2(devtools-protocol@0.0.1402036) cosmiconfig: 9.0.1(typescript@5.9.3) - devtools-protocol: 0.0.1312386 - puppeteer-core: 22.14.0 + devtools-protocol: 0.0.1402036 + puppeteer-core: 24.3.1 + typed-query-selector: 2.12.2 transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -7290,23 +7433,36 @@ snapshots: - typescript - utf-8-validate - qs@6.11.0: + qs@6.14.2: dependencies: side-channel: 1.1.0 + qs@6.15.3: + dependencies: + es-define-property: 1.0.1 + side-channel: 1.1.1 + queue-microtask@1.2.3: {} quick-lru@5.1.1: {} range-parser@1.2.1: {} - raw-body@2.5.1: + raw-body@2.5.3: dependencies: bytes: 3.1.2 - http-errors: 2.0.0 + http-errors: 2.0.1 iconv-lite: 0.4.24 unpipe: 1.0.0 + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + optional: true + react-dom@18.3.1(react@19.2.3): dependencies: loose-envify: 1.4.0 @@ -7351,6 +7507,13 @@ snapshots: dependencies: pify: 2.3.0 + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + optional: true + readdirp@3.6.0: dependencies: picomatch: 2.3.1 @@ -7446,7 +7609,7 @@ snapshots: rehype-stringify@10.0.1: dependencies: '@types/hast': 3.0.4 - hast-util-to-html: 9.0.4 + hast-util-to-html: 9.0.5 unified: 11.0.5 remark-frontmatter@5.0.0: @@ -7661,21 +7824,21 @@ snapshots: semver@7.7.2: {} - send@0.18.0: + send@0.19.2: dependencies: debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 fresh: 0.5.2 - http-errors: 2.0.0 + http-errors: 2.0.1 mime: 1.6.0 ms: 2.1.3 on-finished: 2.4.1 range-parser: 1.2.1 - statuses: 2.0.1 + statuses: 2.0.2 transitivePeerDependencies: - supports-color @@ -7684,12 +7847,12 @@ snapshots: non-error: 0.1.0 type-fest: 5.4.4 - serve-static@1.15.0: + serve-static@1.16.3: dependencies: - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 0.18.0 + send: 0.19.2 transitivePeerDependencies: - supports-color @@ -7749,6 +7912,12 @@ snapshots: '@img/sharp-win32-ia32': 0.33.5 '@img/sharp-win32-x64': 0.33.5 + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + shiki@3.23.0: dependencies: '@shikijs/core': 3.23.0 @@ -7765,6 +7934,11 @@ snapshots: es-errors: 1.3.0 object-inspect: 1.13.4 + side-channel-list@1.0.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-map@1.0.1: dependencies: call-bound: 1.0.4 @@ -7788,14 +7962,32 @@ snapshots: side-channel-map: 1.0.1 side-channel-weakmap: 1.0.2 + side-channel@1.1.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.1 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + signal-exit@3.0.7: {} signal-exit@4.1.0: {} + simple-concat@1.0.1: + optional: true + simple-eval@1.0.1: dependencies: jsep: 1.4.0 + simple-get@4.0.1: + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + optional: true + simple-swizzle@0.2.4: dependencies: is-arrayish: 0.3.4 @@ -7828,13 +8020,13 @@ snapshots: transitivePeerDependencies: - supports-color - socket.io@4.7.2: + socket.io@4.8.0: dependencies: accepts: 1.3.8 base64id: 2.0.0 cors: 2.8.6 debug: 4.3.7 - engine.io: 6.5.5 + engine.io: 6.6.9 socket.io-adapter: 2.5.6 socket.io-parser: 4.2.5 transitivePeerDependencies: @@ -7872,6 +8064,8 @@ snapshots: statuses@2.0.1: {} + statuses@2.0.2: {} + stop-iteration-iterator@1.1.0: dependencies: es-errors: 1.3.0 @@ -7921,6 +8115,11 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + optional: true + stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 @@ -7934,6 +8133,9 @@ snapshots: dependencies: ansi-regex: 6.2.2 + strip-json-comments@2.0.1: + optional: true + style-to-js@1.1.21: dependencies: style-to-object: 1.0.14 @@ -7942,6 +8144,16 @@ snapshots: dependencies: inline-style-parser: 0.2.7 + sucrase@3.34.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + commander: 4.1.1 + glob: 7.1.6 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.7 + ts-interface-checker: 0.1.13 + sucrase@3.35.1: dependencies: '@jridgewell/gen-mapping': 0.3.13 @@ -7956,7 +8168,7 @@ snapshots: tagged-tag@1.0.0: {} - tailwindcss@3.4.4: + tailwindcss@3.4.17: dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -7967,22 +8179,30 @@ snapshots: glob-parent: 6.0.2 is-glob: 4.0.3 jiti: 1.21.7 - lilconfig: 2.1.0 + lilconfig: 3.1.3 micromatch: 4.0.8 normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.1.1 - postcss: 8.5.6 - postcss-import: 15.1.0(postcss@8.5.6) - postcss-js: 4.1.0(postcss@8.5.6) - postcss-load-config: 4.0.2(postcss@8.5.6) - postcss-nested: 6.2.0(postcss@8.5.6) + postcss: 8.5.14 + postcss-import: 15.1.0(postcss@8.5.14) + postcss-js: 4.1.0(postcss@8.5.14) + postcss-load-config: 4.0.2(postcss@8.5.14) + postcss-nested: 6.2.0(postcss@8.5.14) postcss-selector-parser: 6.1.2 resolve: 1.22.11 sucrase: 3.35.1 transitivePeerDependencies: - ts-node + tar-fs@2.1.5: + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.4 + tar-stream: 2.2.0 + optional: true + tar-fs@3.1.2: dependencies: pump: 3.0.4 @@ -7995,6 +8215,15 @@ snapshots: - bare-buffer - react-native-b4a + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.5 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + optional: true + tar-stream@3.1.8: dependencies: b4a: 1.8.0 @@ -8006,14 +8235,13 @@ snapshots: - bare-buffer - react-native-b4a - tar@6.1.15: + tar@7.5.15: dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.3 + minizlib: 3.1.0 + yallist: 5.0.0 teex@1.0.1: dependencies: @@ -8036,8 +8264,6 @@ snapshots: dependencies: any-promise: 1.3.0 - through@2.3.8: {} - tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) @@ -8065,6 +8291,11 @@ snapshots: tslib@2.8.1: {} + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + optional: true + twoslash-protocol@0.3.6: {} twoslash@0.3.6(typescript@5.9.3): @@ -8121,6 +8352,8 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 + typed-query-selector@2.12.2: {} + typescript@5.9.3: {} unbox-primitive@1.1.0: @@ -8130,11 +8363,6 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 - unbzip2-stream@1.4.3: - dependencies: - buffer: 5.7.1 - through: 2.3.8 - undici-types@7.18.2: {} unified@11.0.5: @@ -8190,7 +8418,7 @@ snapshots: dependencies: '@types/unist': 3.0.3 unist-util-is: 6.0.1 - unist-util-visit-parents: 6.0.1 + unist-util-visit-parents: 6.0.2 unist-util-stringify-position@4.0.0: dependencies: @@ -8233,8 +8461,6 @@ snapshots: urijs@1.19.11: {} - urlpattern-polyfill@10.0.0: {} - use-callback-ref@1.3.3(@types/react@19.2.14)(react@19.2.3): dependencies: react: 19.2.3 @@ -8256,7 +8482,7 @@ snapshots: utils-merge@1.0.1: {} - uuid@11.1.0: {} + uuid@11.1.1: {} vary@1.1.2: {} @@ -8330,6 +8556,10 @@ snapshots: gopd: 1.2.0 has-tostringtag: 1.0.2 + which@2.0.2: + dependencies: + isexe: 2.0.0 + widest-line@5.0.0: dependencies: string-width: 7.2.0 @@ -8354,12 +8584,12 @@ snapshots: wrappy@1.0.2: {} - ws@8.17.1: {} - ws@8.18.3: {} ws@8.19.0: {} + ws@8.21.0: {} + xml2js@0.6.2: dependencies: sax: 1.5.0 @@ -8374,7 +8604,7 @@ snapshots: y18n@5.0.8: {} - yallist@4.0.0: {} + yallist@5.0.0: {} yaml@2.8.2: {} @@ -8409,18 +8639,14 @@ snapshots: yoga-layout@3.2.1: {} - zod-to-json-schema@3.20.4(zod@3.21.4): - dependencies: - zod: 3.21.4 - zod-to-json-schema@3.20.4(zod@3.24.0): dependencies: zod: 3.24.0 - zod@3.21.4: {} + zod@3.24.0: {} - zod@3.23.8: {} + zod@3.25.76: {} - zod@3.24.0: {} + zod@4.3.6: {} zwitch@2.0.4: {} diff --git a/style.css b/style.css index afb03fe..ffb559f 100644 --- a/style.css +++ b/style.css @@ -4,9 +4,14 @@ color: #060000 !important; } +/* Underline prose text links in dark mode. Exclude [class~="border-0"] so the + heading anchor-link buttons (Mintlify gives them `border-0`) don't get an + ugly line under the icon. */ .dark .prose - :where(a):not(:where([class~="not-prose"], [class~="not-prose"] *)) { + :where(a):not( + :where([class~="not-prose"], [class~="not-prose"] *, [class~="border-0"]) + ) { border-bottom: 1px solid rgb(var(--primary-light)) !important; }