> ## Documentation Index
> Fetch the complete documentation index at: https://help.dsalta.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Upstash

> Serverless data platform — team members, databases & access

<Tabs>
  <Tab title="Overview">
    Connect Upstash with your account email and a Management API key to sync team members with their roles, Redis databases, Vector and Search indexes and QStash accounts, and the account audit log, and run access reviews. Read-only. Data feeds into your Access accounts, Inventory and Changes pages.

    <Info>
      **Read-only access.** DSALTA only reads data from this integration. It never creates, modifies, or deletes anything in your environment, and every remediation step is performed by your team directly in the third-party product.
    </Info>

    <Info>
      **What you'll see.** The Access page lists the members of **every Upstash team the account belongs to**, combined into one list: a person who is in several teams appears once, with the roles they hold in each team joined together (for example **Owner, Dev**). Upstash's team roster carries no name field, so each row shows the member's **email address** in place of a name, together with their team roles (**Owner**, **Admin**, **Dev** or **Finance**, or **Member** when none is reported). Upstash has no account-level user list, so an account with no team has no roster and cannot be connected. The roster reports no account status, so every row is shown as **Active** and stamped with the date of the sync. Upstash reports no per-user MFA state, so the **MFA** column is blank (shown as a dash).
    </Info>

    <Note>
      DSALTA collects this integration's data when you connect it — you can refresh it at any time with **Sync from integrations** on the **Integrations** page. The compliance checks below re-run once a day at 02:00 America/New\_York.
    </Note>

    ## What DSALTA reads

    DSALTA reads the member list of each team the account belongs to — email addresses and roles — which appears on your **Access** page; your Upstash **Redis databases** (region, plan, type, state and whether TLS is on), **Vector indexes** (region, plan, dimensions and similarity function), **Search indexes** (region and plan) and **QStash accounts** (region, state, plan, daily request limit and creator), which appear on your **Inventory** page; and the account's **audit log**, which appears on your **Changes** page. QStash rows are QStash accounts, not people; the credential fields that Upstash returns with Vector, Search and QStash rows are dropped before anything is stored. Each audit entry arrives as a change that has already happened — status **Deployed**, priority **Medium** when the action names a key, team, member, user, deletion, removal, password or role and **Low** otherwise, the action and the acting account in the title, the affected entity, source and IP address in the description, and **Upstash account** as the environment. Up to 1,000 entries are read, with no date window.

    It calls these Upstash endpoints on `api.upstash.com`:

    * `/v2/redis/databases`
    * `/v2/teams`
    * `/v2/teams/{team_id}`
    * `/v2/vector/index`
    * `/v2/search`
    * `/v2/qstash/users`
    * `/auditlogs`

    Every request is a read. DSALTA has no code path that creates, modifies, or deletes anything in your Upstash environment.

    ## Troubleshooting

    <AccordionGroup>
      <Accordion title="The connection is rejected">
        Upstash answers a wrong email and a wrong key with the same refusal, so check both: the **Account email** is the address of the account that created the key, and the **Management API key** comes from **Account → Management API** in the console. A data-plane token such as `UPSTASH_REDIS_REST_TOKEN`, a Vector index token or a QStash token cannot call the Management API, and an account created through the Vercel or Fly.io marketplaces has no Developer API at all. An account with no team is rejected by name: create one under **Account → Teams**, invite the teammates who should appear, and connect again.
      </Accordion>

      <Accordion title="A teammate is missing from the Access page">
        The roster is built from the teams the connected account belongs to. Someone who is not a member of any of those teams does not appear; invite them to a team under **Account → Teams**, then click **Sync from integrations** on the **Integrations** page.
      </Accordion>

      <Accordion title="Inventory or Changes is empty while Access works">
        Redis databases, Vector and Search indexes, QStash accounts and the audit log are read best-effort after the team rosters: a failure on one of those calls leaves that part of the page empty without failing the sync, and databases and indexes only appear once you have created one. Click **Sync from integrations** on the **Integrations** page to retry.
      </Accordion>
    </AccordionGroup>

    <AccordionGroup>
      <Accordion title="How do I check whether the connection is healthy?">
        Open **Integrations** in the DSALTA sidebar, stay on the **Connected** tab, and click **Manage** on the integration's card. Open the **Status** tab: it shows either **Connected and working properly** or **Connection issues detected**.

        Use the **Status** tab, not **Overview** — Overview always reports **Connected** regardless of the real state.
      </Accordion>

      <Accordion title="A check shows Failed and nothing changed on my side">
        On an integration-powered check, **Failed** normally means DSALTA was blocked rather than that you are non-compliant. Open the test, go to **Source Data**, and read the result code: **403** is a missing permission, **428** is a setting DSALTA still needs, **500** is a failure on DSALTA's side.

        A real compliance gap shows **207** and leaves the test looking **Completed**. See [Understanding Test Results](/guides/compliance/test-results).
      </Accordion>

      <Accordion title="Data looks out of date">
        Compliance checks re-run once a day at 02:00 America/New\_York. To refresh sooner, open **Integrations → Connected** and click **Sync from integrations** at the top right — it refreshes every connected integration at once.
      </Accordion>

      <Accordion title="How do I repair a broken connection?">
        There is no Reconnect, Repair or Refresh Token button. The only repair available is to disconnect and connect again.

        <Warning>
          **Disconnecting is destructive and cannot be undone.** DSALTA removes the access records, inventory, vulnerabilities, code changes, incidents and device records collected from this integration, and deletes the test results tied to the connection. Export anything you still need as audit evidence first — see [Integration errors](/troubleshooting/integration-errors).
        </Warning>
      </Accordion>

      <Accordion title="Configure scope will not let me change anything">
        That is expected. **Configure scope** is read-only — it shows what DSALTA is permitted to read, and has no Save action. To change what DSALTA can see, change the permissions on the credential in the third-party product, then disconnect and connect again.
      </Accordion>
    </AccordionGroup>
  </Tab>

  <Tab title="How to connect">
    Your Upstash account email and a Management API key. Teams are detected automatically. Read-only.

    **Before you begin**

    * A native Upstash account — accounts created through the Vercel or Fly.io marketplaces have no Developer API — that owns at least one team.

    You will need:

    | Field | Where to find it | Example |
    | - | - | - |
    | **Account email** | The email address of the Upstash account that creates the key | The address you sign in with |
    | **Management API key** | **Account → Management API → Create API Key** | Shown once, at creation |

    <Steps>
      <Step title="Start in DSALTA">
        Open **Integrations** in the DSALTA sidebar, find **Upstash**, and click **Connect** to open the connect panel.
      </Step>

      <Step title="Sign in with a native Upstash account">
        Sign in at [console.upstash.com](https://console.upstash.com). The account must have been created at Upstash directly: accounts that arrived through the Vercel or Fly.io marketplaces cannot create a Management API key.
      </Step>

      <Step title="Create a Management API key">
        In the left menu open **Account → Management API** and click **Create API Key**. Enter a name you have not used before — Upstash does not allow two keys with the same name — and copy the key. Note the account's email address as well; it is entered next to the key.

        <Warning>
          **Copy the key now.** Upstash does not show it again; a lost key means creating a new one.
        </Warning>
      </Step>

      <Step title="Make sure a team exists">
        The Access page lists team members, because Upstash has no account-level user list. If the account has no team yet, create one under **Account → Teams** and invite the teammates who should appear.
      </Step>

      <Step title="Connect Upstash">
        Return to the connect panel, enter the account email, paste the Management API key, and click **Connect**.
      </Step>
    </Steps>

    <Check>
      DSALTA validates the pair when you click **Connect**, by listing your Redis databases with it, then your teams, then each team's members; an account with no team is rejected. On success the integration moves to the **Connected** tab, and **Manage → Status** reads **Connected and working properly**. Checks begin reporting after the first sync.
    </Check>

    <Warning>
      **If the connection is rejected.** A wrong email or a wrong key (Upstash refuses both the same way), a data-plane token instead of a Management API key, an account created through the Vercel or Fly.io marketplaces, or an account that has no team yet.

      The on-screen message is generic — see [Connection error messages](/troubleshooting/connection-error-messages).
    </Warning>
  </Tab>

  <Tab title="Automated checks">
    Each check below re-runs once a day, at 02:00 America/New\_York, while this integration is connected. Click any check for step-by-step remediation guidance.

    | Check | Severity | What it verifies |
    | - | - | - |
    | [User access to Critical System should be valid](/integrations/upstash/user-access-to-critical-system-should-be-valid) | Info | Checks that everyone with Upstash access is an active employee on the People page. |
    | [Offboarded users should not have active access](/integrations/upstash/offboarded-users-should-not-have-active-access) | High | Checks that offboarded employees no longer have active Upstash access. |
  </Tab>

  <Tab title="Useful links">
    | Topic | Link |
    | - | - |
    | Setup | [Upstash Developer API authentication](https://upstash.com/docs/devops/developer-api/authentication) · [Management API keys](https://upstash.com/docs/common/account/developerapi) |
    | Remediation | [Upstash teams](https://upstash.com/docs/common/account/teams) |
    | General | [Upstash console](https://console.upstash.com) |
    | DSALTA | [Connection error messages](/troubleshooting/connection-error-messages) |
  </Tab>
</Tabs>
