Prewave Exposure API

Get exposure analysis graph and targets

Operations 4

PUT /public/v1/alpha/exposure/target/{targetId}/graph Get exposure graph by target id #
PUT /public/v1/alpha/exposure/target/{systemId}/{targetId}/graph Get exposure graph by foreign system target id #
GET /public/v1/alpha/exposure/{id} Get exposure analysis info by exposure analysis id #
GET /public/v1/alpha/exposure/{id}/graph Get exposure graph by exposure analysis id #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/prewave-exposure-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

prewave-exposure-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Public Prewave Actions Exposure 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: Exposure
  description: Get exposure analysis graph and targets
paths:
  /public/v1/alpha/exposure/target/{targetId}/graph:
    put:
      tags:
      - Exposure
      summary: Get exposure graph by target id
      description: '**Performance impact**: Medium'
      operationId: getExposureGraphByTargetId
      parameters:
      - name: targetId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BaseExposurePayload'
        required: true
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ExplorerGraph'
        '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/v1/alpha/exposure/target/{systemId}/{targetId}/graph:
    put:
      tags:
      - Exposure
      summary: Get exposure graph by foreign system target id
      description: '**Performance impact**: Medium'
      operationId: getExposureGraphByForeignSystemTargetId
      parameters:
      - name: systemId
        in: path
        required: true
        schema:
          type: string
      - name: targetId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BaseExposurePayload'
        required: true
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ExplorerGraph'
        '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/v1/alpha/exposure/{id}:
    get:
      tags:
      - Exposure
      summary: Get exposure analysis info by exposure analysis id
      description: '**Performance impact**: Medium'
      operationId: getExposureAnalysisById
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ExposureAnalysis'
        '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    }"
  /public/v1/alpha/exposure/{id}/graph:
    get:
      tags:
      - Exposure
      summary: Get exposure graph by exposure analysis id
      description: '**Performance impact**: Medium'
      operationId: getExposureGraphById
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int32
      - name: filter
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/ExposureFilter'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/ExposureGraph'
        '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    }"
