Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 63 additions & 20 deletions advanced-guides/visualize.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,16 @@
bru.visualize(type, config)
```

1. **type**: The type of visualization to render (e.g., 'table', 'html').
1. **type**(string): The type of visualization to render (e.g., 'table', 'html').

2. **config**: A configuration object that includes:
2. **config**(object): Depends on `type`:

- **name**: The name of the visualization instance.
- **`table`**: **name**, **provider** (`ag-grid`, `react-table`), **props**.
- **`html` (raw HTML)**: **name**, **content** — unchanged from earlier releases.
- **`html` (Handlebars)**: **name**, **template** (Handlebars string), **data** (object passed into the template), optional **options**.

Handlebars is compiled server-side; the Visualize tab receives rendered HTML plus **rawData** for Postman-style callbacks (see below).

Check warning on line 20 in advanced-guides/visualize.mdx

View check run for this annotation

Mintlify / Mintlify Validation (bruno-a6972042) - vale-spellcheck

advanced-guides/visualize.mdx#L20

Did you really mean 'rawData'?

- **provider**: The rendering library or provider used to display the visualization (e.g., 'ag-grid', 'react-table').

- **props**: Additional properties required by the provider to configure the visualization.

## Supported Visualization Types and Providers

Expand Down Expand Up @@ -110,11 +111,13 @@

This example renders a large table using the react-table provider, with custom headers and filter variants.

### HTML Visualization ('html')
### HTML visualization (`'html'`)

You can render either **raw HTML** (existing behavior) or a **Handlebars** template with structured **data**.

You can also render custom HTML content using the html type. This allows for advanced templating and formatting, such as generating a data table or a report.
#### Raw HTML (`content`)

#### Using **HTML** String
Pass a full HTML string. This mode works in **QuickJS safe mode** and behaves as before.

*Example:*

Expand Down Expand Up @@ -148,6 +151,43 @@

This example will render an HTML table with predefined data using the html type.

#### Handlebars template (`template`, `data`, `options`)

Use Handlebars when you want a small template plus JSON data instead of building HTML strings in script:

```javascript copy
bru.visualize('html', {
name: 'userCard',
template: '<div><h1>{{title}}</h1><p>{{message}}</p></div>',
data: { title: 'Hello', message: res.body?.name || 'Guest' },
options: {} // optional; mirrors Postman’s third argument when used
});
```

Bruno compiles **template** with **data** on the server and opens the result in the **Visualize** tab. **`rawData`** is passed alongside rendered HTML.

#### `bru.clearVisualizations()`

Clears every visualization registered for the **current request** and resets the internal list (same idea as Postman’s `pm.visualizer.clear()`).

```javascript copy
bru.clearVisualizations();
```

#### Postman `pm.visualizer` mapping

When you **import** a Postman collection, script calls are translated automatically:

| Postman | Bruno |
| -------- | ------ |
| `pm.visualizer.set(template, data)` | `bru.visualize('html', { template, data })` (plus `name` when you author in Bruno) |
| `pm.visualizer.set(template, data, options)` | `bru.visualize('html', { template, data, options })` |
| `pm.visualizer.clear()` | `bru.clearVisualizations()` |

**Export** from Bruno back to Postman performs the **inverse** mapping for the same patterns. Table visualizations (**ag-grid**, **react-table**) and raw **`content`** HTML are unchanged by this translation.

Import/export translation is covered by the collection converters; see **[Postman migration](/get-started/import-export-data/postman-migration)** and **[Converters overview](/converters/overview)**.

## Using API Response Data

One of the most powerful features of `bru.visualize` is the ability to transform API responses into visual tables. Here are practical examples of working with real API data:
Expand Down Expand Up @@ -523,14 +563,17 @@

| Name | Type | Description |
|----------|----------|-------------------------------------------------------------------------------------------------|
| `type` | `string` | The type of visualization to render. Supported values: `'table'`, `'html'`. |
| `config` | `object` | Configuration object for the visualization. See below for available properties. |

### Config Properties

| Property | Type | Description |
|------------|----------|-------------------------------------------------------------------------------------------------|
| `name` | `string` | Name of the visualization instance. |
| `provider` | `string` | The provider or rendering engine to use for the visualization. E.g., `'ag-grid'`, `'react-table'`. |
| `props` | `object` | Additional properties required by the provider to configure the visualization. |
| `content` | `string` | (For `html` type only) The HTML content to render. |
| `type` | `string` | Visualization kind: `'table'` or `'html'`. |
| `config` | `object` | See **Config properties** below. Table vs HTML use different fields. |

### Config properties

| Property | Type | Used with | Description |
|-------------|----------|-----------|-------------|
| `name` | `string` | `table`, `html` | Instance label in the Visualize tab. |
| `provider` | `string` | `table` only | `ag-grid` or `react-table`. |
| `props` | `object` | `table` only | Provider-specific row/column config. |
| `content` | `string` | `html` (raw) | Full HTML string (safe mode OK). |
| `template` | `string` | `html` (Handlebars) | Handlebars source (not in QuickJS safe mode). |
| `data` | `object` | `html` (Handlebars) | Template context / Postman `data` argument. |
| `options` | `object` | `html` (Handlebars, optional) | Extra Handlebars options; mirrors Postman’s third argument when present. |
93 changes: 93 additions & 0 deletions auth/oauth1.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
---
title: "OAuth 1.0 authentication"
sidebarTitle: "OAuth 1.0"
---

OAuth 1.0 is a protocol that allows applications to make authenticated HTTP requests on behalf of a user without exposing their credentials. Bruno supports the full OAuth 1.0 specification ([RFC 5849](https://datatracker.ietf.org/doc/html/rfc5849)), including multiple signature methods and flexible parameter placement.

## Setting up OAuth 1.0

1. Open your request.
2. Navigate to the **Auth** tab.
3. Select **OAuth 1.0** from the dropdown list and configure the required fields.

![oauth1](/images/screenshots/auth/auth1/01-auth1-ui.webp)

OAuth 1.0 can be configured at the **request**, **folder**, or **collection** level. When set at the collection or folder level, all child requests that use **Inherit** as their auth mode will use the shared OAuth 1.0 configuration.

## Configuration fields

### Core credentials

| Field | Description |
| --- | --- |
| **Consumer Key** | The application's consumer key issued by the OAuth provider. |
| **Consumer Secret** | The application's consumer secret. Hidden when using RSA signature methods. |
| **Token** | The access token for the authenticated user. |
| **Token Secret** | The access token secret for the authenticated user. |

### Signature

| Field | Description |
| --- | --- |
| **Signature Method** | The algorithm used to sign requests. See [Supported signature methods](#supported-signature-methods). |
| **Private Key** | The PEM private key used for RSA signature methods. Only shown when an RSA method is selected. Can be provided inline or as a file path. |
| **Add Params To** | Where OAuth parameters are placed — `Header`, `Query Params`, or `Body`. Defaults to `Header`. |
| **Include Body Hash** | When enabled, computes and includes an `oauth_body_hash` parameter for non-form-encoded request bodies. |

### Advanced

These fields are optional and are hidden in a collapsible section.

| Field | Description |
| --- | --- |
| **Callback URL** | The `oauth_callback` URL, used during the temporary credentials step of the OAuth 1.0 flow. |
| **Verifier** | The `oauth_verifier` value, used during the token credentials step. |
| **Timestamp** | Override the auto-generated `oauth_timestamp`. Leave empty to let Bruno generate it automatically. |
| **Nonce** | Override the auto-generated `oauth_nonce`. Leave empty to let Bruno generate it automatically. |
| **Version** | The `oauth_version` value. Defaults to `1.0`. |
| **Realm** | The `realm` parameter included in the Authorization header. |

![oauth1-advanced](/images/screenshots/auth/auth1/02-auth1-advance-option.webp)

<Info>
All OAuth 1.0 fields support [Bruno variables](/variables/overview). For example, you can store your consumer key in an environment variable and reference it as `{{consumerKey}}`.
</Info>

## Supported signature methods

Bruno supports seven signature methods:

| Method | Type | Description |
| --- | --- | --- |
| **HMAC-SHA1** | HMAC | Signs using HMAC with SHA-1. This is the most common method. |
| **HMAC-SHA256** | HMAC | Signs using HMAC with SHA-256. |
| **HMAC-SHA512** | HMAC | Signs using HMAC with SHA-512. |
| **RSA-SHA1** | RSA | Signs using an RSA private key with SHA-1. |
| **RSA-SHA256** | RSA | Signs using an RSA private key with SHA-256. |
| **RSA-SHA512** | RSA | Signs using an RSA private key with SHA-512. |
| **PLAINTEXT** | None | Sends the signing key directly without hashing. Only use over HTTPS. |

![auth1-sign-method](/images/screenshots/auth/auth1/03-auth1-sign-method.webp)


<Warning>
When using an RSA signature method, you must provide a PEM-formatted private key. The **Consumer Secret** field is not used with RSA methods.
</Warning>

## Parameter placement

You can choose where OAuth parameters are included in your requests:

- **Header** (default) — OAuth parameters are sent in the `Authorization` header, formatted per RFC 5849.
- **Query Params** — OAuth parameters are appended to the request URL as query parameters.
- **Body** — OAuth parameters are merged into the request body as `application/x-www-form-urlencoded` parameters.

<Warning>
Body placement requires a form-urlencoded body. If your request uses a different content type, the body will be replaced with OAuth parameters.
</Warning>


## CLI support

OAuth 1.0 is fully supported in the [Bruno CLI](/bru-cli/overview). When you run collections or requests via `bru run`, OAuth 1.0 authentication is applied automatically to requests that have OAuth 1.0 configured.
1 change: 1 addition & 0 deletions auth/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ If you enter your auth details to the `Auth` tab of your requests, we will autom

### Bruno currently supports the following authentication protocols:

- [OAuth 1.0](/auth/oauth1)
- [OAuth 2.0](/auth/oauth2-2.0/overview)
- [AWS Sig v4](/auth/aws-signature)
- [Basic Auth](/auth/basic)
Expand Down
8 changes: 8 additions & 0 deletions docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,13 @@
"git-integration/embed-bruno-collection"
]
},
{
"group": "Git Providers",
"pages": [
"git-providers/overview",
"git-providers/github"
]
},
{
"group": "Tests and Scripts",
"pages": [
Expand Down Expand Up @@ -258,6 +265,7 @@
"auth/digest",
"auth/aws-signature",
"auth/ntlm",
"auth/oauth1",
{
"group": "OAuth 2.0",
"pages": [
Expand Down
25 changes: 16 additions & 9 deletions get-started/configure/proxy-config.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,14 @@

## 2. Configuring Proxy Mode

Bruno provides three options for proxy mode:
Bruno provides four options for proxy mode:

- **Off**: Disables proxy usage.
- **On**: Enables proxy and routes requests through the configured proxy.
- **On**: Enables proxy and routes requests through a manually configured proxy.
- **System Proxy**: Uses the system-wide proxy settings.
- **PAC**: Uses a [Proxy Auto-Configuration (PAC)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file) file to determine the proxy for each request.

Select **On** if you want to configure a custom proxy.
Select **On** if you want to configure a custom proxy, or **PAC** if your network uses a PAC file for automatic proxy configuration.

## 3. Selecting Proxy Protocol

Expand All @@ -44,7 +45,7 @@

Fill in the required fields:

- **Hostname**: The proxy server's domain or IP address (e.g., `example.com`).

Check warning on line 48 in get-started/configure/proxy-config.mdx

View check run for this annotation

Mintlify / Mintlify Validation (bruno-a6972042) - vale-spellcheck

get-started/configure/proxy-config.mdx#L48

Did you really mean 'Hostname'?
- **Port**: The port number for the proxy connection (e.g., `3000`).

## 5. Enabling Authentication (Optional)
Expand All @@ -55,7 +56,18 @@
2. Enter the **Username**.
3. Enter the **Password** (Click the eye icon to reveal the password if needed).

## 6. Configuring Proxy at Collection Level
## 6. Configuring PAC proxy

When you select the **PAC** proxy mode, Bruno resolves the appropriate proxy for each request using a PAC file. You can provide the PAC file in two ways:

- **URL**: Enter the URL to your PAC file (e.g., `https://example.com/proxy.pac`). The URL must use the `http://`, `https://`, or `file://` protocol.
- **File**: Click **Choose file...** to select a `.pac` file from your local filesystem.

