---
title: "Get a tree-structure of suppliers of the given target"
method: GET
path: "/public/v1/suppliers/{systemId}/{targetId}/supplier-graph"
tags: ["Suppliers - Supplier Graph"]
deprecated: true
---

# Get a tree-structure of suppliers of the given target

`GET /public/v1/suppliers/{systemId}/{targetId}/supplier-graph`

> **Deprecated.**

⚠️ **DEPRECATED** - This endpoint is deprecated and will be removed at the end of December 2026.

---

## Migration Required

This endpoint has been replaced by the v1 Collections Tier-N API. Please migrate to the new endpoint:

### Replacement Endpoint

| Old Endpoint | New Endpoint | Purpose |
|--------------|--------------|---------|
| `GET /public/v1/suppliers/{systemId}/{targetId}/supplier-graph` | `GET /public/v1/collections/{collectionId}/tier-n/data` | Get collection-based supplier graphs |

---

## Why Migrate?

The v1 Collections Tier-N API provides significant improvements:

### 1. Collection-Based Approach
- **v1**: Works with individual target IDs
- **v1 Tier-N**: Works with collections, allowing you to analyze multiple suppliers together
- **v1 Tier-N**: Better integration with collection management workflows
- **v1 Tier-N**: Collection-level configuration for consistent analysis settings

### 2. Enhanced Functionality
- **v1**: Basic supplier graph with limited configuration
- **v1 Tier-N**: Advanced filtering through collection settings
- **v1 Tier-N**: Configurable data sources (customs, media, predictions)
- **v1 Tier-N**: Better control over scope (private, shared, public targets)

### 3. Improved Consistency
- **v1**: Target-specific endpoint
- **v1 Tier-N**: Aligned with collection-based API design
- **v1 Tier-N**: Consistent with other collection management endpoints

### 4. Better Documentation
- Comprehensive examples for all endpoints
- Detailed error response documentation
- Clear parameter descriptions
- Migration guidance and best practices

---

## Quick Migration Guide

### Step 1: Identify Collection ID

**Important**: The v1 Tier-N endpoint requires a collection ID instead of a target ID. If you don't have a collection yet:

1. Create a collection using `POST /public/v1/collections`
2. Add your target to the collection using `POST /public/v1/collections/{collectionId}/targets`
3. Ensure the collection has tier-n enabled (`tiersEnabled: true`)

### Step 2: Update Endpoint Call

**Before:**
```http
GET /public/v1/suppliers/prewave/102006215/supplier-graph?tierLevel=3&commodityIds=101,102&filter={...}
```

**After:**
```http
GET /public/v1/collections/123/tier-n/data?tierLevel=3&commodityIds=101,102
```

### Step 3: Update Request Parameters

**v1 Parameters**:
- `systemId`: System identifier (path parameter)
- `targetId`: Target identifier (path parameter)
- `tierLevel`: Maximum tier level (query parameter, max 4)
- `commodityIds`: List of commodity IDs (query parameter)
- `filter`: Complex filter object (query parameter)
- `commodityTreeId`: Commodity tree ID (query parameter)
- `fetchParents`: Include parents (query parameter, default: true)

**v1 Tier-N Parameters**:
- `collectionId`: Collection identifier (path parameter)
- `tierLevel`: Maximum tier level (query parameter, max 4)
- `commodityIds`: List of commodity IDs (query parameter)
- `commodityTreeId`: Commodity tree ID (query parameter)
- Filter options can be configured in collection settings using `PUT /public/v1/collections/{collectionId}/tier-n/settings`

### Step 4: Configure Collection Settings (Optional)

For advanced filtering, configure collection settings:

```http
PUT /public/v1/collections/123/tier-n/settings
{
"maxTier": 3,
"scopePrivate": true,
"scopeShared": true,
"sourceCustoms": true,
"sourceMedia": true,
"minShipments": 5,
"probability": 75
}
```

---

## Breaking Changes

1. **Endpoint Path**: Changed from `/public/v1/suppliers/{systemId}/{targetId}/supplier-graph` to `/public/v1/collections/{collectionId}/tier-n/data`
2. **Path Parameters**:
- **v1**: Requires `systemId` and `targetId`
- **v1 Tier-N**: Requires `collectionId` (collection-based approach)
3. **Filter Configuration**:
- **v1**: Filter passed as query parameter object
- **v1 Tier-N**: Filter options configured in collection settings or passed as separate query parameters
4. **Response Structure**: May differ slightly - review response format
5. **Collection Requirement**: v1 Tier-N requires targets to be part of a collection

---

## Important Notes

### Collection Requirement
- The v1 Tier-N endpoint requires targets to be part of a collection
- If you're currently using this endpoint with individual targets, you'll need to:
1. Create or identify a collection containing your target
2. Ensure the collection has tier-n enabled (`tiersEnabled: true`)
3. Use the collection ID instead of target ID

