> ## 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.

# Port

> Internal developer portal — users & access

<Tabs>
  <Tab title="Overview">
    Connect Port with your organization's Client ID and Client Secret to sync users and blueprints, and run access reviews. Read-only.

    <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 every **user** of your Port organization with their name, email, the names of the Port roles assigned to them (or **Admin** when a role is flagged as admin but unnamed, or **Member** when none), and the date they were created. Port's own status is respected — a user Port reports as anything other than active is shown as **Inactive**. Port reports no MFA state, so the **MFA** column shows **Unknown**.
    </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 Port user roster — names, emails, roles, status and creation dates — which appears on your **Access** page; and your Port **blueprints**, which appear on your **Inventory** page with their title and description. Entities, scorecards and actions are not read.

    It calls these Port endpoints on `api.getport.io` (or `api.us.getport.io` for US-region organizations):

    * `/v1/auth/access_token` (exchanges the Client ID and Secret for a short-lived token)
    * `/v1/users`
    * `/v1/blueprints`

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

    ## Troubleshooting

    <AccordionGroup>
      <Accordion title="The connection is rejected">
        The Client ID and Client Secret must be the pair from the **Organization** tab of your Port credentials, pasted into their own fields — the two values look alike. A wrong **Region** fails the same way: an organization on the US instance must be connected with `us`. Copy the pair again and connect again.
      </Accordion>

      <Accordion title="The secret is no longer visible in Port">
        Port shows a client secret at creation and is phasing out re-displaying it. If you did not copy it, generate a new secret from the same Credentials page, then disconnect and connect again. Note that disconnecting permanently deletes the data already collected from Port.
      </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">
    A Port organization Client ID and Client Secret (profile icon → Credentials). Read-only.

    **Before you begin**

    * A Port organization and **admin** access to it — organization credentials are shown to admins.
    * Your Port region: EU (`app.getport.io`) is the default; enter **us** if your organization is on the US instance.

    You will need:

    | Field                 | Where to find it                                  | Example                  |
    | --------------------- | ------------------------------------------------- | ------------------------ |
    | **Client ID**         | Profile icon → **Credentials → Organization** tab | Shown on the tab         |
    | **Client Secret**     | Same tab                                          | Copy it when it is shown |
    | **Region** (optional) | Your Port URL                                     | `us` for the US instance |

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

      <Step title="Find your organization credentials">
        In Port, click your profile icon, choose **Credentials**, and open the **Organization** tab. Copy the **Client ID** and the **Client Secret**.

        <Warning>
          **Copy the secret when it is shown.** Port is phasing out re-displaying client secrets, so a secret you did not save has to be regenerated. Keep the two values apart as well: they look alike but are different, and a swapped pair fails at Port's token exchange.
        </Warning>
      </Step>

      <Step title="Connect Port">
        Return to the connect panel, paste the Client ID and the Client Secret into their fields, enter **us** as the region if your organization is on the US instance, and click **Connect**.
      </Step>
    </Steps>

    <Check>
      DSALTA validates the pair when you click **Connect**, by exchanging it for an access token and listing your users. 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.** Wrong or swapped Client ID and Client Secret, a regenerated secret, or the wrong region.

      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/port/user-access-to-critical-system-should-be-valid) | Info     | Checks that everyone with Port access is an active employee on the People page. |
    | [Offboarded users should not have active access](/integrations/port/offboarded-users-should-not-have-active-access) | High     | Checks that offboarded employees no longer have active Port access.             |
  </Tab>

  <Tab title="Useful links">
    | Topic   | Link                                                                                |
    | ------- | ----------------------------------------------------------------------------------- |
    | Setup   | [Port API](https://docs.port.io/build-your-software-catalog/custom-integration/api) |
    | General | [Port](https://app.getport.io)                                                      |
    | DSALTA  | [Connection error messages](/troubleshooting/connection-error-messages)             |
  </Tab>
</Tabs>