Bruno evaluates the `FindProxyForURL` function in the PAC file for each request and routes traffic through the returned proxy.

![pac-proxy](/images/screenshots/get-started/config/settings/pac-proxy.webp)

## 7. Configuring Proxy at Collection Level

There may be instances in which your collection needs to use a different proxy than what you have configured globally. Configuring proxy settings at the collection level will override any configuration you've made in the preferences section.

Expand All @@ -73,10 +85,5 @@
- **Disabled**: Disables the proxy for this collection.

3. Choose **inherit, enabled, or disabled**.
4. Enter the **Hostname, Port, Protocol, Username, and Password** if needed.

Check warning on line 88 in get-started/configure/proxy-config.mdx

View check run for this annotation

Mintlify / Mintlify Validation (bruno-a6972042) - vale-spellcheck

get-started/configure/proxy-config.mdx#L88

Did you really mean 'Hostname'?
5. Click **Save** to apply the settings.

## 7. Saving Proxy Configuration

After entering the proxy details, click the **Save** button to apply the changes. Your proxy settings are now configured in Bruno.

16 changes: 15 additions & 1 deletion get-started/configure/settings.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

## General

The General settings include options for SSL/TLS, Custom CA certificates, and Cookies. You can customize how cookies are handled by choosing to store and send them automatically, or simply uncheck the box if you prefer not to store cookies.

