---
title: "Get all suppliers of the customer"
method: GET
path: "/public/v1/suppliers"
tags: ["Suppliers - Management"]
deprecated: true
---

# Get all suppliers of the customer

`GET /public/v1/suppliers`

## Request

- Base URL: `https://api.prewave.com`
- URL: `https://api.prewave.com/public/v1/suppliers`
- Auth: API key in header `X-Auth-Token`
- TypeScript: <https://skmtc.dev/prewave/apis/public-prewave-api/docs/public/v1/suppliers/get.ts> (a function with typed inputs; its response is checked against the schema)

> **Deprecated.**

⚠️ **DEPRECATED** - This endpoint is deprecated and will be removed on 31 May 2027.

---

## Migration Required

This endpoint has been replaced by the v2 Supplier Management API. Please migrate to the new endpoints:

### Replacement Endpoints

| Old Endpoint | New Endpoint | Purpose |
|--------------|--------------|---------|
| `GET /public/v1/suppliers` | `GET /public/v2/suppliers/sites` | List all suppliers |
| `GET /public/v1/target/prewave/{targetId}` | `GET /public/v2/suppliers/sites/find-by-identifier?prewaveId={targetId}` | Get detailed supplier by ID |

---

## Why Migrate?

The v2 API provides significant improvements:

### 1. Simplified Response Structure
- **v1**: Returns complex `PublicTargetDTO` with 30+ fields including nested objects (parents, industries, collections, etc.)
- **v2**: Returns `PublicSupplierV2DTO` with only essential fields:
  - `prewaveTargetId` (Int)
  - `name` (String)
  - `address` (String?)
  - `city` (String?)
  - `countryCode` (String?)
  - `supplierIds` (List<PublicSupplierIdentifierId>)

**Example v2 Response:**
```json
{
  "content": [
    {
      "prewaveTargetId": 102006215,
      "name": "Acme Corporation",
      "address": "123 Main St, Vienna, Austria",
      "city": "Vienna",
      "countryCode": "AT",
      "supplierIds": [
        {"id": "SUP-12345", "source": "SAP"}
      ]
    }
  ]
}
```

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

### 3. Improved Consistency
- Fixed alphabetical ordering (by name, then by ID) for deterministic pagination
- Consistent response structure across all endpoints
- Predictable behavior for integrations

### 4. Target ID Stability Guidance
- Clear documentation about when target IDs may change
- Best practices for synchronization
- Guidance on handling target merges

### 5. Full CRUD Operations
- `POST /public/v2/suppliers/sites` - Create suppliers
- `DELETE /public/v2/suppliers/sites` - Deactivate suppliers
- `GET /public/v2/suppliers/sites/pending` - Track pending creations

### 6. Better Performance
- Optimized database queries
- Reduced response payload size (typically 60-80% smaller)
- Faster response times

---

## Quick Migration Guide

### Step 1: Update List Endpoint
**Before:**
```http
GET /public/v1/suppliers?page=0&size=20
```

**After:**
```http
GET /public/v2/suppliers/sites?page=0&size=20
```

### Step 2: Update Response Parsing
**Before:** Parse complex `PublicTargetDTO` with nested structures

**After:** Parse simplified `PublicSupplierV2DTO` with flat structure

### Step 3: Understand Sites vs Site-Groups
⚠️ **Important**: The v2 endpoint returns **only sites** (physical locations), not site-groups.

- **v1**: Included both sites and site-groups
- **v2**: Includes only sites (physical locations with addresses)
- **Result**: Total count may be lower in v2

If you need site-group information, you may need to adjust your integration logic or contact support for guidance.

### Step 4: Get Detailed Information (if needed)
If you need detailed supplier information, use the v2 search endpoint:
```http
GET /public/v2/suppliers/sites/find-by-identifier?prewaveId={prewaveTargetId}
```

---

## Breaking Changes

1. **Response Structure**: The response structure is completely different. You'll need to update your response parsing logic.
2. **Field Names**: Some field names have changed (e.g., `id` → `prewaveTargetId`).
3. **Removed Fields**: Many fields from v1 are not available in the list endpoint (use the detail endpoint if needed).
4. **Query Parameters**: The `hasNumber` parameter is not available in v2. Filter by supplier identifiers in your application logic if needed.
5. **Sites vs Site-Groups**:
   - **v1**: Returns both **sites** (physical locations/branches with addresses) and **site-groups** (general company owners without specific addresses)
   - **v2**: Returns **only sites** (physical locations/branches with addresses). Site-groups are excluded
   - **Impact**: The total number of elements returned by v2 may be **lower** than v1 because site-groups are excluded
   - **Why**: The v2 API focuses on physical supplier locations (sites) which are more relevant for most integrations

---

**Required Permission**: `ACCESS_PUBLIC_SUPPLIERS`

**Performance Impact**: Medium

For detailed migration examples and API reference, see the v2 Supplier Management API documentation.

## Query parameters

- `hasNumber` boolean
- `pageable` Pageable, required
  - `page` integer
  - `size` integer
  - `sort` string[]

## Response `200`

OK

- object
  - `content` PublicTargetDTO[]
    - `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, nullable: Deprecated. Unused leftover sort rank. Omitted when enabled for your organization.
      - `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: Deprecated. Date of the earliest alert. Omitted when enabled for your organization.
    - `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': Impact level.
    - `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
  - `size` integer
  - `number` integer
  - `totalElements` integer
  - `totalPages` integer
  - `numberOfElements` integer
  - `first` boolean
  - `last` boolean
  - `empty` boolean

## Other responses

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

## Changes

- **2026-10-17** `cedf01f35c95`: 2 info
  - added `#/components/schemas/PublicLevel` to the `content/items/impact` response property `allOf` list for the response status `200`
  - removed `#/components/schemas/Level` from the `content/items/impact` response property `allOf` list for the response status `200`
- **2026-09-01** `0ab68d9081f9`: 1 info
  - response property `content/items/earliestAlert` deprecated
- **2026-08-28** `d08b2fe6a84f`: 2 breaking, 1 info
  - the response property `content/items/ctype/priority` became nullable for the status `200`
  - the response property `content/items/ctype/priority` became optional for the status `200`
  - response property `content/items/ctype/priority` deprecated

[Operation history](https://skmtc.dev/prewave/apis/public-prewave-api/changes/public/v1/suppliers/get.md)

---

[API](https://skmtc.dev/prewave/apis/public-prewave-api.md) - [All operations](https://skmtc.dev/prewave/apis/public-prewave-api/llms.txt) - [OpenAPI document](https://skmtc.dev/prewave/apis/public-prewave-api/revisions/462a5e63fc9f?raw)