components:
  schemas:
    Data:
      required:
      - type
      type: object
      properties:
        type:
          type: string
          example: null
      discriminator:
        propertyName: type
      example: null
    Connection:
      required:
      - createdAt
      - customer1Id
      - customer2Id
      - initiatorCustomerId
      - pending
      - state
      - targetCustomerId
      type: object
      properties:
        customer1Id:
          type: integer
          format: int32
          example: null
        customer2Id:
          type: integer
          format: int32
          example: null
        initiatorCustomerId:
          type: integer
          format: int32
          example: null
        state:
          type: string
          enum:
          - Confirmed
          - Rejected
          - Failed
          example: null
        pending:
          type: boolean
          example: null
        initiatorId:
          type:
          - integer
          - 'null'
          format: int32
          example: null
        comment:
          type:
          - string
          - 'null'
          example: null
        email:
          type:
          - string
          - 'null'
          example: null
        text:
          type:
          - string
          - 'null'
          example: null
        createdAt:
          type: string
          format: date-time
          example: null
        targetCustomerId:
          type: integer
          format: int32
          example: null
      example: null
    RiskAnalysisType:
      required:
      - availablePerspectives
      - hideDetails
      - products
      - recommended
      - scoping
      - tierNAnalysisEnabled
      - type
      type: object
      properties:
        type:
          type: string
          enum:
          - Default
          - LkSG
          - Norwegian Transparancy Act
          - CSDDD (Beta)
          - EU Battery Regulation
          example: null
        hideDetails:
          type: boolean
          example: null
        recommended:
          type: boolean
          example: null
        tierNAnalysisEnabled:
          type: boolean
          example: null
        scoping:
          type: boolean
          example: null
        products:
          type: boolean
          example: null
        component:
          type:
          - string
          - 'null'
          enum:
          - PeerScore
          - AlertScore
          - SSAScore
          - ExternalScore
          - TierNScore
          example: null
        perspectiveId:
          type:
          - integer
          - 'null'
          format: int32
          example: null
        availablePerspectives:
          type: array
          items:
            $ref: '#/components/schemas/PerspectiveDTO'
          example: null
        countryScoreThreshold:
          type:
          - number
          - 'null'
          format: double
          example: null
        industryScoreThreshold:
          type:
          - number
          - 'null'
          format: double
          example: null
        purchaseVolumeThreshold:
          type:
          - number
          - 'null'
          format: double
          example: null
      example: null
    ExposureFilter:
      required:
      - overviewTiers
      - riskTargetIds
      - targetIds
      type: object
      properties:
        overviewTiers:
          type: integer
          format: int32
          example: null
        query:
          type:
          - string
          - 'null'
          example: null
        exposedQuery:
          type:
          - string
          - 'null'
          example: null
        riskTargetIds:
          type: array
          items:
            type: integer
            format: int32
            example: null
          example: null
        targetIds:
          type: array
          items:
            type: integer
            format: int32
            example: null
          example: null
      example: null
    CollectionDTO:
      required:
      - children
      - collectionTreeFilter
      - commodityFilter
      - deliverySettingTypes
      - id
      - isMonitored
      - isParentMonitored
      - lanes
      - level
      - name
      - own
      - path
      - scope
      - tiersEnabled
      - type
      - uuid
      type: object
      properties:
        id:
          type: integer
          format: int32
          example: null
        uuid:
          type: string
          format: uuid
          example: null
        scope:
          type: string
          enum:
          - User
          - Customer
          - Featured
          example: null
        type:
          type: string
          enum:
          - Default
          - Commodity
          - Ariba
          example: null
        collection:
          type:
          - string
          - 'null'
          example: null
        name:
          type: string
          example: null
        user:
          $ref: '#/components/schemas/UserDTO'
        deliverySettingTypes:
          type: array
          items:
            $ref: '#/components/schemas/DeliverySettingTypeDTO'
          example: null
        logo:
          type:
          - string
          - 'null'
          example: null
        count:
          type:
          - integer
          - 'null'
          format: int32
          example: null
        isMonitored:
          type: boolean
          example: null
        isParentMonitored:
          type: boolean
          example: null
        own:
          type: boolean
          example: null
        lanes:
          type: boolean
          example: null
        tiersEnabled:
          type: boolean
          example: null
        tierSettings:
          allOf:
          - $ref: '#/components/schemas/TierSettingsDTO'
          example: null
        collectionTreeFilter:
          type: array
          items:
            type: integer
            format: int32
            example: null
          example: null
        userId:
          type:
          - integer
          - 'null'
          format: int32
          example: null
        customerId:
          type:
          - integer
          - 'null'
          format: int32
          example: null
        organizationId:
          type:
          - integer
          - 'null'
          format: int32
          example: null
        viewedWithRole:
          type:
          - string
          - 'null'
          enum:
          - Manager
          - Editor
          example: null
        parentId:
          type:
          - integer
          - 'null'
          format: int32
          example: null
        children:
          type: array
          items:
            $ref: '#/components/schemas/CollectionDTO'
          example: null
        level:
          type: integer
          format: int32
          example: null
        path:
          type: array
          items:
            $ref: '#/components/schemas/CollectionRef'
          example: null
        commodityFilter:
          type: array
          items:
            $ref: '#/components/schemas/CommodityFilterId'
          example: null
        updatedAt:
          type:
          - string
          - 'null'
          format: date-time
          example: null
        monitored:
          type: boolean
          writeOnly: true
          example: null
        parentMonitored:
          type: boolean
          writeOnly: true
          example: null
      example: null
    CommodityFilter:
      required:
      - commodities
      - logisticsProvider
      - suspectedSuppliers
      type: object
      properties:
        commodities:
          type: array
          items:
            $ref: '#/components/schemas/CommodityFilterId'
          example: null
        suspectedSuppliers:
          type: boolean
          example: null
        logisticsProvider:
          type: boolean
          example: null
      example: null
    TierSettingsDTO:
      required:
      - logisticsProvider
      - maxTier
      - scopePrivate
      - scopePublic
      - scopeShared
      - sourceCustomer
      - sourceCustoms
      - sourceMedia
      - sourcePrewavePrediction
      - suspectedSuppliers
      - tier2MinPrio
      - tier2TargetPrio
      - tier3PlusMinPrio
      - tier3PlusTargetPrio
      type: object
      properties:
        maxTier:
          type: integer
          format: int32
          example: null
        tier2TargetPrio:
          type: string
          enum:
          - Low
          - Mid
          - High
          - Critical
          example: null
        tier3PlusTargetPrio:
          type: string
          enum:
          - Low
          - Mid
          - High
          - Critical
          example: null
        tier2MinPrio:
          type: string
          enum:
          - Low
          - Mid
          - High
          - Critical
          example: null
        tier3PlusMinPrio:
          type: string
          enum:
          - Low
          - Mid
          - High
          - Critical
          example: null
        scopePrivate:
          type: boolean
          example: null
        scopeShared:
          type: boolean
          example: null
        scopePublic:
          type: boolean
          example: null
        sourceCustoms:
          type: boolean
          example: null
        sourcePrewavePrediction:
          type: boolean
          example: null
        sourceMedia:
          type: boolean
          example: null
        sourceCustomer:
          type: boolean
          example: null
        minShipments:
          type:
          - integer
          - 'null'
          format: int32
          example: null
        probability:
          type:
          - integer
          - 'null'
          format: int32
          example: null
        lastShipmentsPeriodFrom:
          type:
          - string
          - 'null'
          format: date
          example: null
        lastShipmentsPeriodTo:
          type:
          - string
          - 'null'
          format: date
          example: null
        suspectedSuppliers:
          type: boolean
          example: null
        logisticsProvider:
          type: boolean
          example: null
      example: null
    RiskAnalysisLock:
      required:
      - locked
      - type
      type: object
      properties:
        type:
          type: string
          enum:
          - Form
          - Suppliers
          - Matrix
          - Actions
          - Scoping
          - Products
          example: null
        locked:
          type: boolean
          example: null
        user:
          $ref: '#/components/schemas/UserDTO'
        lockedAt:
          type:
          - string
          - 'null'
          format: date-time
          example: null
      example: null
    EdgeImpactData:
      required:
      - causalContribution
      - coc
      - daysOnHand
      - deviation
      - edgeId
      - stockAtSupplier
      - stockOnPremise
      - validFrom
      - validTo
      type: object
      properties:
        edgeId:
          type: integer
          format: int32
          example: null
        validFrom:
          type: string
          format: date-time
          example: null
        validTo:
          type: string
          format: date-time
          example: null
        purchase:
          type:
          - number
          - 'null'
          example: null
        actualPurchase:
          type:
          - number
          - 'null'
          example: null
        diForced:
          type:
          - string
          - 'null'
          enum:
          - NA
          - 'No'
          - Low
          - Mid
          - High
          - Critical
          example: null
        di:
          type:
          - number
          - 'null'
          format: double
          example: null
        causalContribution:
          type: boolean
          example: null
        bi12:
          type:
          - number
          - 'null'
          example: null
        coc:
          type: boolean
          example: null
        mttrGrossE:
          type:
          - number
          - 'null'
          format: double
          example: null
        mttrNetE:
          type:
          - number
          - 'null'
          format: double
          example: null
        mttrGrossI:
          type:
          - number
          - 'null'
          format: double
          example: null
        mttrNetI:
          type:
          - number
          - 'null'
          format: double
          example: null
        stockOnPremise:
          type: number
          format: double
          example: null
        stockAtSupplier:
          type: number
          format: double
          example: null
        daysOnHand:
          type: number
          format: double
          example: null
        deviation:
          type: string
          enum:
          - NotApplicable
          - OnTarget
          - Below
          - Above
          example: null
        location:
          type:
          - string
          - 'null'
          enum:
          - SameBuilding
          - DifferentFireSection
          - DifferentBuilding
          - NotApplicable
          example: null
        lastConfirmationDate:
          type:
          - string
          - 'null'
          format: date
          example: null
        birsInfo:
          type:
          - string
          - 'null'
          example: null
        biForced:
          type:
          - string
          - 'null'
          enum:
          - NA
          - 'No'
          - Low
          - Mid
          - High
          - Critical
          example: null
        bi:
          type:
          - number
          - 'null'
          for

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