Check warning on line 21 in get-started/configure/settings.mdx

View check run for this annotation

Mintlify / Mintlify Validation (bruno-a6972042) - vale-spellcheck

get-started/configure/settings.mdx#L21

Did you really mean 'uncheck'?

![general-settings](/images/screenshots/get-started/config/settings/general-settings.webp)

Expand Down Expand Up @@ -48,7 +48,21 @@

## Keybindings

The Keybindings section provides details about Bruno's keyboard shortcuts.
<Note>
Keybinding is available in Bruno **3.3.0+** or higher versions.
</Note>

You can customize the keybindings to suit your preferences.
1. Go to **Keybindings** tab from **Preferences** bottom left corner.
2. Click and enter the keybinding you want to customize.

When defining keybindings, use at least one modifier key. On macOS, supported modifiers are Command, Option, Control, or Shift. On Windows, use Ctrl, Alt, or Shift.

Check warning on line 59 in get-started/configure/settings.mdx

View check run for this annotation

Mintlify / Mintlify Validation (bruno-a6972042) - vale-spellcheck

get-started/configure/settings.mdx#L59

Did you really mean 'Ctrl'?

<Warning>Operating system level keybindings cannot be used as shortcuts in Bruno.</Warning>

Click on **Reset Default** button to reset all keybindings to their default values.



