openapi: 3.0.1
info:
  title: Partner Webhooks
  version: 2.10.0
  description: This document outlines our webhook specification. Each partner integrating with us should be ready to receive messages which correspond to these asynchronous event notifications.
  contact:
    name: Tradevest GmbH
servers:
  - url: http://client-api-address
tags:
  - name: Notifications
    description: Notifications
paths:
  /customer-notification:
    post:
      summary: Customer Notification
      operationId: customer-update
      tags:
        - Notifications
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
      description: Notification about customer changes related to event `CUSTOMER_NOTIFICATION`
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomerNotification'
      x-amazon-apigateway-integration:
        type: mock
    parameters: []
  /natural-person-notification:
    post:
      summary: Natural Person Notification
      operationId: natural-person-update
      tags:
        - Notifications
      responses:
        '200':
          description: OK
      description: Notification about natural person changes related to event `NATURAL_PERSON_NOTIFICATION`
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NaturalPersonNotification'
      x-amazon-apigateway-integration:
        type: mock
    parameters: []
  /joint-person-notification:
    post:
      summary: Joint Person Notification
      operationId: joint-person-update
      tags:
        - Notifications
      responses:
        '200':
          description: OK
      description: Notification about joint person changes related to event `JOINT_PERSON_NOTIFICATION`
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JointPersonNotification'
      x-amazon-apigateway-integration:
        type: mock
    parameters: []
  /legal-entity-notification:
    post:
      summary: Legal Entity Notification
      operationId: legal-entity-update
      tags:
        - Notifications
      responses:
        '200':
          description: OK
      description: Notification about legal entity changes related to event `LEGAL_ENTITY_NOTIFICATION`
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LegalEntityNotification'
      x-amazon-apigateway-integration:
        type: mock
    parameters: []
  /legal-representative-notification:
    post:
      summary: Legal Representative Notification
      operationId: legal-representative-update
      tags:
        - Notifications
      responses:
        '200':
          description: OK
      description: Notification about legal representative changes related to event `LEGAL_REPRESENTATIVE_NOTIFICATION`
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LegalRepresentativeNotification'
      x-amazon-apigateway-integration:
        type: mock
    parameters: []
  /identification-verification-notification:
    post:
      summary: Identification Verification Notification
      operationId: identification-verification-update
      tags:
        - Notifications
      responses:
        '200':
          description: OK
      description: Notification about identification verification changes related to event `IDENTIFICATION_VERIFICATION_NOTIFICATION`
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdentificationVerificationNotification'
      x-amazon-apigateway-integration:
        type: mock
    parameters: []
  /labels-update-notification:
    post:
      summary: Labels Update Notification
      operationId: labels-update
      tags:
        - Notifications
      responses:
        '200':
          description: OK
      description: Notification about labels updates related to event `LABELS_UPDATE_NOTIFICATION`
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LabelsUpdateNotification'
      x-amazon-apigateway-integration:
        type: mock
    parameters: []
  /onboarding-notification:
    post:
      summary: Onboarding Notification
      operationId: onboarding-notification
      tags:
        - Notifications
      responses:
        '200':
          description: OK
          content: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OnboardingNotification'
      description: Notification about onboarding update related to event `ONBOARDING_NOTIFICATION`
  /proxy-notification:
    post:
      summary: Proxy Notification
      operationId: proxy-notification
      tags:
        - Notifications
      responses:
        '200':
          description: OK
          content: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProxyNotification'
      description: Notification about proxy update related to event `PROXY_NOTIFICATION`
  /beneficial-owner-notification:
    post:
      summary: Beneficial Owner Notification
      operationId: beneficial-owner-notification
      tags:
        - Notifications
      responses:
        '200':
          description: OK
          content: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BeneficialOwnerNotification'
      description: Notification about beneficial owner update related to event `BENEFICIAL_OWNER_NOTIFICATION`
  /partner-document-notification:
    post:
      summary: Partner Document Notification
      operationId: partner-document-notification
      tags:
        - Notifications
      responses:
        '200':
          description: OK
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PartnerDocumentNotification'
      description: Notification about partner document update related to event `PARTNER_DOCUMENT_NOTIFICATION`
  /document-notification:
    post:
      summary: Document Notification
      operationId: document-notification
      tags:
        - Notifications
      responses:
        '200':
          description: OK
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DocumentNotification'
      description: Notification about document update related to event `DOCUMENT_NOTIFICATION`
  /customer-product-notification:
    post:
      summary: Customer Product Notification
      operationId: customer-product-notification
      tags:
        - Notifications
      responses:
        '200':
          description: OK
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomerProductNotification'
      description: Notifications about customer product update related to event `CUSTOMER_PRODUCT_NOTIFICATION`
  /legal-entity-search-notification:
    post:
      summary: Legal Entity Search Notification
      operationId: legal-entity-search-notification
      tags:
        - Notifications
      responses:
        '200':
          description: OK
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LegalEntitySearchNotification'
      description: Notification about legal entity search changes related to event `LEGAL_ENTITY_SEARCH_NOTIFICATION`
  /strategy-notification:
    post:
      summary: Strategy Notification
      operationId: strategy-notification
      tags:
        - Notifications
      responses:
        '200':
          description: OK
          content: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StrategyNotification'
      description: Notification about strategy update related to event `STRATEGY_NOTIFICATION`
  /transfer-notification:
    post:
      summary: Transfer Notification
      operationId: transfer-notification
      tags:
        - Notifications
      responses:
        '200':
          description: OK
          content: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransferNotification'
      description: Notification about transfer update related to event `TRANSFER_NOTIFICATION`
  /digital-asset-order-notification:
    post:
      summary: Digital Asset Order Notification
      operationId: digital-asset-order-notification
      tags:
        - Notifications
      responses:
        '200':
          description: OK
          content: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DigitalAssetOrderNotification'
      description: Notification about digital asset order update related to event `DIGITAL_ASSET_ORDER_NOTIFICATION`
  /traditional-asset-order-notification:
    post:
      summary: Traditional Asset Order Notification
      operationId: traditional-asset-order-notification
      tags:
        - Notifications
      responses:
        '200':
          description: OK
          content: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TraditionalAssetOrderNotification'
      description: |
        Notification about traditional asset order update related to event `TRADITIONAL_ASSET_ORDER_NOTIFICATION`.
        Position sells created through `POST /traditional/orders/sell-all` or
        `POST /traditional/orders/fractional-sell` are never delivered on this event, because
        `executionData.quantity` may then carry a fractional remainder. Subscribe to
        `TRADITIONAL_ASSET_ORDER_NOTIFICATION_V2` to receive them.
  /v2/traditional-asset-order-notification:
    post:
      summary: Traditional Asset Order Notification V2
      operationId: traditional-asset-order-notification-v2
      tags:
        - Notifications
      responses:
        '200':
          description: OK
          content: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TraditionalAssetOrderNotificationV2'
      description: |
        Notification about traditional asset order update related to event
        `TRADITIONAL_ASSET_ORDER_NOTIFICATION_V2`.
        Same payload shape as `TRADITIONAL_ASSET_ORDER_NOTIFICATION`, and covers the same order
        lifecycle, but additionally delivers position sells created through
        `POST /traditional/orders/sell-all` and `POST /traditional/orders/fractional-sell`, whose
        `executionData.quantity` may carry a fractional remainder.
        Replace the v1 subscription rather than holding both: a partner subscribed to both event
        types receives every whole-share order twice.
  /tokenized-asset-order-notification:
    post:
      summary: Tokenized Asset Order Notification
      operationId: tokenized-asset-order-notification
      tags:
        - Notifications
      responses:
        '200':
          description: OK
          content: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TokenizedAssetOrderNotification'
      description: |
        Notification about tokenized asset order update related to event `TOKENIZED_ASSET_ORDER_NOTIFICATION`.
        Tokenized orders are KapESt-relevant securities; the payload mirrors the Traditional schema (tax block, `exAnteId`, `executionId`)
        but exposes both `walletCustomerProductId` and `cashCustomerProductId` because a wawex order spans two customer products.
        Mint/burn settlement steps are internal and never surfaced; partners only see the business-level order status.
        Tax fields are populated only after the tax engine has processed the trade (`FILLED` and terminal partials);
        intermediate `PARTIALLY_FILLED` slices carry execution data but no tax block.
  /wawex-ex-ante-document-ready-notification:
    post:
      summary: Wawex Ex-Ante Document Ready Notification
      operationId: wawex-ex-ante-document-ready-notification
      tags:
        - Notifications
      responses:
        '200':
          description: OK
          content: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WawexExAnteDocumentReadyNotification'
      description: |
        Notification related to event `WAWEX_EX_ANTE_DOCUMENT_READY_NOTIFICATION`, sent once the wawex ex-ante cost-information PDF
        has been generated and stored. Download the document at `GET /wawex/ex-ante/{exAnteId}/receipt`. This fires
        after the order `RECEIVED` notification (which only carries `exAnteId`), so partners should wait for it before
        fetching the receipt rather than polling.
  /user-notification:
    post:
      summary: User Notification
      operationId: user-notification
      tags:
        - Notifications
      responses:
        '200':
          description: OK
          content: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserNotification'
      description: Notification related to event `USER_NOTIFICATION`
  /re-token-prices:
    post:
      summary: Real estate token prices Notification
      operationId: re-token-prices-notification
      tags:
        - Notifications
      responses:
        '200':
          description: OK
          content: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RealEstateTokenPricesNotification'
      description: Notification related to event `RE_TOKEN_PRICES`
  /offboarding-notification:
    post:
      summary: Offboarding Notification
      operationId: offboarding-notification
      tags:
        - Notifications
      responses:
        '200':
          description: OK
          content: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OffboardingNotification'
      description: Notification about offboarding update related to event `OFFBOARDING_NOTIFICATION`
  /tax-exemption-order-notification:
    post:
      summary: Tax Exemption Order Notification
      operationId: tax-exemption-order-notification
      tags:
        - Notifications
      responses:
        '200':
          description: OK
          content: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TaxExemptionOrderNotification'
      description: Notification about tax exemption order update related to event `TAX_EXEMPTION_ORDER_NOTIFICATION`
  /savings-plans-notification:
    post:
      summary: Savings Plans Notification
      operationId: savings-plans-notification
      tags:
        - Notifications
      responses:
        '200':
          description: OK
          content: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SavingsPlansNotification'
      description: Notification about savings plans update related to event `SAVINGS_PLANS_NOTIFICATION`
  /savings-plans-order-notification:
    post:
      summary: Savings Plans Order Notification
      operationId: savings-plans-order-notification
      tags:
        - Notifications
      responses:
        '200':
          description: OK
          content: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SavingsPlansOrderNotification'
      description: Notification about a savings plan order (BUY execution or SELL exit) status change, related to event `SAVINGS_PLANS_ORDER_NOTIFICATION`. Fires on every status transition. For SELL exits, tax fields are populated on a later UPDATED notification once computed.
  /corporate-action-notification:
    post:
      summary: Corporate Action Notification
      operationId: corporate-action-notification
      tags:
        - Notifications
      responses:
        '200':
          description: OK
          content: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CorporateActionNotification'
      description: The endpoint is currently under development, and the structure may still change. Notification about corporate action update related to event `CORPORATE_ACTION_NOTIFICATION`
  /tokenized-corporate-action-notification:
    post:
      summary: Tokenized Corporate Action Notification
      operationId: tokenized-corporate-action-notification
      tags:
        - Notifications
      responses:
        '200':
          description: OK
          content: {}
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TokenizedCorporateActionNotification'
      description: Notification about a tokenized (Wawex) corporate action, related to event `TOKENIZED_CORPORATE_ACTION_NOTIFICATION`. Distinct from the traditional `CORPORATE_ACTION_NOTIFICATION`. Carries exactly one partner's customer rows; a projection is non-binding (`binding=false`) and carries an `asOfDate`, the record-date entitlement snapshot is binding (`binding=true`).