### Filter Migration
- Complex filter objects from v1 should be migrated to collection settings
- Use `GET /public/v1/collections/{collectionId}/tier-n/settings` to view current settings
- Use `PUT /public/v1/collections/{collectionId}/tier-n/settings` to configure filters

---

**Required Permission**: `ACCESS_PUBLIC_SUPPLIER_GRAPH`

**Performance Impact**: High

For detailed API reference and examples, see the v1 Collections Tier-N API documentation.

## Path parameters

- `systemId` string, required
- `targetId` string, required

## Query parameters

- `tierLevel` integer
- `commodityIds` integer[]
- `commodityTreeId` integer
- `filter` TargetSuppliersFilter, required
  - `query` string, nullable
  - `collectionIds` integer[], required
  - `commodityIds` integer[], required
  - `targetTypeIds` integer[], required
  - `tiers` integer[], required
  - `scopes` Scope[], required
  - `source` 'Customer' | 'Media' | 'Customs' | 'PrewavePrediction'
  - `countries` integer[]
  - `hscodes` string[], required
  - `lastShipment` string, date, nullable
  - `onlyDirectlySuppliers` boolean, required
  - `countryIds` integer[], required
- `fetchParents` boolean

## Response `200`

Successfully retrieved supplier graph

- PublicTreeTargetV1[]
  - `target` PublicTargetDTO, required
    - `id` integer, required — Prewave target id
    - `name` string, required — Name of the Prewave target
    - `sname` string, nullable — Geonames Id (see https://geonames.org)
    - `logo` string, nullable — URL to the logo shown in the target profile
    - `backgroundPicture` string, nullable — URL to the background picture shown in the target profile
    - `description` string, nullable — Description of the Prewave target
    - `website` string, nullable — URL to the website shown in the target profile
    - `location` string, nullable — Location of the target
    - `yearFounded` integer, nullable — Year the target was founded shown in the target profile
    - `size` 'Small' | 'Medium' | 'Large' | 'Very large'
    - `screened` boolean, required — Whether the target is screened or not
    - `screenedStatus` 'Required' | 'Pending' | 'Screened' | 'NotPossible' — Screening status of the target
    - `linkedInId` string, nullable — LinkedIn ID of the target
    - `type` PublicTargetTypeDTO, required — Target types are what is known as "Target Type" in the Prewave system (e.g in Network > Filters). They provide a broad categorization of what the target is. Examples for target types are "poi", "organization" etc.
      - `id` integer, required — Prewave-internal ID of the target type
      - `type` string, required — Machine-readable name of the target type
      - `displayName` string, required — Display name of the target type
      - `pluralName` string, required — Plural name of the target type
      - `ordering` integer, nullable — Ordering of the target type
      - `scoring` 'Alert' | 'Peer' — Scoring of the target type
    - `ctype` PublicTargetCTypeDTO, required — CTypes are what is known as "Facility Types" in the Prewave system (e.g in Network > Filters). They provide a slightly more specific categorization of what the target is. Examples for ctypes are "mine", "factory" etc.
      - `id` integer, required — Prewave-internal id of the target ctype
      - `ctype` string, required — Name of the target ctype
      - `targetTypeId` integer, required — Identifier of the target ctype
      - `displayName` string, required — Display name of the target ctype
      - `pluralName` string, required — Plural name of the target ctype
      - `icon` string, required — Icon of the target ctype. Fontawesome icon name. See https://fontawesome.com/icons for more information
      - `ordering` integer, nullable — Ordering of the target ctype
      - `priority` integer, required — Priority of the target ctype
      - `connectable` boolean, required — Whether it is possible to connect to targets of this type or not
      - `bgColor` string, required — Background color of the target ctype. Valid CSS color value
      - `textColor` string, required — Text color of the target ctype. Valid CSS color value
    - `geo` Geo, required — Geo information for this alert. Only available if includeGeo is set to true.
      - `geometry` Geometry — GeoJSON-compatible geometry object. Fields follow the GeoJSON spec (https://geojson.org): a `type` string (e.g. `Point`, `Polygon`) and a `coordinates` array.
      - `properties` GeoProperties, required
        - `name` string, nullable
        - `countryCode` string, nullable
        - `alertCount` integer, nullable
        - `boundingBox` BoundingBox
          - `xmin` number, double, required
          - `ymin` number, double, required
          - `xmax` number, double, required
          - `ymax` number, double, required
      - `type` string, required
    - `geoShape` Geo, required — Geo information for this alert. Only available if includeGeo is set to true.
      - `geometry` Geometry — GeoJSON-compatible geometry object. Fields follow the GeoJSON spec (https://geojson.org): a `type` string (e.g. `Point`, `Polygon`) and a `coordinates` array.
      - `properties` GeoProperties, required
        - `name` string, nullable
        - `countryCode` string, nullable
        - `alertCount` integer, nullable
        - `boundingBox` BoundingBox
          - `xmin` number, double, required
          - `ymin` number, double, required
          - `xmax` number, double, required
          - `ymax` number, double, required
      - `type` string, required
    - `parents` PublicTargetDTO[], required — List of parent targets
    - `organization` PublicTargetDTO — recursive
    - `industries` PublicTargetDTO[], required — List of industries the target belongs to
    - `monitoredSince` string, date-time, nullable — Date the target was monitored since
    - `earliestAlert` string, date-time, nullable — Date of the earliest alert
    - `ordering` integer, nullable — Ordering of the target
    - `disruptionStatusUpdate` object, nullable — Deprecated. Disruption status has been removed and this field is always null.
    - `own` boolean, required — Whether the target is owned by user customer or not
    - `managed` boolean, required — `true` if user is target connection contact or target is owned by user customer, `false` otherwise
    - `isPublic` boolean, nullable — Whether the target is public or not
    - `connectionContactsCount` integer, nullable — Number of connection contacts of the target
    - `population` integer, nullable — Population of the target. Generally applies to locations
    - `following` boolean, required — Target resides in "My follows" collection
    - `collectionFollowing` boolean, required — Target resides in any followed collection (including children)
    - `tier` integer, nullable — Tier of the target (relevant when fetching Tier-N)
    - `path` PublicTargetRefExtended[], required — Path of the target (relevant when fetching Tier-N)
      - `id` integer, required
      - `name` string, required
      - `customName` string, nullable
      - `latestRequest` TargetRequestInfoDto
        - `targetId` integer, required
        - `validationRequest` TargetRequestTypeStatusDto
          - `id` integer, nullable
          - `customerId` integer, nullable
          - `status` 'NONE' | 'PENDING' | 'COMPLETED' | 'REJECTED'
          - `rejectionReason` string, nullable
        - `screeningRequest` TargetRequestTypeStatusDto
          - `id` integer, nullable
          - `customerId` integer, nullable
          - `status` 'NONE' | 'PENDING' | 'COMPLETED' | 'REJECTED'
          - `rejectionReason` string, nullable
        - `reportedTargetRequest` TargetRequestTypeStatusDto
          - `id` integer, nullable
          - `customerId` integer, nullable
          - `status` 'NONE' | 'PENDING' | 'COMPLETED' | 'REJECTED'
          - `rejectionReason` string, nullable
      - `foreignSystems` EdgeNumber[], required
        - `number` string, required
        - `source` string, nullable
        - `existingEdgeId` integer, nullable
    - `collectionLevel` integer, nullable — How deep the target is in the collection hierarchy
    - `collectionPath` CollectionRef[], required — Path of the target in the collection hierarchy
      - `id` integer, required
      - `name` string, required
    - `collectionPaths` array[], required — Paths of the target in the collection hierarchy
      - CollectionRef[] — Paths of the target in the collection hierarchy
        - `id` integer, required
        - `name` string, required
    - `foreignSystems` PublicTargetForeignSystemDTO[], required — List of foreign systems the target is connected to
      - `system` string, required — The system ID is an identifier to determine from which the targetId might originate from. Supported systemIds are "prewave", "customer", "supplier", "own".
      - `id` string, required — The id in the foreign system
      - `source` string, nullable — Name of the foreign system
    - `scoreAvail` 'None' | 'Peer' | 'Alert' | 'SSA' | 'External', required
    - `revenue` number, nullable — Revenue of the target
    - `impact` 'NA' | 'No' | 'Low' | 'Mid' | 'High' | 'Critical'
    - `hsCode` PublicHSCode[], required — List of HS Codes of the target
      - `code` string, required
      - `nShipments` integer, nullable
      - `nshipments` integer
    - `mergedTargets` integer[], required — Target ids of past targets that were merged into this current target
    - `public` boolean
  - `suppliers` PublicTreeTargetV1[], required
  - `edgeSource` string, required
  - `edgeInfo` PublicEdgeInfo
    - `hsCodes` PublicHSCode[], required
      - `code` string, required
      - `nShipments` integer, nullable
      - `nshipments` integer
    - `probability` number, double, nullable
  - `filtered` boolean, required

## Other responses

- `400` — Invalid request parameters (e.g., tier level > 4)
- `403` — 403 Forbidden - Authentication or authorization failure. This status code is returned when: (1) the request lacks valid authentication credentials (missing or invalid X-Auth-Token header), or (2) the authenticated user does not have the required permission to access this resource.
- `404` — Target not found or not accessible to the user
- `429` — 429 Too Many Requests - API rate limit exceeded. The request has been rejected because the rate limit for this endpoint has been exceeded. Default rate limits: GET requests - 100 per 10 seconds, 500 per minute; POST/PUT/PATCH/DELETE requests - 20 per 10 seconds, 100 per minute. For increased access, please contact customer success.
- `500` — 500 Internal Server Error - An unexpected error occurred on the server. The request may or may not have been processed.

---

[API](https://skmtc.net/prewave/apis/public-prewave-api.md) · [All operations](https://skmtc.net/prewave/apis/public-prewave-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/prewave/public-prewave-api/revisions/466169815b78/schema)
