Prewave Collections - Tier-N API

Public API for retrieving supplier relationship graphs from tier-n enabled collections.

OpenAPI Specification

prewave-collections-tier-n-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Public Prewave Actions Collections - Tier-N API
  description: 'Documentation of the Public Prewave API.


    ## What''s New


    ### Q1 2026 — Supplier Management, User Management, Actions and Feed


    This quarter introduces major v2 upgrades, expanded administrative capabilities, and the new Actions API.


    - **Core Releases:** Deployed Supplier Management API v2 and Feed API v2, alongside the all-new Actions API.

    - **Enhanced Functionality:** Added robust identifier management, granular user and role configuration, and endpoints for managing supplier connection contacts.

    - ⚠️ **Required Migration:** Legacy v1 endpoints for Suppliers and Sites Upsert have been deprecated. Developers must migrate existing integrations to v2 by **May 31, 2027** (original deadline was December 31, 2026).


    📖 **[Read the Q1 2026 changelog](https://docs.prewave.com/en/articles/699847-q1-2026-public-api-updates)**


    ### Q2 2026 — Supplier Screening and External Scores


    We have expanded our v2 documentation to include comprehensive integration guidance for supplier screening and validation workflows and identifier-based external score ingestion.


    - **New Capabilities:** Added support for optional post-onboarding screening and validation during the create event.

    - **External Scores:** Batch POST for multiple supplier sites, per-site history GET, and event-type discovery GET (`/public/v1/scores/externals` and `/public/v1/scores/externals/event-types`). Documented in OpenAPI when enabled for your organization.

    - **Developer Resources:** Published new integration examples and detailed identifier validation rules to streamline your implementation process.


    📖 **[Read the Q2 2026 changelog](https://docs.prewave.com/en/articles/699849-q2-2026-public-api-updates)**


    ### Q3 2026 — Scores Webhooks


    To support event-driven architectures and eliminate the need for continuous API polling, we are introducing webhooks for score state changes later this year.


    - **Event-Driven Architecture:** Register webhook URLs to receive real-time HTTP payloads whenever a supplier''s score updates, so you can drive immediate mitigation responses without polling the API.

    - **Availability:** Comprehensive OpenAPI specifications and payload schemas will be published closer to the release date.

    - **Note:** Schemas and behaviors are subject to refinement prior to general availability.


    Documentation updates will be provided prior to release.


    ### Q4 2026 — Feed V2


    We are enhancing Feed API v2 with additional capabilities on top of the existing `GET /public/v2/feed` contract (see Q1 changelog and OpenAPI for the current Feed v2 integration).


    - **Availability:** Details will be announced before release.

    - **Note:** Schemas and behaviors are subject to refinement prior to the official release.


    Documentation updates will be provided prior to release.


    ---


    ## Authentication

    Prewave’s public api uses *API tokens* to authenticate against our RESTful service. We’ll provide you an *API-token* that each

    endpoint needs present as a http header.


    To pass the token in a request, simply add it as a header-parameter with

    * key = X-Auth-Token

    * value = api-token


    See an example in curl below where the api-token would be 12345678-90ab-cdef-1234-567890abcdef

    ```

    curl --request GET \

    --url https://REPLACE_WITH_SERVER/public/v1/target/prewave/3975230/alerts \

    --header ''X-Auth-Token: 12345678-90ab-cdef-1234-567890abcdef''

    ```


    ---


    ## Manage API Tokens


    Before you can obtain your API token, you''ll need the credentials for your API user. These credentials will be

    sent to you as part of the company-onboarding. If you haven''t got your credentials yet, please reach out to

    your sales-contact at Prewave or contact us via info@prewave.ai


    To generate an API Token, navigate to https://www.prewave.com/management/api and log in with the

    credentials of your API user. Then click at the button "Create New" and use your new api-token authentication as a header parameter.


    You can create multiple API tokens and also remove existing API tokens on https://www.prewave.com/management/api.

    API tokens do not expire, therefore you have to maintain the list of API tokens you are using manually.


    ---


    ## Default Rate Limits


    We have two types of default rate limits. For increased access, please contact customer success.


    | Type                              | Requests per 10 seconds | Requests per Minute |

    |-----------------------------------|-------------------------|---------------------|

    | GET requests                      | 100                     | 500                 |

    | POST, PUT, PATCH, DELETE requests | 20                      | 100                 |


    '
  version: '1.0'
servers:
- url: https://api.prewave.com
  description: Production Environment
security:
- Token authentication: []
tags:
- name: Collections - Tier-N
  description: Public API for retrieving supplier relationship graphs from tier-n enabled collections.
paths:
  /public/v1/collections/{collectionId}/tier-n/settings:
    get:
      tags:
      - Collections - Tier-N
      summary: Get tier-n collection settings
      description: "\n### Overview\nRetrieve tier-n configuration for a collection. These settings are used as defaults when calling `GET .../tier-n/data` and can be overridden via query parameters there.\n\n### Related Operations\n- **Data**: [GET /public/v1/collections/{collectionId}/tier-n/data](#operations-Collections_-_Tier-N-getTierNCollectionGraph)\n- **Update**: [PUT /public/v1/collections/{collectionId}/tier-n/settings](#operations-Collections_-_Tier-N-updateTierNCollectionSettings)\n\n### Required Permission\n`access_public_supplier_graph`, `access_collection`, and `read` on the collection.\n    "
      operationId: getTierNCollectionSettings
      parameters:
      - name: collectionId
        in: path
        description: Unique identifier of the tier-n collection. Same as the `id` from GET /public/v1/collections. The collection must have tiersEnabled=true.
        required: true
        schema:
          type: integer
          format: int32
        example: 123
      responses:
        '200':
          description: Successfully retrieved tier-n collection settings.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicTierNCollectionSettings'
              examples:
                Tier-N Settings - Complete:
                  description: Tier-N Settings - Complete
                  value: '{"collectionId":123,"collectionName":"Electronics Supply Chain","maxTier":3,"targetIds":[101,102,103],"scopePrivate":true,"scopeShared":true,"scopePublic":false,"sourceCustomer":true,"sourceCustoms":true,"sourceMedia":false,"sourcePrewavePrediction":true,"minShipments":5,"probability":75,"shipmentsPeriodFrom":{"date":"2024-01-01","_datetype_":"Date"},"shipmentsPeriodTo":{"date":"2024-12-31","_datetype_":"Date"},"suspectedSuppliers":false,"logisticsProvider":false,"commodityFilterTargetIds":[201,202]}'
                Tier-N Settings - Minimal:
                  description: Tier-N Settings - Minimal
                  value: '{"collectionId":456,"collectionName":"Basic Collection","maxTier":1,"targetIds":[501],"scopePrivate":false,"scopeShared":false,"scopePublic":true,"sourceCustomer":false,"sourceCustoms":true,"sourceMedia":false,"sourcePrewavePrediction":false,"minShipments":null,"probability":null,"shipmentsPeriodFrom":null,"shipmentsPeriodTo":null,"suspectedSuppliers":false,"logisticsProvider":false,"commodityFilterTargetIds":[]}'
        '400':
          description: Collection is not tier-n enabled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
              examples:
                Not tier-n collection:
                  description: Not tier-n collection
                  value: '{"code":"INVALID_REQUEST","message":"Only tier-n collections can be used by this endpoint. Collection 123 does not have tiers enabled.","solution":"Use a collection with tiersEnabled=true"}'
        '404':
          description: Collection not found, inactive, not tier-n enabled, or not accessible.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
              examples:
                Collection not found:
                  description: Collection not found
                  value: '{"code":"RESOURCE_NOT_FOUND","message":"Collection not found: ID=123","solution":"Check collection ID or verify access permissions"}'
        '403':
          description: '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.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedErrorDTO'
              examples:
                Access denied example:
                  summary: User lacks necessary permissions or authentication
                  value: "{\n        \"loggedIn\": true,\n        \"code\": \"access_denied\",\n        \"message\": \"Access denied: you don't have necessary permissions to access this resource\",\n        \"solution\": \"Contact support for appropriate permissions\"\n    }"
        '500':
          description: 500 Internal Server Error - An unexpected error occurred on the server. The request may or may not have been processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
              examples:
                Error - Server Error:
                  summary: Unexpected server error
                  value: "{\n        \"code\": \"internal_error\",\n        \"message\": \"An unexpected error occurred\",\n        \"solution\": \"Please try again later or contact support\"\n    }"
        '429':
          description: '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.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiRateLimitResponse'
              examples:
                Rate limit exceeded example:
                  summary: API rate limit exceeded
                  value: "{\n        \"error\": \"API rate limit exceeded\",\n        \"message\": \"You have reached the maximum allowed requests. Please try again later or upgrade your plan for increased access\",\n        \"requestLimit\": 100,\n        \"requestCount\": 100,\n        \"limits\": [\n            {\n                \"requestLimit\": 100,\n                \"timeInSeconds\": 10\n            },\n            {\n                \"requestLimit\": 500,\n                \"timeInSeconds\": 60\n            }\n        ],\n        \"currentTime\": \"2026-01-15T10:30:00\",\n        \"nextResetAt\": \"2026-01-15T10:30:10\"\n    }"
    put:
      tags:
      - Collections - Tier-N
      summary: Update tier-n collection settings
      description: "\n### Overview\nUpdate tier-n configuration for a collection. All request fields are optional (partial update). Updated settings become defaults for `GET .../tier-n/data`.\n\n### Validation\n- Collection must exist, be active, and have `tiersEnabled=true`.\n- `maxTier` 1–9 if provided; `probability` 0–100 if provided; dates in YYYY-MM-DD; `shipmentsPeriodFrom` ≤ `shipmentsPeriodTo`.\n\n### Audit\nThe update is recorded with comment \"Tier-n collection settings updated via Public API\".\n\n### Required Permission\n`manage_collection` and `update` on the collection.\n    "
      operationId: updateTierNCollectionSettings
      parameters:
      - name: collectionId
        in: path
        description: Unique identifier of the tier-n collection. Same as the `id` from GET /public/v1/collections. The collection must have tiersEnabled=true.
        required: true
        schema:
          type: integer
          format: int32
        example: 123
      requestBody:
        description: 'Tier-n settings update. Content-Type: application/json. All fields optional.'
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PublicTierNCollectionSettingsUpdateRequest'
            examples:
              Update max tier:
                description: Update max tier
                value: '{"maxTier":4,"scopePrivate":null,"scopeShared":null,"scopePublic":null,"sourceCustomer":null,"sourceCustoms":null,"sourceMedia":null,"sourcePrewavePrediction":null,"minShipments":null,"probability":null,"shipmentsPeriodFrom":null,"shipmentsPeriodTo":null,"suspectedSuppliers":null,"logisticsProvider":null}'
              Update data sources:
                description: Update data sources
                value: '{"maxTier":null,"scopePrivate":null,"scopeShared":null,"scopePublic":null,"sourceCustomer":null,"sourceCustoms":null,"sourceMedia":true,"sourcePrewavePrediction":false,"minShipments":null,"probability":null,"shipmentsPeriodFrom":null,"shipmentsPeriodTo":null,"suspectedSuppliers":null,"logisticsProvider":null}'
              Update filters:
                description: Update filters
                value: '{"maxTier":null,"scopePrivate":null,"scopeShared":null,"scopePublic":null,"sourceCustomer":null,"sourceCustoms":null,"sourceMedia":null,"sourcePrewavePrediction":null,"minShipments":10,"probability":85,"shipmentsPeriodFrom":{"date":"2024-06-01","_datetype_":"Date"},"shipmentsPeriodTo":{"date":"2024-11-30","_datetype_":"Date"},"suspectedSuppliers":null,"logisticsProvider":null}'
              Remove filters:
                description: Remove filters
                value: '{"minShipments":null,"probability":null}'
        required: true
      responses:
        '200':
          description: Tier-n collection settings updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicTierNCollectionSettings'
              examples:
                Updated settings:
                  description: Updated settings
                  value: '{"collectionId":123,"collectionName":"My Tier-N Collection","maxTier":3,"targetIds":[101,102,103],"scopePrivate":true,"scopeShared":true,"scopePublic":false,"sourceCustomer":true,"sourceCustoms":true,"sourceMedia":false,"sourcePrewavePrediction":true,"minShipments":5,"probability":75,"shipmentsPeriodFrom":{"date":"2024-01-01","_datetype_":"Date"},"shipmentsPeriodTo":{"date":"2024-12-31","_datetype_":"Date"},"suspectedSuppliers":false,"logisticsProvider":false,"commodityFilterTargetIds":[201,202]}'
        '400':
          description: Not tier-n enabled, invalid payload, maxTier/probability out of range, or invalid dates.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
              examples:
                Not tier-n collection:
                  description: Not tier-n collection
                  value: '{"code":"INVALID_REQUEST","message":"Only tier-n collections can be used by this endpoint. Collection 123 does not have tiers enabled.","solution":"Use a collection with tiersEnabled=true"}'
                Invalid maxTier:
                  description: Invalid maxTier
                  value: '{"code":"INVALID_REQUEST","message":"maxTier must be between 1 and 9, got: 10","solution":"Provide a valid maxTier value between 1 and 9"}'
        '404':
          description: Collection not found, inactive, not tier-n enabled, or no UPDATE permission.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
              examples:
                Collection not found:
                  description: Collection not found
                  value: '{"code":"RESOURCE_NOT_FOUND","message":"Collection not found: ID=123","solution":"Verify the collection ID and ensure you have UPDATE permission on the collection"}'
        '403':
          description: '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.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedErrorDTO'
              examples:
                Access denied example:
                  summary: User lacks necessary permissions or authentication
                  value: "{\n        \"loggedIn\": true,\n        \"code\": \"access_denied\",\n        \"message\": \"Access denied: you don't have necessary permissions to access this resource\",\n        \"solution\": \"Contact support for appropriate permissions\"\n    }"
        '500':
          description: 500 Internal Server Error - An unexpected error occurred on the server. The request may or may not have been processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
              examples:
                Error - Server Error:
                  summary: Unexpected server error
                  value: "{\n        \"code\": \"internal_error\",\n        \"message\": \"An unexpected error occurred\",\n        \"solution\": \"Please try again later or contact support\"\n    }"
        '429':
          description: '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.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiRateLimitResponse'
              examples:
                Rate limit exceeded example:
                  summary: API rate limit exceeded
                  value: "{\n        \"error\": \"API rate limit exceeded\",\n        \"message\": \"You have reached the maximum allowed requests. Please try again later or upgrade your plan for increased access\",\n        \"requestLimit\": 20,\n        \"requestCount\": 20,\n        \"limits\": [\n            {\n                \"requestLimit\": 20,\n                \"timeInSeconds\": 10\n            },\n            {\n                \"requestLimit\": 100,\n                \"timeInSeconds\": 60\n            }\n        ],\n        \"currentTime\": \"2026-01-15T10:30:00\",\n        \"nextResetAt\": \"2026-01-15T10:30:10\"\n    }"
  /public/v3/alpha/suppliers/collection/{collectionId}/supplier-graph:
    get:
      tags:
      - Collections - Tier-N
      summary: Get a tree-structure of suppliers of the given collection
      description: '

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


        **Note**: Responses include a `Sunset` HTTP header (RFC 8594) indicating the removal date.


        ---


        ## 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/v3/alpha/suppliers/collection/{collectionId}/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. Enhanced Functionality

        - **v3**: Basic supplier graph with format options

        - **v1**: Advanced filtering through collection settings and query parameters

        - **v1**: Configurable data sources (customs, media, predictions)

        - **v1**: Better control over scope (private, shared, public targets)


        ### 2. Better Performance

        - **v1**: Optimized queries for large collections

        - **v1**: More efficient data retrieval


        ### 3. Improved Documentation

        - Comprehensive examples for all endpoints

        - Detailed error response documentation

        - Clear parameter descriptions


        ---


        ## Quick Migration Guide


        ### Step 1: Update Endpoint URL


        **Before:**

        ```http

        GET /public/v3/alpha/suppliers/collection/123/supplier-graph?format=JSON&tier=2

        ```


        **After:**

        ```http

        GET /public/v1/collections/123/tier-n/data?tier=2

        ```


        ### Step 2: Update Response Parsing


        **Before:** Parse `PublicSupplierGraphEntry` structure (v3 format)


        **After:** Parse `PublicTierNCollectionGraphEntry` structure (v1 format)


        ### Step 3: Handle Format Options


        **v3**: Supports JSON and CSV via `format` parameter


        **v1**: Returns JSON by default. For CSV export, use the response format directly or contact support for CSV export options.


        ---


        **Required Permission**: `ACCESS_PUBLIC_SUPPLIER_GRAPH`


        **Performance Impact**: High


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

        '
      operationId: findSupplierGraph
      parameters:
      - name: collectionId
        in: path
        description: Collection identifier
        required: true
        schema:
          type: integer
          format: int32
        example: 987
      - name: format
        in: query
        description: 'Output format: JSON (default) or CSV'
        required: false
        schema:
          type: string
          description: Output format for supplier graph responses
          enum:
          - JSON
          - CSV
        example: JSON
      - name: includeHeaderMetadata
        in: query
        description: Include metadata as response headers
        required: false
        schema:
          type: boolean
        example: false
      - name: includeCommodityFilter
        in: query
        description: Include commodity filter in the response metadata
        required: false
        schema:
          type: boolean
        example: true
      - name: includeMediaSources
        in: query
        description: Include media source URLs for MEDIA edges
        required: false
        schema:
          type: boolean
        example: false
      - name: includeShipmentDetails
        in: query
        description: Include shipment details where applicable
        required: false
        schema:
          type: boolean
        example: false
      - name: tier
        in: query
        description: Restrict to a specific tier (1..n)
        required: false
        schema:
          type: integer
          format: int32
        example: 2
      - name: source
        in: query
        description: Restrict to a specific edge source
        required: false
        schema:
          type: string
          description: Source of the supplier relationship edge
          enum:
          - Customer
          - Media
          - Customs
          - PrewavePrediction
        example: MEDIA
      - name: lastShipment
        in: query
        description: Only include suppliers with shipments since this date (YYYY-MM-DD)
        required: false
        schema:
          type: string
          format: date
        example: '2024-01-01'
      - name: hsCodes
        in: query
        description: Filter by HS codes
        required: false
        schema:
          uniqueItems: true
          type: array
          items:
            type: string
        example:
        - '847330'
        - '940161'
      responses:
        '200':
          description: Successful response.
          headers:
            X-Collection-Id:
              description: The collection ID
              style: simple
            X-Commodity-Filter-Logistics-Provider:
              description: Whether logistics providers are included in the commodity filter
              style: simple
            X-Max-Tier:
              description: The maximum tier included in the result
              style: simple
            X-Commodity-Filter-Suspected-Suppliers:
              description: Whether suspected suppliers are included in the commodity filter
              style: simple
            X-Shipments-Period-To:
              description: Shipment period end date (YYYY-MM-DD)
              style: simple
            X-Target-Ids:
              description: Comma-separated list of target IDs included in the export
              style: simple
            X-Min-Probability:
              description: Minimum probability threshold applied
              style: simple
            X-Min-Shipments:
              description: Minimum number of shipments considered
              style: simple
            X-Collection-Name:
              description: The collection name
              style: simple
            X-Commodity-Filter-Target-Ids:
              description: Comma-separated target IDs to which the commodity filter applies
              style: simple
            X-Shipments-Period-From:
              description: Shipment period start date (YYYY-MM-DD)
              style: simple
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PublicSupplierGraphEntry'
            text/csv:
              schema:
                type: string
        '400':
          description: Bad Request – invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
              examples:
                Invalid collection ID:
                  summary: Collection not found or not accessible
                  description: Invalid collection ID
                  value:
                    code: invalid_request
                    message: Collection not found or you don't have access to it
                    solution: Verify the collection ID and your permissions
                Invalid tier parameter:
                  summary: Tier value out of valid range
                  description: Invalid tier parameter
                  value:
                    code: invalid_request
                    message: Tier must be a positive integer
                    solution: Provide a valid tier value
                Invalid date format:
                  summary: Invalid date format for lastShipment
                  description: Invalid date format
                  value:
                    code: invalid_request
                    message: 'Invalid date format for lastShipment. Expected format: YYYY-MM-DD'
                    solution: Use the correct date format (YYYY-MM-DD)
        '403':
          description: '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.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessDeniedErrorDTO'
              examples:
                Access denied example:
                  summary: User lacks necessary permissions or authentication
                  value: "{\n        \"loggedIn\": true,\n        \"code\": \"access_denied\",\n        \"message\": \"Access denied: you don't have necessary permissions to access this resource\",\n        \"solution\": \"Contact support for appropriate permissions\"\n    }"
        '500':
          description: 500 Internal Server Error - An unexpected error occurred on the server. The request may or may not have been processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
              examples:
                Error - Server Error:
                  summary: Unexpected server error
                  value: "{\n        \"code\": \"internal_error\",\n        \"message\": \"An unexpected error occurred\",\n        \"solution\": \"Please try again later or contact support\"\n    }"
        '429':
          description: '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.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiRateLimitResponse'
              examples:
                Rate limit exceeded example:
                  summary: API rate limit exceeded
                  value: "{\n        \"error\": \"API rate limit exceeded\",\n        \"message\": \"You have reached the maximum allowed requests. Please try again later or upgrade your plan for increased access\",\n        \"requestLimit\": 100,\n        \"requestCount\": 100,\n        \"limits\": [\n            {\n                \"requestLimit\": 100,\n                \"timeInSeconds\": 10\n            },\n            {\n                \"requestLimit\": 500,\n                \"timeInSeconds\": 60\n            }\n        ],\n        \"currentTime\": \"2026-01-15T10:30:00\",\n        \"nextResetAt\": \"2026-01-15T10:30:10\"\n    }"
      deprecated: true
  /public/v1/collections/{collectionId}/tier-n/data:
    get:
      tags:
      - Collections - Tier-N
      summary: Get tier-n collection supplier graph
      description: "\n### Overview\nRetrieve a stream of supplier relationship data for a tier-n enabled collection. Each entry represents a relationship between a customer and supplier at a specific tier level (tier 1 = direct suppliers, tier 2+ = indirect).\n\n### Response Format\n- JSON array of supplier relationship entries (tier, supplierTargetId, customerTargetId, source, and optional probability/mediaSources/nShipments/shipments).\n- Null-valued fields are omitted. Optional fields appear based on query params (e.g. `includeMediaSources`, `includeShipmentDetails`).\n\n### Query Parameters\nAll optional. They override collection defaults from `GET .../tier-n/settings`. Use them to filter (tier, source, hsCodes, dates) or override scope/source settings.\n\n### Performance\n- Filter by `tier`, `source`, or `hsCodes` to reduce response size. Higher `maxTier` increases data volume and response time.\n\n### Related Operations\n- **Settings**: [GET /public/v1/collections/{collectionId}/tier-n/settings](#operations-Collections_-_Tier-N-getTierNCollectionSettings)\n- **Update settings**: [PUT /public/v1/collections/{collectionId}/tier-n/settings](#operations-Collections_-_Tier-N-updateTierNCollectionSettings)\n\n### Required Permission\n`access_public_supplier_graph`, `access_collection`, and `read` on the collection.\n    "
      operationId: getTierNCollectionGraph
      parameters:
      - name: collectionId
        in: path
        description: Unique identifier of the tier-n collection. Same as the `id` from GET /public/v1/collections. The collection must have tiersEnabled=true.
        required: true
        schema:
          type: integer
          format: int32
        example: 123
      - name: includeCommodityFilter
        in: query
        description: Include commodity filter metadata in the response. When true, adds commodity filter information to help understand data scope and filtering applied.
        required: false
        schema:
          type: boolean
          description: Include commodity filter metadata i

# --- truncated at 32 KB (69 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/prewave/refs/heads/main/openapi/prewave-collections-tier-n-api-openapi.yml