> For the complete documentation index, see [llms.txt](https://docs.airops.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.airops.com/your-workspace/settings/authentications.md).

# Integration Authentications

Test integration connections, track credential expiration, and use credentials in Workflows.

Many of AirOps's native integrations (Asana, HubSpot, Webflow, Shopify, and others) require you to authenticate before you can use them in workflow steps. Once authenticated, you can opt in to **expose** those credentials so they can be referenced directly from Liquid templates and code steps. This is useful when you want to call an API the native step doesn't cover, or interpolate a token into a request.

## Name an authentication

When you add an authentication in **Settings → Integrations**, you can enter a custom name to distinguish accounts or environments. Leave the name blank to use the generated name. This option also applies to OAuth connections.

## Test a connection

Use **Test connection** in **Settings → Integrations** to check supported integrations before using them in Workflows. You can test new credentials during setup or use the saved authentication's menu to test an existing connection. If a result already exists, select **View test results** and use **Re-test** to check again.

Review the **Connection status** and individual checks:

| Status                 | Meaning                                                                       |
| ---------------------- | ----------------------------------------------------------------------------- |
| **Connected**          | The connection checks passed.                                                 |
| **Partially verified** | Some checks passed, but others could not be verified.                         |
| **Not verified**       | The checks could not establish whether the connection works.                  |
| **Limited access**     | Review failed access checks and the permissions required for the integration. |
| **Connection failed**  | Review the error, correct the credentials or configuration, and re-test.      |
| **Status unavailable** | AirOps cannot display a reliable verification result. Re-test the connection. |

An individual **Not verified** result does not necessarily mean the credentials are wrong. Some actions cannot be tested without creating, editing, or deleting content. Review those actions before relying on them in a Workflow.

For a new connection, choose **Save integration** after reviewing the results. **Save anyway** lets you save credentials with a blocking result; it does not resolve the failed checks.

Contentful connection testing is available for full-access authentications and includes the configured Space ID.

## Track credential expiration

For supported token or basic-auth connections, set an optional **Expiration date** when creating or editing credentials. Admins can set, update, or clear the date, and the authentication list shows the configured value. OAuth and Pipedream-managed connections do not expose this field.

Use the date to record when the provider-issued credential needs renewal. Setting it does not renew or extend the credential. AirOps sends **Inbox** warnings 30 days before expiration, 14 days before expiration, and when the credentials expire. These notifications link back to **Integrations**, where you can update the credentials and date.

## Enabling exposure

1. Navigate to **Settings > Integrations**.
2. Find the authentication you want to expose.
3. Toggle **Expose credentials** on for that row.

The toggle is off by default. Credentials are only available to workflows when you explicitly opt in.

## Referencing in workflows

Once exposed, credentials are accessible via the `authentications` variable, keyed by provider name and then by the authentication's display name.

### Liquid template

```
{{ authentications['asana']['Prod'].token }}
```

### JavaScript code step

```javascript
const auth = authentications.asana["Prod"];
const token = auth.token;
```

### Python code step

```python
auth = authentications["asana"]["Prod"]
token = auth["token"]
```

The variable picker in the workflow builder lists exposed authentications under the "Integration Authentications" category. Clicking an entry inserts the correct path for the editor mode you're in.

## What's available

The exact fields depend on the authentication type. For OAuth integrations, you'll typically have `token`, `refresh_token`, and `expires_at`. For API-key integrations, you'll have whatever field the integration uses (commonly `api_key`).

## Disabling exposure

Toggle the switch off. Workflows that reference the now-unexposed credentials will resolve to empty values; if a workflow relied on those credentials, downstream calls may fail. Re-enable to restore.

## Security

Credentials are automatically redacted as `*****` in trace logs and step error messages, so debugging errors that mention a token won't leak the value into execution history.

Step outputs are not redacted. If a code step returns a credential value directly (for example, `return token`), the value will appear in the execution trace. Take care to avoid emitting credentials in step outputs.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.airops.com/your-workspace/settings/authentications.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
