openapi: 3.0.1
info:
  title: HolyWally.PartnerApi
  version: '1.0'
paths:
  /invitation/check:
    get:
      tags:
        - Invitation
      parameters:
        - name: emailOrPhoneNumber
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Success
  /notification:
    post:
      tags:
        - Notification
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotificationRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/NotificationRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/NotificationRequest'
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/BaseNotification'
            application/json:
              schema:
                $ref: '#/components/schemas/BaseNotification'
            text/json:
              schema:
                $ref: '#/components/schemas/BaseNotification'
  /policies:
    get:
      tags:
        - Policy
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PolicyModel'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PolicyModel'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PolicyModel'
        default:
          description: Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /account-presets:
    get:
      tags:
        - Preset
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AccountPresetModel'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AccountPresetModel'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AccountPresetModel'
        default:
          description: Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /users:
    post:
      tags:
        - User
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateUserModel'
          text/json:
            schema:
              $ref: '#/components/schemas/CreateUserModel'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CreateUserModel'
      responses:
        '201':
          description: Created
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/UserResponseModel'
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponseModel'
            text/json:
              schema:
                $ref: '#/components/schemas/UserResponseModel'
        default:
          description: Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    get:
      tags:
        - User
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserResponseModel'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserResponseModel'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserResponseModel'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        default:
          description: Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /users/{externalRefId}:
    get:
      tags:
        - User
      parameters:
        - name: externalRefId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        default:
          description: Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /users/invite:
    post:
      tags:
        - User
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserInvitationCreateModel'
          text/json:
            schema:
              $ref: '#/components/schemas/UserInvitationCreateModel'
          application/*+json:
            schema:
              $ref: '#/components/schemas/UserInvitationCreateModel'
      responses:
        '201':
          description: Created
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/UserDirectoryModel'
            application/json:
              schema:
                $ref: '#/components/schemas/UserDirectoryModel'
            text/json:
              schema:
                $ref: '#/components/schemas/UserDirectoryModel'
        default:
          description: Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /users/{externalRefId}/alias:
    post:
      tags:
        - User
      parameters:
        - name: externalRefId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ExternalRefIdModel'
          text/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ExternalRefIdModel'
          application/*+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ExternalRefIdModel'
      responses:
        '201':
          description: Created
        default:
          description: Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    delete:
      tags:
        - User
      parameters:
        - name: externalRefId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ExternalRefIdModel'
          text/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ExternalRefIdModel'
          application/*+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ExternalRefIdModel'
      responses:
        '200':
          description: Success
        default:
          description: Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /users/{externalRefId}/policies:
    post:
      tags:
        - User
      parameters:
        - name: externalRefId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/UserPolicyReferenceModel'
          text/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/UserPolicyReferenceModel'
          application/*+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/UserPolicyReferenceModel'
      responses:
        '201':
          description: Created
        default:
          description: Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    get:
      tags:
        - User
      parameters:
        - name: externalRefId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
        default:
          description: Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /users/{externalRefId}/policies/{policyId}:
    delete:
      tags:
        - User
      parameters:
        - name: externalRefId
          in: path
          required: true
          schema:
            type: string
        - name: policyId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: No Content
        default:
          description: Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /users/{externalRefId}/wallets:
    get:
      tags:
        - User
      parameters:
        - name: externalRefId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
        default:
          description: Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    post:
      tags:
        - User
      parameters:
        - name: externalRefId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/WalletUserAssignModel'
          text/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/WalletUserAssignModel'
          application/*+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/WalletUserAssignModel'
      responses:
        '201':
          description: Created
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        default:
          description: Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /users/{externalRefId}/wallet:
    delete:
      tags:
        - User
      parameters:
        - name: externalRefId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WalletUserDeleteModel'
          text/json:
            schema:
              $ref: '#/components/schemas/WalletUserDeleteModel'
          application/*+json:
            schema:
              $ref: '#/components/schemas/WalletUserDeleteModel'
      responses:
        '204':
          description: No Content
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        default:
          description: Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /users/{externalRefId}/assign-auth-account:
    post:
      tags:
        - User
      parameters:
        - name: externalRefId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssignAuthAccountModel'
          text/json:
            schema:
              $ref: '#/components/schemas/AssignAuthAccountModel'
          application/*+json:
            schema:
              $ref: '#/components/schemas/AssignAuthAccountModel'
      responses:
        '201':
          description: Created
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        default:
          description: Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /users/{externalRefId}/auth-account:
    get:
      tags:
        - User
      parameters:
        - name: externalRefId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        default:
          description: Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    delete:
      tags:
        - User
      parameters:
        - name: externalRefId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/DeleteAuthAccount'
          text/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/DeleteAuthAccount'
          application/*+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/DeleteAuthAccount'
      responses:
        '204':
          description: No Content
        default:
          description: Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /users/{externalRefId}/activate:
    post:
      tags:
        - User
      parameters:
        - name: externalRefId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        default:
          description: Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /users/{externalRefId}/suspend:
    post:
      tags:
        - User
      parameters:
        - name: externalRefId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        default:
          description: Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /users/{externalRefId}/close:
    post:
      tags:
        - User
      parameters:
        - name: externalRefId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        default:
          description: Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /user-directories:
    get:
      tags:
        - UserDirectory
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserDirectoryModel'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserDirectoryModel'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserDirectoryModel'
        default:
          description: Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    post:
      tags:
        - UserDirectory
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserDirectoryCreateModel'
          text/json:
            schema:
              $ref: '#/components/schemas/UserDirectoryCreateModel'
          application/*+json:
            schema:
              $ref: '#/components/schemas/UserDirectoryCreateModel'
      responses:
        '201':
          description: Created
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/UserDirectoryModel'
            application/json:
              schema:
                $ref: '#/components/schemas/UserDirectoryModel'
            text/json:
              schema:
                $ref: '#/components/schemas/UserDirectoryModel'
        '500':
          description: Server Error
        default:
          description: Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /user-directories/{externalRefId}:
    patch:
      tags:
        - UserDirectory
      parameters:
        - name: externalRefId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserDirectoryUpdateModel'
          text/json:
            schema:
              $ref: '#/components/schemas/UserDirectoryUpdateModel'
          application/*+json:
            schema:
              $ref: '#/components/schemas/UserDirectoryUpdateModel'
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/UserDirectoryModel'
            application/json:
              schema:
                $ref: '#/components/schemas/UserDirectoryModel'
            text/json:
              schema:
                $ref: '#/components/schemas/UserDirectoryModel'
        default:
          description: Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    delete:
      tags:
        - UserDirectory
      parameters:
        - name: externalRefId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
        default:
          description: Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /wallets:
    get:
      tags:
        - Wallet
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WalletResponseModel'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WalletResponseModel'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WalletResponseModel'
        default:
          description: Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  /wallets/{walletId}/wallet-providers:
    get:
      tags:
        - Wallet
      parameters:
        - name: walletId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Success
          content:
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WalletProviderResponseModel'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WalletProviderResponseModel'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WalletProviderResponseModel'
        default:
          description: Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
components:
  schemas:
    AccountPresetModel:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        cardPresets:
          type: array
          items:
            $ref: '#/components/schemas/CardPresetModel'
          nullable: true
      additionalProperties: false
    AssignAuthAccountModel:
      required:
        - authenticationType
        - authIdentifier
      type: object
      properties:
        authIdentifier:
          minLength: 1
          type: string
        authenticationType:
          minLength: 1
          type: string
      additionalProperties: false
    BaseNotification:
      type: object
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        createdDate:
          type: string
          format: date-time
          readOnly: true
        customerIdentifier:
          type: string
          nullable: true
        domainEventType:
          $ref: '#/components/schemas/DomainEventType'
      additionalProperties: false
    CardPresetModel:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
          nullable: true
      additionalProperties: false
    CreateUserModel:
      required:
        - firstName
        - lastName
        - userDirectoryIds
      type: object
      properties:
        firstName:
          minLength: 1
          type: string
        lastName:
          minLength: 1
          type: string
        userDirectoryIds:
          minItems: 1
          type: array
          items:
            type: string
            format: uuid
        externalRefIds:
          type: array
          items:
            type: string
          nullable: true
        userDetails:
          $ref: '#/components/schemas/UserDetailsModel'
      additionalProperties: false
    DeleteAuthAccount:
      type: object
      properties:
        authIdentifier:
          type: string
          nullable: true
      additionalProperties: false
    DomainEventType:
      enum:
        - UserLoggedIn
        - OnboardingCorporateManualInputDetailsSaved
        - OnboardingCorporateSingpassDetailsSaved
        - OnboardingCorporateManualInputDetailsConfirmed
        - OnboardingCorporateSingpassDetailsConfirmed
        - OnboardingCorporatePhoneOtpRequested
        - OnboardingCorporateEmailOtpRequested
        - OnboardingCorporateRegistrationCompleted
        - OnboardingCorporateRegistrationApproved
        - OnboardingCorporateDocumentCreated
        - OnboardingCorporateIdvDocumentCreated
        - OnboardingEmployeeRegistrationEmployeeInvited
        - OnboardingEmployeeRegistrationEmailOTPCodeRequested
        - OnboardingEmployeeRegistrationEmailOTPCodeVerified
        - OnboardingEmployeeRegistrationPhoneOTPCodeRequested
        - OnboardingEmployeeRegistrationPhoneOTPCodeVerified
        - OnboardingEmployeeRegistrationPhoneOTPCodeRequestedAfterRegistration
        - OnboardingEmployeeRegistrationPhoneOTPCodeVerifiedAfterRegistration
        - OnboardingEmployeeRegistrationDetailsManualInputSaved
        - OnboardingEmployeeRegistrationDetailsSingpassSaved
        - OnboardingEmployeeRegistrationDetailsManualInputConfirmed
        - OnboardingEmployeeRegistrationDetailsSingpassConfirmed
        - OnboardingEmployeeRegistrationCompleted
        - OnfidoCorporateSDKTokenGenerated
        - OnfidoEmployeeSDKTokenGenerated
        - OnfidoUserSDKTokenGenerated
        - OnfidoCorporateCheckCreated
        - OnfidoEmployeeCheckCreated
        - OnfidoUserCheckCreated
        - TransactionMoneyTransfered
        - TransactionMoneyTransferedToBankAccount
        - TransactionMoneyTransferedToMySelf
        - TransactionMoneyTransferedBetweenCustomerWallets
        - TransactionMoneyWithdrawn
        - TransactionMoneyLoaded
        - BeneficiaryCreated
        - CustomerNewPassCodeSaved
        - CustomerPasscodeVerified
        - CustomerPasscodeReset
        - UserFcmTokenAssigned
        - UserFcmTokenRemoved
        - OnboardingRegistrationApplicationCreated
        - OnboardingRegistrationApplicationEmailVerified
        - OnboardingRegistrationApplicationPhoneNumberSent
        - OnboardingRegistrationApplicationPhoneNumberVerified
        - OtpVerificationEmailOtpCodeRequested
        - OtpVerificationEmailVerified
        - OtpVerificationSmsOtpCodeRequested
        - OtpVerificationSmsOtpCodeVerified
        - UserDetailsUserManualDetailsCreated
        - UserDetailsUserKycDetailsSaved
        - UserDetailsUserKycDetailsConfirmed
        - UserDetailsPasscodeRequested
        - UserDetailsPasscodeReset
        - ReviewRequestMoneyCreated
        - ReviewRequestMoneyDeleted
        - ReviewRequestMoneyClosed
        - ReviewRequestMoneyAccepted
        - ReviewRequestMoneyRejected
        - OnboardingUserRegistrationCompleted
        - TransactionPayment
        - TransactionPaymentFailure
        - TransactionPaymentThresholdExceeded
        - TransactionBalanceThresholdExceeded
        - TransactionBalanceThresholdBelow
        - TransactionTopUp
        - TransactionWithdrawalCompleted
        - TransactionWithdrawalRejected
        - TransactionWalletThresholdExceeded
        - RefundInitiatedForBalanceLimit
        - OnboardingPfhRegistrationCompleted
        - Sample
      type: string
    ExternalRefIdModel:
      type: object
      properties:
        externalRefId:
          type: string
          nullable: true
      additionalProperties: false
    NotificationRequest:
      type: object
      properties:
        event_type:
          type: string
          nullable: true
        customer_identifier:
          type: string
          nullable: true
        event_fields:
          type: object
          nullable: true
      additionalProperties: false
    PolicyModel:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
          nullable: true
      additionalProperties: false
    ProblemDetails:
      type: object
      properties:
        type:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        status:
          type: integer
          format: int32
          nullable: true
        detail:
          type: string
          nullable: true
        instance:
          type: string
          nullable: true
      additionalProperties: {}
    UserDetailsModel:
      type: object
      properties:
        identifier:
          type: string
          nullable: true
        email:
          type: string
          nullable: true
        emailVerified:
          type: boolean
        phoneNumber:
          type: string
          nullable: true
        phoneNumberVerified:
          type: boolean
        firstName:
          type: string
          nullable: true
        lastName:
          type: string
          nullable: true
        details:
          type: object
          additionalProperties:
            nullable: true
          nullable: true
      additionalProperties: false
    UserDirectoryCreateModel:
      required:
        - name
      type: object
      properties:
        name:
          minLength: 1
          type: string
        externalRefIds:
          type: array
          items:
            type: string
          nullable: true
      additionalProperties: false
    UserDirectoryModel:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
          nullable: true
        identifier:
          type: string
          nullable: true
        externalRefIds:
          type: array
          items:
            type: string
          nullable: true
      additionalProperties: false
    UserDirectoryUpdateModel:
      required:
        - name
      type: object
      properties:
        name:
          minLength: 1
          type: string
        externalRefIds:
          type: array
          items:
            type: string
          nullable: true
      additionalProperties: false
    UserInvitationCreateModel:
      required:
        - email
        - phoneNumber
      type: object
      properties:
        email:
          minLength: 1
          type: string
        phoneNumber:
          minLength: 1
          type: string
      additionalProperties: false
    UserPolicyReferenceModel:
      type: object
      properties:
        policyId:
          type: string
          format: uuid
      additionalProperties: false
    UserResponseModel:
      type: object
      properties:
        id:
          type: string
          format: uuid
        firstName:
          type: string
          nullable: true
        lastName:
          type: string
          nullable: true
        userDirectoryIds:
          type: array
          items:
            type: string
            format: uuid
          nullable: true
        externalRefIds:
          type: array
          items:
            type: string
          nullable: true
      additionalProperties: false
    WalletProviderResponseModel:
      type: object
      properties:
        id:
          type: string
          format: uuid
        providerId:
          type: string
          format: uuid
        providerName:
          type: string
          nullable: true
        providerType:
          type: string
          nullable: true
        walletId:
          type: string
          format: uuid
      additionalProperties: false
    WalletResponseModel:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
          nullable: true
        type:
          $ref: '#/components/schemas/WalletType'
      additionalProperties: false
    WalletType:
      enum:
        - Personal
        - Corporate
      type: string
    WalletUserAssignModel:
      required:
        - clientId
        - walletProviderId
      type: object
      properties:
        walletProviderId:
          type: string
          format: uuid
        clientId:
          minLength: 1
          type: string
      additionalProperties: false
    WalletUserDeleteModel:
      required:
        - userDirectoryId
        - walletProviderId
      type: object
      properties:
        walletProviderId:
          type: string
          format: uuid
        userDirectoryId:
          type: string
          format: uuid
      additionalProperties: false