![keybindings](/images/screenshots/get-started/config/settings/key-settings.webp)

Expand Down
6 changes: 5 additions & 1 deletion get-started/import-export-data/import-collections.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@

Once the import dialog opens, you'll see all available import formats. Select the one that matches your source.

<Note>
You can also import collections from GitHub directly with in App. See [GitHub Provider](/git-providers/github) for more details.
</Note>

---

## Import Formats
Expand Down Expand Up @@ -65,7 +69,7 @@
### 3. Postman Data Export

<Callout>
**Postman Data Export** is available in our **Ultimate Edition**. This allows you to import all of your Postman data including collections, environments, and globals in one go.

Check warning on line 72 in get-started/import-export-data/import-collections.mdx

View check run for this annotation

Mintlify / Mintlify Validation (bruno-a6972042) - vale-spellcheck

get-started/import-export-data/import-collections.mdx#L72

Did you really mean 'globals'?
</Callout>

**Use this when:** You want to migrate all of your Postman data to Bruno.
Expand All @@ -76,7 +80,7 @@
- Open Postman
- Go to **Settings** → **Data**
- Click **Export Data**
- Choose what to include (collections, environments, globals)

Check warning on line 83 in get-started/import-export-data/import-collections.mdx

View check run for this annotation

Mintlify / Mintlify Validation (bruno-a6972042) - vale-spellcheck

get-started/import-export-data/import-collections.mdx#L83

Did you really mean 'globals'?
- Download the export file
2. **Import to Bruno:**
- Open Bruno
Expand Down Expand Up @@ -145,7 +149,7 @@

1. **Obtain your OpenAPI file:**
- Get your OpenAPI specification file (`.json` or `.yaml` format)
- Ensure it's OpenAPI v3.x format
- Use a valid **OpenAPI 2.0** (Swagger 2.0) or **OpenAPI 3.x** spec
2. **Import to Bruno:**
- Open Bruno
- Click the **+** button in the top-left corner and select **Import Collection**.
Expand Down
Loading
Loading