components:
  schemas:
    NaturalPersonNotification:
      title: NaturalPersonNotification
      type: object
      properties:
        naturalPersonId:
          type: string
          format: uuid
        modifiedOn:
          type: string
          format: date-time
        status:
          $ref: '#/components/schemas/NaturalPersonStatusEnum'
        notificationType:
          $ref: '#/components/schemas/NotificationTypeEnum'
        validationError:
          $ref: '#/components/schemas/EntityValidationError'
      required:
        - naturalPersonId
        - notificationType
    JointPersonNotification:
      title: JointPersonNotification
      type: object
      properties:
        jointPersonId:
          type: string
          format: uuid
        modifiedOn:
          type: string
          format: date-time
        status:
          $ref: '#/components/schemas/JointPersonStatusEnum'
        notificationType:
          $ref: '#/components/schemas/NotificationTypeEnum'
        validationError:
          $ref: '#/components/schemas/EntityValidationError'
      required:
        - jointPersonId
        - notificationType
    LegalEntityNotification:
      title: LegalEntityNotification
      type: object
      properties:
        legalEntityId:
          type: string
          format: uuid
        modifiedOn:
          type: string
          format: date-time
        status:
          $ref: '#/components/schemas/LegalEntityStatusEnum'
        notificationType:
          $ref: '#/components/schemas/NotificationTypeEnum'
        validationError:
          $ref: '#/components/schemas/EntityValidationError'
      required:
        - legalEntityId
        - notificationType
    LegalRepresentativeNotification:
      title: LegalRepresentativeNotification
      type: object
      properties:
        legalRepresentativeId:
          type: string
          format: uuid
        modifiedOn:
          type: string
          format: date-time
        status:
          $ref: '#/components/schemas/LegalRepresentativeStatusEnum'
        notificationType:
          $ref: '#/components/schemas/NotificationTypeEnum'
        validationError:
          $ref: '#/components/schemas/EntityValidationError'
      required:
        - legalRepresentativeId
        - notificationType
    CustomerNotification:
      title: CustomerNotification
      type: object
      properties:
        customerId:
          type: string
          format: uuid
        modifiedOn:
          type: string
          format: date-time
        status:
          $ref: '#/components/schemas/CustomerStatusEnum'
        notificationType:
          $ref: '#/components/schemas/NotificationTypeEnum'
        validationError:
          $ref: '#/components/schemas/RoleValidationError'
      required:
        - customerId
        - notificationType
    IdentificationVerificationNotification:
      title: IdentificationVerificationNotification
      type: object
      properties:
        identificationVerificationId:
          type: string
          format: uuid
        naturalPersonId:
          type: string
          format: uuid
        modifiedOn:
          type: string
          format: date-time
        status:
          $ref: '#/components/schemas/IdentificationVerificationStatusEnum'
        notificationType:
          $ref: '#/components/schemas/NotificationTypeEnum'
        validationError:
          $ref: '#/components/schemas/EntityValidationError'
      required:
        - identificationVerificationId
        - naturalPersonId
        - modifiedOn
        - status
        - notificationType
    LabelsUpdateNotification:
      title: LabelsUpdateNotification
      type: object
      properties:
        updatedCustomers:
          type: array
          items:
            type: string
            format: uuid
        notificationType:
          $ref: '#/components/schemas/NotificationTypeEnum'
        validationError:
          $ref: '#/components/schemas/LabelsUpdateValidationError'
      required:
        - modifiedOn
        - notificationType
    OnboardingNotification:
      title: OnboardingNotification
      type: object
      properties:
        onboardingId:
          type: string
          format: uuid
        modifiedOn:
          type: string
          format: date-time
        status:
          $ref: '#/components/schemas/OnboardingStatusEnum'
        notificationType:
          $ref: '#/components/schemas/OnboardingNotificationTypeEnum'
        validationErrors:
          type: array
          items:
            $ref: '#/components/schemas/OnboardingValidationError'
      required:
        - onboardingId
        - modifiedOn
        - status
        - notificationType
    OffboardingNotification:
      title: OffboardingNotification
      type: object
      properties:
        offboardingId:
          type: string
          format: uuid
        modifiedOn:
          type: string
          format: date-time
        status:
          $ref: '#/components/schemas/OffboardingStatusEnum'
        notificationType:
          $ref: '#/components/schemas/OffboardingNotificationTypeEnum'
        validationError:
          $ref: '#/components/schemas/OffboardingValidationError'
      required:
        - offboardingId
        - modifiedOn
        - status
        - notificationType
    ProxyNotification:
      title: ProxyNotification
      type: object
      properties:
        proxyId:
          type: string
          format: uuid
        modifiedOn:
          type: string
          format: date-time
        status:
          $ref: '#/components/schemas/ProxyStatusEnum'
        notificationType:
          $ref: '#/components/schemas/NotificationTypeEnum'
        validationError:
          $ref: '#/components/schemas/RoleValidationError'
      required:
        - proxyId
        - notificationType
    BeneficialOwnerNotification:
      title: BeneficialOwnerNotification
      type: object
      properties:
        beneficialOwnerId:
          type: string
          format: uuid
        modifiedOn:
          type: string
          format: date-time
        status:
          $ref: '#/components/schemas/BeneficialOwnerStatusEnum'
        notificationType:
          $ref: '#/components/schemas/NotificationTypeEnum'
        validationError:
          $ref: '#/components/schemas/EntityValidationError'
      required:
        - beneficialOwnerId
        - notificationType
    PartnerDocumentNotification:
      title: PartnerDocumentNotification
      type: object
      properties:
        documentId:
          type: string
          format: uuid
        modifiedOn:
          type: string
          format: date-time
      required:
        - documentId
        - modifiedOn
    DocumentNotification:
      title: DocumentNotification
      type: object
      properties:
        documentId:
          type: string
          format: uuid
        modifiedOn:
          type: string
          format: date-time
        status:
          $ref: '#/components/schemas/DocumentStatusEnum'
        notificationType:
          $ref: '#/components/schemas/NotificationTypeEnum'
        validationError:
          $ref: '#/components/schemas/DocumentValidationError'
      required:
        - documentId
        - modifiedOn
        - status
        - notificationType
    StrategyNotification:
      title: StrategyNotification
      type: object
      properties:
        strategyId:
          type: string
          format: uuid
        subscriberId:
          type: string
          format: uuid
        modifiedOn:
          type: string
          format: date-time
        status:
          $ref: '#/components/schemas/StrategyStatusEnum'
        notificationType:
          $ref: '#/components/schemas/NotificationTypeEnum'
        validationError:
          $ref: '#/components/schemas/StrategyValidationError'
      required:
        - strategyId
        - notificationType
    TransferNotification:
      title: TransferNotification
      type: object
      properties:
        customerId:
          type: string
          format: uuid
        customerProductId:
          type: string
          format: uuid
        transferId:
          type: string
          format: uuid
        modifiedOn:
          type: string
          format: date-time
        status:
          $ref: '#/components/schemas/TransferStatusEnum'
        notificationType:
          $ref: '#/components/schemas/NotificationTypeEnum'
        validationError:
          $ref: '#/components/schemas/TransferValidationError'
      required:
        - customerId
        - customerProductId
        - transferId
        - notificationType
    CustomerProductNotification:
      title: CustomerProductNotification
      type: object
      properties:
        customerId:
          type: string
          format: uuid
        customerProductId:
          type: string
          format: uuid
        modifiedOn:
          type: string
          format: date-time
        status:
          $ref: '#/components/schemas/CustomerProductStatusEnum'
        notificationType:
          $ref: '#/components/schemas/NotificationTypeEnum'
        validationError:
          $ref: '#/components/schemas/CustomerProductValidationError'
      required:
        - customerId
        - customerProductId
        - notificationType
    LegalEntitySearchNotification:
      title: LegalEntitySearchNotification
      type: object
      properties:
        searchId:
          type: string
          format: uuid
        modifiedOn:
          type: string
          format: date-time
        status:
          $ref: '#/components/schemas/LegalEntitySearchStatusEnum'
      required:
        - searchId
        - modifiedOn
        - status
    TaxExemptionOrderNotification:
      title: TaxExemptionOrderNotification
      type: object
      properties:
        taxExemptionOrderId:
          type: string
          format: uuid
        modifiedOn:
          type: string
          format: date-time
        status:
          $ref: '#/components/schemas/TaxExemptionOrderStatusEnum'
        notificationType:
          $ref: '#/components/schemas/NotificationTypeEnum'
        validationError:
          $ref: '#/components/schemas/TaxValidationError'
      required:
        - taxExemptionOrderId
        - notificationType
    NotificationTypeEnum:
      title: NotificationTypeEnum
      type: string
      enum:
        - CREATED
        - UPDATED
        - DELETED
        - VALIDATION_ERROR
    OnboardingNotificationTypeEnum:
      title: NotificationTypeEnum
      type: string
      enum:
        - STARTED
        - REJECTED
        - INVALID
        - PENDING
        - APPROVED
    CustomerStatusEnum:
      title: CustomerStatusEnum
      type: string
      enum:
        - CREATED
        - REVIEW
        - REJECTED
        - INACTIVE
        - ACTIVE
        - SUSPENDED
        - ARCHIVED
        - RECEIVED
        - INVALID
        - PENDING
        - SUSPENDED_COMPLIANCE
        - ESTATE
        - OFFBOARDING
    IdentificationVerificationStatusEnum:
      title: IdentificationVerificationStatusEnum
      type: string
      enum:
        - RECEIVED
        - INVALID
        - PENDING
        - APPROVED
        - REJECTED
        - EXPIRED
    EntityValidationError:
      title: EntityValidationError
      type: object
      properties:
        errorType:
          $ref: '#/components/schemas/EntityValidationErrorEnum'
        description:
          type: string
      required:
        - errorType
        - description
    RoleValidationError:
      title: RoleValidationError
      type: object
      properties:
        errorType:
          $ref: '#/components/schemas/RoleValidationErrorEnum'
        description:
          type: string
      required:
        - errorType
        - description
    TaxValidationError:
      title: TaxValidationError
      type: object
      properties:
        errorType:
          $ref: '#/components/schemas/TaxValidationErrorEnum'
        description:
          type: string
      required:
        - errorType
        - description
    LabelsUpdateValidationError:
      title: LabelsUpdateValidationError
      type: object
      properties:
        errorType:
          $ref: '#/components/schemas/LabelsUpdateValidationErrorEnum'
        description:
          type: string
      required:
        - errorType
        - description
    LabelsUpdateValidationErrorEnum:
      title: LabelsUpdateValidationErrorEnum
      type: string
      enum:
        - CUSTOMERS_NOT_FOUND_ERROR
        - CUSTOMERS_EXCEEDED_LIMIT_OF_LABELS_ERROR
        - LABEL_NOT_FOUND_ERROR
        - UNKNOWN_ERROR
    CustomerProductStatusEnum:
      title: CustomerProductStatusEnum
      type: string
      enum:
        - PENDING
        - ACTIVE
        - BLOCKED
        - RESTRICTED
        - INACTIVE
        - CLOSED
        - INVALID
        - REJECTED
    CustomerProductValidationError:
      title: CustomerProductValidationError
      type: object
      properties:
        errorType:
          $ref: '#/components/schemas/CustomerProductValidationErrorEnum'
        description:
          type: string
      required:
        - errorType
        - description
    CustomerProductValidationErrorEnum:
      title: CustomerProductValidationErrorEnum
      type: string
      enum:
        - PRODUCT_NOT_ACTIVE
        - CUSTOMER_NOT_FOUND
        - ACTIVE_CUSTOMER_REQUIRED
        - CUSTOMER_PRODUCT_PER_CUSTOMER_LIMIT_REACHED
        - CUSTOMER_PRODUCT_QUANTITY_AND_BALANCE_MUST_BE_ZERO
        - CUSTOMER_PRODUCT_NOT_FOUND
        - NOT_SETTLED_TRANSACTIONS_EXIST
        - REQUESTOR_ID_NOT_VALID
        - REQUIRED_DOCUMENT_MISSING
    DocumentStatusEnum:
      title: DocumentStatusEnum
      type: string
      enum:
        - RECEIVED
        - INVALID
        - CREATED
        - PENDING
        - APPROVED
        - REJECTED
        - ARCHIVED
        - DELETED
    DocumentValidationError:
      title: DocumentValidationError
      type: object
      properties:
        errorType:
          $ref: '#/components/schemas/DocumentValidationErrorEnum'
        description:
          type: string
      required:
        - errorType
        - description
    DocumentValidationErrorEnum:
      title: DocumentValidationErrorEnum
      type: string
      enum:
        - UNKNOWN_ERROR
        - DATA_NOT_FOUND_ERROR
        - INVALID_DATA_ERROR
    OnboardingStatusEnum:
      title: OnboardingStatusEnum
      type: string
      enum:
        - CREATED
        - PENDING
        - APPROVED
        - REJECTED
        - RECEIVED
        - INVALID
    OnboardingValidationError:
      title: OnboardingValidationError
      type: object
      properties:
        errorType:
          $ref: '#/components/schemas/OnboardingValidationErrorEnum'
        description:
          type: string
      required:
        - errorType
        - description
    OnboardingValidationErrorEnum:
      title: OnboardingValidationErrorEnum
      type: string
      enum:
        - CUSTOMER_STATUS_VERIFICATION
        - NATURAL_PERSON_STATUS_VERIFICATION
        - CUSTOMER_TYPE_VERIFICATION
        - DEATH_DAY_VERIFICATION
        - CONTACT_DATA_VERIFICATION
        - ADDRESS_VERIFICATION
        - CITIZENSHIP_VERIFICATION
        - VERIFIED_NATURAL_PERSON_VERIFICATION
        - DOCUMENT_VERIFICATION
        - DOCUMENT_SIGNATURES_VERIFICATION
        - CHILD_VERIFICATION
        - REFERENCE_ACCOUNTS_VERIFICATION
        - NACE_SECTORS_VERIFICATION
        - LEGAL_REPRESENTATIVES_VERIFICATION
        - BENEFICIAL_OWNERS_VERIFICATION
        - PROXIES_VERIFICATION
        - REFERENCE_ACCOUNTS_IBAN_VERIFICATION
        - LEGAL_ENTITY_VENDOR_VERIFICATION
        - JOINT_PERSON_THE_SAME_NATURAL_PERSON_IDS_VERIFICATION
        - JOINT_PERSON_ALREADY_EXISTS_VERIFICATION
        - JOINT_PERSON_NATURAL_PERSON_STATUS_VERIFICATION
        - TAX_INFORMATION_VERIFICATION
    LegalEntitySearchStatusEnum:
      title: LegalEntitySearchStatusEnum
      type: string
      enum:
        - WAITING_FOR_DATA
        - WAITING_FOR_DOCUMENTS
        - READY_DATA
        - READY_DOCUMENTS
        - PREPARING
        - COMPLETED
        - FAILED
        - ERROR
      description: status of the search
    ProxyStatusEnum:
      title: ProxyStatusEnum
      type: string
      enum:
        - CREATED
        - REVIEW
        - REJECTED
        - ACTIVE
        - INACTIVE
        - RECEIVED
        - INVALID
        - PENDING
        - SUSPENDED
        - SUSPENDED_COMPLIANCE
    BeneficialOwnerStatusEnum:
      title: BeneficialOwnerStatusEnum
      type: string
      enum:
        - CREATED
        - ACTIVE
        - INACTIVE
        - RECEIVED
        - INVALID
        - REJECTED
        - REVIEW
        - PENDING
        - SUSPENDED_COMPLIANCE
    StrategyStatusEnum:
      title: StrategyStatusEnum
      type: string
      enum:
        - EXECUTING
        - PENDING
        - EXPIRED
        - RECEIVED
        - INVALID
        - DELETED
        - REJECTED
    TransferStatusEnum:
      title: TransferStatusEnum
      type: string
      enum:
        - RECEIVED
        - INVALID
        - PENDING
        - REJECTED
        - PROCESSED
        - RECONCILED
    StrategyValidationError:
      title: StrategyValidationError
      type: object
      properties:
        errorType:
          $ref: '#/components/schemas/StrategyValidationErrorEnum'
        description:
          type: string
      required:
        - errorType
        - description
    StrategyValidationErrorEnum:
      title: StrategyValidationErrorEnum
      type: string
      enum:
        - ALREADY_EXISTS_ERROR
        - DATA_NOT_FOUND_ERROR
        - SUBSCRIBER_INVALID_DATA_ERROR
        - STRATEGY_INVALID_DATA_ERROR
        - UNKNOWN_ERROR
    TransferValidationError:
      title: TransferValidationError
      type: object
      properties:
        errorType:
          $ref: '#/components/schemas/TransferValidationErrorEnum'
        description:
          type: string
      required:
        - errorType
        - description
    TransferValidationErrorEnum:
      title: TransferValidationErrorEnum
      type: string
      enum:
        - INSUFFICIENT_BALANCE
        - INVALID_IBAN
        - IBAN_BIC_MISMATCH
        - ACTIVE_PRODUCT_REQUIRED
        - PRODUCT_NOT_FOUND
        - ACTIVE_CUSTOMER_REQUIRED
        - CUSTOMER_NOT_FOUND
        - DATA_NOT_FOUND_ERROR
        - INAPPROPRIATE_DATA_STATUS_ERROR
        - REF_ACCOUNT_OR_ACCOUNT_PRODUCT_IBAN_REQUIRED
        - ACCOUNT_PRODUCT_REQUIRED
        - INSUFFICIENT_WITHDRAWABLE_BALANCE
        - RECEIVER_IBAN_SAME_AS_PRODUCT_IBAN
        - REQUESTOR_ID_NOT_VALID
    DigitalAssetOrderError:
      title: DigitalAssetOrderError
      type: object
      properties:
        errorType:
          $ref: '#/components/schemas/DigitalAssetOrderErrorEnum'
        description:
          type: string
      required:
        - errorType
        - description
    DigitalAssetOrderStatusEnum:
      title: DigitalAssetOrderStatusEnum
      type: string
      enum:
        - RECEIVED
        - INVALID
        - PENDING
        - CANCELED
        - REJECTED
        - FILLED
        - CORRECTED
        - SETTLED
    DigitalAssetsOrderExecutionData:
      title: DigitalAssetsOrderExecutionData
      type: object
      properties:
        quantity:
          type: number
        executionPrice:
          type: number
        executionAmount:
          type: number
        feeDescription:
          type: string
        feeAmount:
          type: number
      required:
        - quantity
        - executionPrice
        - executionAmount
    DigitalAssetOrderNotification:
      title: DigitalAssetOrderNotification
      type: object
      properties:
        orderId:
          type: string
          format: uuid
        customerProductId:
          type: string
          format: uuid
        externalId:
          type: string
        status:
          $ref: '#/components/schemas/DigitalAssetOrderStatusEnum'
        notificationType:
          $ref: '#/components/schemas/NotificationTypeEnum'
        validationError:
          $ref: '#/components/schemas/DigitalAssetOrderError'
        executionData:
          $ref: '#/components/schemas/DigitalAssetsOrderExecutionData'
      required:
        - orderId
        - customerProductId
        - status
        - notificationType
        - externalId
    TraditionalAssetOrderError:
      title: TraditionalAssetOrderError
      type: object
      properties:
        errorType:
          $ref: '#/components/schemas/TraditionalAssetOrderNotificationErrorCodeEnum'
        description:
          type: string
      required:
        - errorType
        - description
    TraditionalAssetOrderExecutionData:
      title: TraditionalAssetOrderExecutionData
      type: object
      properties:
        quantity:
          type: number
        executionPrice:
          type: number
        executionAmount:
          type: number
        germanCit:
          type: number
          format: decimal
          description: Total sum of german capital income tax amount of the total execution
        solidaritySurcharge:
          type: number
          format: decimal
          description: Total sum of german solidarity surcharge tax amount of the total execution
        churchTax:
          type: number
          format: decimal
          description: Total sum of german church tax amount of the total execution
        feeAmount:
          type: number
          multipleOf: 0.01
          example: 1.01
        feeDescription:
          type: string
      required:
        - quantity
        - executionPrice
        - executionAmount
        - germanCit
        - solidaritySurcharge
        - churchTax
    TraditionalAssetOrderNotification:
      title: TraditionalAssetOrderNotification
      type: object
      properties:
        orderId:
          type: string
          format: uuid
        customerProductId:
          type: string
          format: uuid
        externalId:
          type: string
        exAnteId:
          type: string
          format: uuid
          description: The ex ante id is returned for RECEIVED orders
        executionId:
          type: string
          format: uuid
          description: The trade execution id is returned for FILLED and PARTIALLY_FILLED orders
        status:
          $ref: '#/components/schemas/TraditionalAssetOrderStatusEnum'
        notificationType:
          $ref: '#/components/schemas/NotificationTypeEnum'
        validationError:
          $ref: '#/components/schemas/TraditionalAssetOrderError'
        executionData:
          $ref: '#/components/schemas/TraditionalAssetOrderExecutionData'
      required:
        - orderId
        - customerProductId
        - status
        - notificationType
        - externalId
    TraditionalAssetOrderNotificationV2:
      title: TraditionalAssetOrderNotificationV2
      description: |-
        Same shape as `TraditionalAssetOrderNotification`. Delivered on
        `TRADITIONAL_ASSET_ORDER_NOTIFICATION_V2`, which additionally covers position sells, so
        `executionData.quantity` may carry a fractional remainder.
      type: object
      properties:
        orderId:
          type: string
          format: uuid
        customerProductId:
          type: string
          format: uuid
        externalId:
          type: string
        exAnteId:
          type: string
          format: uuid
          description: The ex ante id is returned for RECEIVED orders
        executionId:
          type: string
          format: uuid
          description: The trade execution id is returned for FILLED and PARTIALLY_FILLED orders
        status:
          $ref: '#/components/schemas/TraditionalAssetOrderStatusEnum'
        notificationType:
          $ref: '#/components/schemas/NotificationTypeEnum'
        validationError:
          $ref: '#/components/schemas/TraditionalAssetOrderError'
        executionData:
          $ref: '#/components/schemas/TraditionalAssetOrderExecutionData'
      required:
        - orderId
        - customerProductId
        - status
        - notificationType
        - externalId
    TokenizedAssetOrderError:
      title: TokenizedAssetOrderError
      type: object
      properties:
        errorType:
          $ref: '#/components/schemas/TokenizedAssetOrderNotificationErrorCodeEnum'
        description:
          type: string
      required:
        - errorType
        - description
    TokenizedAssetOrderExecutionData:
      title: TokenizedAssetOrderExecutionData
      type: object
      properties:
        quantity:
          type: number
        executionPrice:
          type: number
        executionAmount:
          type: number
        germanCit:
          type: number
          format: decimal
          description: Total sum of german capital income tax amount of the total execution
        solidaritySurcharge:
          type: number
          format: decimal
          description: Total sum of german solidarity surcharge tax amount of the total execution
        churchTax:
          type: number
          format: decimal
          description: Total sum of german church tax amount of the total execution
        feeAmount:
          type: number
          multipleOf: 0.01
          example: 1.01
        feeDescription:
          type: string
      required:
        - quantity
        - executionPrice
        - executionAmount
        - germanCit
        - solidaritySurcharge
        - churchTax
    TokenizedAssetOrderNotification:
      title: TokenizedAssetOrderNotification
      type: object
      properties:
        orderId:
          type: string
          format: uuid
        walletCustomerProductId:
          type: string
          format: uuid
          description: Customer product that owns the tokenized position (wallet leg).
        cashCustomerProductId:
          type: string
          format: uuid
          description: Customer product that funds the cash leg of the order.
        externalId:
          type: string
        exAnteId:
          type: string
          format: uuid
          description: The ex ante id is returned for RECEIVED orders
        executionId:
          type: string
          format: uuid
          description: The trade execution id is returned for FILLED and PARTIALLY_FILLED orders
        status:
          $ref: '#/components/schemas/TokenizedAssetOrderStatusEnum'
        notificationType:
          $ref: '#/components/schemas/NotificationTypeEnum'
        validationError:
          $ref: '#/components/schemas/TokenizedAssetOrderError'
        executionData:
          $ref: '#/components/schemas/TokenizedAssetOrderExecutionData'
      required:
        - orderId
        - walletCustomerProductId
        - cashCustomerProductId
        - status
        - notificationType
        - externalId
    WawexExAnteDocumentReadyNotification:
      title: WawexExAnteDocumentReadyNotification
      type: object
      properties:
        exAnteId:
          type: string
          format: uuid
          description: Correlation id; download the PDF at `GET /wawex/ex-ante/{exAnteId}/receipt`.
        symbol:
          type: string
        tradeSide:
          $ref: '#/components/schemas/TradeSideEnum'
      required:
        - exAnteId
        - symbol
        - tradeSide
    UserStatusEnum:
      title: UserStatusEnum
      type: string
      enum:
        - RECEIVED
        - INVALID
        - CREATED
        - ACTIVE
        - REJECTED
        - INACTIVE
        - SUSPENDED
    UserNotification:
      title: UserNotification
      type: object
      properties:
        userId:
          type: string
        modifiedOn:
          type: string
          format: date-time
        status:
          $ref: '#/components/schemas/UserStatusEnum'
        notificationType:
          $ref: '#/components/schemas/NotificationTypeEnum'
        validationError:
          $ref: '#/components/schemas/EntityValidationError'
      required:
        - userId
        - notificationType
    RealEstateTokenPricesNotification:
      type: object
      properties:
        regularToken:
          type: number
          format: currency
          minimum: 0
          exclusiveMinimum: true
        premiumToken:
          type: number
          format: currency
          minimum: 0
          exclusiveMinimum: true
      required:
        - regularToken
        - premiumToken
    OffboardingNotificationTypeEnum:
      title: OffboardingNotificationTypeEnum
      type: string
      enum:
        - STARTED
        - PENDING
        - APPROVED
        - CANCELED
        - VALIDATION_ERROR
    OffboardingStatusEnum:
      title: OffboardingStatusEnum
      type: string
      enum:
        - CREATED
        - PENDING
        - APPROVED
        - REJECTED
        - CANCELED
        - INVALID
    OffboardingValidationError:
      title: OffboardingValidationError
      type: object
      properties:
        errorType:
          $ref: '#/components/schemas/OffboardingValidationErrorEnum'
        description:
          type: string
      required:
        - errorType
        - description
    OffboardingValidationErrorEnum:
      title: OffboardingValidationErrorEnum
      type: string
      enum:
        - ALREADY_EXISTS_ERROR
        - DATA_NOT_FOUND_ERROR
        - INVALID_DATA_ERROR
        - UNKNOWN_ERROR
    CorporateActionNotification:
      title: CorporateActionNotification
      type: object
      properties:
        type:
          $ref: '#/components/schemas/CorporateActionNotificationTypeEnum'
        eventId:
          type: string
          format: uuid
        caev:
          $ref: '#/components/schemas/CorporateActionEventTypeEnum'
        isin:
          type: string
        status:
          $ref: '#/components/schemas/CorporateActionEventStatusEnum'
        dates:
          $ref: '#/components/schemas/CorporateActionDates'
        details:
          $ref: '#/components/schemas/CorporateActionDetails'
        accounts:
          type: array
          items:
            $ref: '#/components/schemas/CorporateActionAccount'
        metadata:
          $ref: '#/components/schemas/CorporateActionMetadata'
        validationError:
          $ref: '#/components/schemas/CorporateActionError'
        corporateActionReference:
          type: string
          description: Reference number linking related MT564 (announcement) and MT566 (settlement) events for the same corporate action
      required:
        - type
        - eventId
        - caev
        - isin
        - status
        - metadata
    CorporateActionDates:
      title: CorporateActionDates
      type: object
      properties:
        exDate:
          type: string
          format: date
        payDate:
          type: string
          format: date
        effectiveDate:
          type: string
          format: date
    CorporateActionDetails:
      title: CorporateActionDetails
      type: object
      properties:
        ratioFrom:
          type: number
          format: decimal
          description: Ratio From for SPLF/BONU corporate actions.
        grossAmountPerShare:
          type: number
        ratioTo:
          type: number
          format: decimal
          description: Ratio To for SPLF/BONU corporate actions.
    CorporateActionAccount:
      title: CorporateActionAccount
      type: object
      properties:
        customerProductId:
          type: string
          format: uuid
        documentId:
          type: string
          format: uuid
        eligibleQuantity:
          type: number
        oldQuantity:
          type: number
        newQuantity:
          type: number
        ratioFrom:
          type: number
        ratioTo:
          type: number
        grossAmount:
          type: number
        netAmount:
          type: number
        cashInLieuAmount:
          type: number
          format: decimal
          description: Cash paid for fractions in ratio-based Corporate Actions
        cashInLieuPrice:
          type: number
          format: decimal
          description: Price of fractional shares in ratio-based Corporate Actions
        fractionalSharesQuantity:
          type: number
          format: decimal
          description: Fractional shares customer eligible to in ratio-based Corporate Actions
        submittedTenderedQuantity:
          type: number
        submittedCorporateActionOption:
          $ref: '#/components/schemas/CorporateActionTenderOptionEnum'
        currency:
          $ref: '#/components/schemas/CurrencyEnum'
    CorporateActionMetadata:
      title: CorporateActionMetadata
      type: object
      properties:
        summary:
          type: string
      required:
        - summary
    CorporateActionError:
      title: CorporateActionError
      type: object
      properties:
        errorType:
          $ref: '#/components/schemas/CorporateActionNotificationErrorCodeEnum'
        description:
          type: string
      required:
        - errorType
        - description
    CorporateActionNotificationTypeEnum:
      title: CorporateActionNotificationTypeEnum
      type: string
      description: Corporate action notification type
      enum:
        - CREATED
        - UPDATED
        - VALIDATION_ERROR
        - CASH_IN_LIEU
    CorporateActionEventTypeEnum:
      title: CorporateActionEventTypeEnum
      type: string
      description: Corporate action event type
      enum:
        - DVCA
        - INTR
        - REDM
        - BONU
        - SPLF
        - TEND
        - CHDV
        - EXRI
        - MEET
        - DVOP
        - LIQU
        - DVSE
        - SPLR
    CorporateActionEventStatusEnum:
      title: CorporateActionEventStatusEnum
      type: string
      description: Corporate action event status
      enum:
        - ANNOUNCED
        - PENDING
        - SETTLED
        - REJECTED
    CorporateActionTenderOptionEnum:
      title: CorporateActionTenderOptionEnum
      type: string
      description: Corporate Action Tender Options
      enum:
        - NONE
        - CASH
        - STOCK
    TokenizedCorporateActionNotification:
      title: TokenizedCorporateActionNotification
      type: object
      description: Partner-facing tokenized (Wawex) corporate-action notification. Reuses the traditional CAEV, status, and date schemas but is a distinct payload with token symbol and partner-scoped holder rows.
      properties:
        type:
          $ref: '#/components/schemas/TokenizedCorporateActionNotificationTypeEnum'
        eventId:
          type: string
          format: uuid
        caev:
          $ref: '#/components/schemas/CorporateActionEventTypeEnum'
        underlyingIsin:
          type: string
        symbol:
          type: string
          description: Wawex token symbol (TOK + 12-char ISIN)
        status:
          $ref: '#/components/schemas/CorporateActionEventStatusEnum'
        binding:
          type: boolean
          description: false for a non-binding projection; true for the record-date entitlement snapshot
        asOfDate:
          type: string
          format: date
          description: As-of business date of the customer rows
        dates:
          $ref: '#/components/schemas/CorporateActionDates'
        cashDividend:
          $ref: '#/components/schemas/TokenizedCorporateActionCashDividendTerms'
        ratio:
          $ref: '#/components/schemas/TokenizedCorporateActionRatioTerms'
        customers:
          type: array
          items:
            $ref: '#/components/schemas/TokenizedCorporateActionHolder'
      required:
        - type
        - eventId
        - caev
        - underlyingIsin
        - symbol
        - status
        - binding
    TokenizedCorporateActionHolder:
      title: TokenizedCorporateActionHolder
      type: object
      properties:
        customerId:
          type: string
          format: uuid
        walletCustomerProductId:
          type: string
          format: uuid
        cashCustomerProductId:
          type: string
          format: uuid
          description: Absent while a non-binding projection has not resolved a cash product; present on the binding snapshot
        symbol:
          type: string
        quantity:
          type: number
          format: decimal
      required:
        - customerId
        - walletCustomerProductId
        - symbol
        - quantity
    TokenizedCorporateActionCashDividendTerms:
      title: TokenizedCorporateActionCashDividendTerms
      type: object
      properties:
        grossAmountPerShare:
          type: number
          format: decimal
        currency:
          type: string
    TokenizedCorporateActionRatioTerms:
      title: TokenizedCorporateActionRatioTerms
      type: object
      properties:
        ratioFrom:
          type: number
          format: decimal
        ratioTo:
          type: number
          format: decimal
    TokenizedCorporateActionNotificationTypeEnum:
      title: TokenizedCorporateActionNotificationTypeEnum
      type: string
      description: Tokenized corporate action notification type
      enum:
        - CREATED
        - UPDATED
    SavingsPlansNotification:
      title: SavingsPlansNotification
      type: object
      properties:
        savingsPlanId:
          type: string
          format: uuid
        customerId:
          type: string
          format: uuid
        modifiedOn:
          type: string
          format: date-time
        status:
          $ref: '#/components/schemas/SavingsPlansNotificationStatusEnum'
        notificationType:
          $ref: '#/components/schemas/NotificationTypeEnum'
        validationError:
          $ref: '#/components/schemas/SavingsPlansValidationError'
        externalId:
          type: string
          description: Partner-supplied internal identifier, if set at creation time.
        startDate:
          type: string
          format: date
          description: The date from which the savings plan starts executing.
        endDate:
          type: string
          format: date
          description: Optional date after which the savings plan stops executing.
      required:
        - savingsPlanId
        - notificationType
        - status
    SavingsPlansNotificationStatusEnum:
      title: SavingsPlansNotificationStatusEnum
      type: string
      enum:
        - ACTIVE
        - INACTIVE
        - DELETED
        - INVALID
    SavingsPlansValidationError:
      title: SavingsPlansValidationError
      type: object
      properties:
        errorType:
          $ref: '#/components/schemas/SavingsPlansValidationErrorEnum'
        description:
          type: string
      required:
        - errorType
        - description
    SavingsPlansValidationErrorEnum:
      title: SavingsPlansValidationErrorEnum
      type: string
      enum:
        - ALREADY_EXISTS_ERROR
        - DATA_NOT_FOUND_ERROR
        - SAVINGS_PLAN_INVALID_DATA_ERROR
        - REQUESTOR_ID_NOT_VALID
        - UNKNOWN_ERROR
    SavingsPlansOrderNotification:
      title: SavingsPlansOrderNotification
      type: object
      description: Notification of a savings plan order (BUY execution or SELL exit) status change. The execution block is populated once status is FILLED; for SELL exits tax fields arrive on a later UPDATED notification.
      properties:
        savingsPlanId:
          type: string
          format: uuid
        executionId:
          type: string
          format: uuid
          description: Unique identifier of the order (execution or exit).
        customerId:
          type: string
          format: uuid
        tradeSide:
          $ref: '#/components/schemas/TradeSideEnum'
        status:
          $ref: '#/components/schemas/SavingsPlansOrderStatusEnum'
        notificationType:
          $ref: '#/components/schemas/NotificationTypeEnum'
        failureReason:
          type: string
          description: Populated for failed orders (e.g. REJECTED); absent otherwise.
        isin:
          type: string
        savingsAmount:
          type: number
          multipleOf: 0.01
          description: The savings amount for a BUY execution. Absent for SELL exits.
        exchangeCode:
          $ref: '#/components/schemas/SavingsPlansExchangeCodeEnum'
        executionDatePlanned:
          type: string
          format: date
        externalId:
          type: string
          description: Partner-supplied internal identifier, if set at creation time.
        createdOn:
          type: string
          format: date-time
        modifiedOn:
          type: string
          format: date-time
        execution:
          $ref: '#/components/schemas/SavingsPlansOrderExecutionData'
      required:
        - savingsPlanId
        - executionId
        - tradeSide
        - status
        - notificationType
    SavingsPlansOrderExecutionData:
      title: SavingsPlansOrderExecutionData
      type: object
      properties:
        executionPrice:
          type: number
        executionQuantity:
          type: number
        amount:
          type: number
          multipleOf: 0.01
          description: executionQuantity x executionPrice, rounded to 2 decimal places.
        transactionTime:
          type: string
          format: date-time
        germanCit:
          type: number
          format: decimal
          description: German capital income tax. 0 for BUY executions; populated for SELL exits.
        solidaritySurcharge:
          type: number
          format: decimal
          description: German solidarity surcharge. 0 for BUY executions; populated for SELL exits.
        churchTax:
          type: number
          format: decimal
          description: German church tax. 0 for BUY executions; populated for SELL exits.
        feeAmount:
          type: number
          multipleOf: 0.01
      required:
        - executionPrice
        - executionQuantity
        - amount
        - germanCit
        - solidaritySurcharge
        - churchTax
    RoleValidationErrorEnum:
      title: RoleValidationErrorEnum
      type: string
      enum:
        - ALREADY_EXISTS_ERROR
        - DATA_NOT_FOUND_ERROR
        - INAPPROPRIATE_DATA_STATUS_ERROR
        - INVALID_DATA_ERROR
        - CREATE_REJECTED_BY_ADMIN_ERROR
        - UPDATE_REJECTED_BY_ADMIN_ERROR
        - UNKNOWN_ERROR
        - DATA_MISSING_ERROR
        - INVALID_REF_ACCOUNT_IBAN
        - REF_ACCOUNT_IBAN_BIC_MISMATCH
    ErrorDetailsExplanation:
      title: ErrorDetailsExplanation
      type: object
      properties:
        code:
          type: string
          maxLength: 255
        parameter:
          type: string
        message:
          type: string
      required:
        - code
        - message
    ErrorDetails:
      title: ErrorDetails
      type: object
      properties:
        field:
          type: string
          maxLength: 255
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorDetailsExplanation'
      required:
        - field
    ErrorMessage:
      title: ErrorMessage
      type: object
      properties:
        message:
          type: string
        responseType:
          type: string
        validationString:
          minLength: 1
          type: string
        requestId:
          type: string
        errorCode:
          type: string
          maxLength: 255
        errorDetails:
          type: array
          items:
            $ref: '#/components/schemas/ErrorDetails'
      required:
        - message
        - responseType
        - requestId
    NaturalPersonStatusEnum:
      title: NaturalPersonStatusEnum
      type: string
      enum:
        - CREATED
        - REVIEW
        - REJECTED
        - INACTIVE
        - PENDING
        - ACTIVE
        - SUSPENDED
        - ARCHIVED
        - RECEIVED
        - INVALID
        - SUSPENDED_COMPLIANCE
        - DECEASED
    EntityValidationErrorEnum:
      title: EntityValidationErrorEnum
      type: string
      enum:
        - ALREADY_EXISTS_ERROR
        - DATA_MISSING_ERROR
        - DATA_NOT_FOUND_ERROR
        - EVENT_NOT_FOUND_ERROR
        - INAPPROPRIATE_DATA_STATUS_ERROR
        - INVALID_DATA_ERROR
        - CREATE_REJECTED_BY_ADMIN_ERROR
        - UPDATE_REJECTED_BY_ADMIN_ERROR
        - EMAIL_ALREADY_EXISTS_ERROR
        - INVALID_STATUS_UPDATE_ERROR
        - NATURAL_PERSON_NOT_FOUND_ERROR
        - NATURAL_PERSON_NOT_IN_CREATED_STATUS_ERROR
        - UNKNOWN_ERROR
    JointPersonStatusEnum:
      title: JointPersonStatusEnum
      type: string
      enum:
        - CREATED
        - REVIEW
        - REJECTED
        - INACTIVE
        - PENDING
        - ACTIVE
        - SUSPENDED
        - ARCHIVED
        - RECEIVED
        - INVALID
        - SUSPENDED_COMPLIANCE
    LegalEntityStatusEnum:
      title: LegalEntityStatusEnum
      type: string
      enum:
        - CREATED
        - REVIEW
        - REJECTED
        - INACTIVE
        - PENDING
        - ACTIVE
        - SUSPENDED
        - ARCHIVED
        - RECEIVED
        - INVALID
        - SUSPENDED_COMPLIANCE
    LegalRepresentativeStatusEnum:
      title: LegalRepresentativeStatusEnum
      type: string
      enum:
        - ACTIVE
        - INACTIVE
        - REVIEW
        - RECEIVED
        - INVALID
    DigitalAssetOrderErrorEnum:
      title: DigitalAssetOrderErrorEnum
      type: string
      enum:
        - ASSET_NOT_ACTIVE
        - ASSET_NOT_FOUND
        - BALANCE_UPDATE_FAILED
        - CASH_CUSTOMER_PRODUCT_NOT_ACTIVE
        - CASH_CUSTOMER_PRODUCT_NOT_FOUND
        - CASH_CUSTOMER_PRODUCT_REQUIRED
        - DIFFERENT_CUSTOMERS_FOR_CUSTOMER_PRODUCTS
        - INSUFFICIENT_BALANCE
        - INSUFFICIENT_POSITION
        - ORDER_CANNOT_BE_SUBMITTED
        - ORDER_CASH_AMOUNT_OUT_OF_BOUNDS
        - ORDER_SAVING_FAILED
        - VALIDATION_FAILED
        - WALLET_CUSTOMER_PRODUCT_NOT_ACTIVE
        - WALLET_CUSTOMER_PRODUCT_NOT_FOUND
        - WALLET_CUSTOMER_PRODUCT_REQUIRED
    TraditionalAssetOrderStatusEnum:
      title: TraditionalAssetOrderStatusEnum
      type: string
      enum:
        - RECEIVED
        - INVALID
        - PLACED
        - UPDATED
        - REJECTED
        - FILLED
        - PARTIALLY_FILLED
        - CANCELLED
        - RECONCILIATION_CORRECTION
        - EXPIRED
        - PENDING
        - CANCELLATION_REJECTED
        - CANCELLATION_ACCEPTED
        - PARTIALLY_FILLED_CANCELLED
        - PARTIALLY_FILLED_EXPIRED
    TraditionalAssetOrderNotificationErrorCodeEnum:
      title: TraditionalAssetOrderNotificationErrorCodeEnum
      type: string
      enum:
        - INSUFFICIENT_BALANCE
        - INSUFFICIENT_POSITION
        - ASSET_NOT_FOUND
        - ASSET_NOT_ACTIVE
        - ORDER_CANNOT_BE_SUBMITTED
        - DEPOSITORY_CUSTOMER_PRODUCT_NOT_FOUND
        - DEPOSITORY_CUSTOMER_PRODUCT_REQUIRED
        - DEPOSITORY_CUSTOMER_PRODUCT_NOT_ACTIVE
        - CASH_CUSTOMER_PRODUCT_NOT_FOUND
        - CASH_CUSTOMER_PRODUCT_REQUIRED
        - CASH_CUSTOMER_PRODUCT_NOT_ACTIVE
        - DIFFERENT_CUSTOMERS_FOR_CUSTOMER_PRODUCTS
        - LEGAL_ENTITY_IDENTIFIER_NOT_SET
        - LEGAL_ENTITY_IDENTIFIER_NOT_VALID
        - NATIONAL_IDENTIFIER_NOT_SET
        - REQUESTOR_ID_NOT_VALID
        - ORDER_NOT_CANCELABLE
        - ORDER_PENDING_CANCELATION
        - ORDER_CANCELATION_REJECTED
        - ORDER_REJECTED
        - ORDER_DOES_NOT_COVER_FEE
    TokenizedAssetOrderStatusEnum:
      title: TokenizedAssetOrderStatusEnum
      type: string
      enum:
        - RECEIVED
        - FILLED
        - PARTIALLY_FILLED
        - PARTIALLY_FILLED_CANCELLED
        - PARTIALLY_FILLED_EXPIRED
        - CANCELLED
        - EXPIRED
        - REJECTED
        - INVALID
    TokenizedAssetOrderNotificationErrorCodeEnum:
      title: TokenizedAssetOrderNotificationErrorCodeEnum
      type: string
      enum:
        - INSUFFICIENT_BALANCE
        - INSUFFICIENT_POSITION
        - ASSET_NOT_FOUND
        - ASSET_NOT_ACTIVE
        - ASSET_NOT_TOKENIZED
        - ORDER_CANNOT_BE_SUBMITTED
        - WALLET_CUSTOMER_PRODUCT_NOT_FOUND
        - WALLET_CUSTOMER_PRODUCT_REQUIRED
        - WALLET_CUSTOMER_PRODUCT_NOT_ACTIVE
        - CASH_CUSTOMER_PRODUCT_NOT_FOUND
        - CASH_CUSTOMER_PRODUCT_REQUIRED
        - CASH_CUSTOMER_PRODUCT_NOT_ACTIVE
        - DIFFERENT_CUSTOMERS_FOR_CUSTOMER_PRODUCTS
        - ORDER_AMOUNT_BELOW_MINIMUM
        - ORDER_AMOUNT_ABOVE_MAXIMUM
        - PRE_TRADE_AUTHORIZATION_REJECTED
        - ORDER_NOT_CANCELABLE
        - ORDER_REJECTED
        - ORDER_DOES_NOT_COVER_FEE
    TradeSideEnum:
      title: TradeSideEnum
      type: string
      enum:
        - BUY
        - SELL
    TaxExemptionOrderStatusEnum:
      title: TaxExemptionOrderStatusEnum
      type: string
      description: The status of the tax exemption order
      enum:
        - RECEIVED
        - INVALID
        - ACTIVE
        - INACTIVE
    TaxValidationErrorEnum:
      title: TaxValidationErrorEnum
      type: string
      enum:
        - ALREADY_EXISTS_ERROR
        - DATA_NOT_FOUND_ERROR
        - INVALID_DATA_ERROR
        - INAPPROPRIATE_DATA_STATUS_ERROR
        - DATA_MISSING_ERROR
        - UNKNOWN_ERROR
    SavingsPlansOrderStatusEnum:
      title: SavingsPlansOrderStatusEnum
      type: string
      enum:
        - PENDING
        - PLACED
        - FILLED
        - REJECTED
        - EXPIRED
        - CANCELLED
      description: Status of a savings plan order (execution or exit), aligned with the traditional trading vocabulary. For BUY executions the internal lifecycle maps as PLANNED/READY -> PENDING, PLACED, FILLED, REJECTED, CANCELLED. For SELL exits the status maps directly.
    SavingsPlansExchangeCodeEnum:
      title: SavingsPlansExchangeCodeEnum
      type: string
      enum:
        - TGAT
        - XOFF
      description: Venue of a savings plan order. TGAT when the batch touched the exchange (ordered_quantity > 0 for BUY, exchange execution path for SELL); XOFF for pure FIFO / internal TVM allocation.
    CurrencyEnum:
      title: CurrencyEnum
      type: string
      description: Currency of the product's balance. Currency code in ISO 4217
      enum:
        - EUR
    CorporateActionNotificationErrorCodeEnum:
      title: CorporateActionNotificationErrorCodeEnum
      type: string
      enum:
        - CUSTOMER_PRODUCT_NOT_SUBJECTABLE_TO_CORPORATE_ACTION
        - RESPONSE_DEADLINE_EXCEEDED
        - OPTION_MISSMATCH_WITH_ANNOUNCED_OPTIONS
        - INSUFFICIENT_POSITION_TO_COVER_TENDERED_QUANTITY
        - TENDER_CANNOT_BE_SUBMITTED
        - MAXIMUM_QUANTITY_SHARES_EXCEEDED
        - MAXIMUM_CASH_AMOUNT_EXCEEDED
x-internal: false
x-tagGroups:
  - name: Partner Webhooks
    tags:
      - Notifications
