openapi: 3.0.1
info:
  title: Trade Initiation
  version: v1
  description: Initiate subscription requests on behalf of the end client into desired product(s). Supports all types of custom subscription request types for a client.
servers:
  - url: 'https://build.api.seic.com/v1/trade'
    description: Integration Server with masked data.
  - url: 'https://test.api.seic.com/v1/trade'
    description: Test Server with unmasked data.
  - url: 'https://api.seic.com/v1/trade'
    description: Production Server with unmasked data.
paths:
  /initiation:
    post:
      tags:
      - Trade Initiation
      operationId: PostTrade
      summary: Create a transaction for an investor with either just the investor details or investor and advisor details or just the investment advisor details. Product information, request type and one of the investor/advisor details are mandatory to create a successful transaction.
      parameters:
      - name: Authorization
        in: header
        required: true
        description: access_token value obtained from the Token endpoint.This is passed as "Bearer access_token "
        schema:
          type: string
      - name: AppKey
        in: header
        required: true
        description: This is the Consumer Key provided during the App Registration process and is used to identify the user's application.
        schema:
          type: string
      - name: Content-Type
        in: header
        required: true
        description: This is the content type of the payload being passed. Valid value is application/json.
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InitiationRequest'
        required: true
      responses:
        201:
          description: Opportunities created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InitiationDataResponse'
              example:
                    data: 
                      orders: 
                        - advisor:
                           name: string
                           stateCode: string
                          createdAt: 2020-11-03T15:00:51:576Z
                          orderId: string
                          products: 
                          - 
                           name: string
                           trackingNumber: string
                          accountNumber: string
                          opportunityGroupId: string
                          investorName: string
                          subform: 
                          - id: string 
                          placementFee: string
                      faults: 
                        - 
                         code: string
                         message: string
                         userMessage: string
                         trackingId: string
                         transient: true
                    formatters: 
                      - {}
                    contentTypes: 
                      - {} 
                    declaredType: string
                    statusCode: 200
        400:
          description: Malformed request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        401:
          description: Invalid or expired authorization.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        403:
          description: Access forbidden for resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        404:
          description: Not Authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        405:
          description: Method is not allowed on specified resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        409:
          description: The request cannot be completed due to conflict with current
            state of the resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        422:
          description: Payload is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        500:
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-codegen-request-body-name: requestPayload
  /initiation/{trackingNumber}:
    get:
      tags:
      - Trade Initiation
      operationId: GetTrade
      summary: Returns all the transaction related attributes for a tracking number returned post the successful Transaction creation.
      parameters:
      - name: trackingNumber
        in: path
        required: true
        description: Trade tracking id
        schema:
          type: string
      - name: Authorization
        in: header
        required: true
        description: access_token value obtained from the Token endpoint.This is passed as "Bearer access_token
        schema:
          type: string
      - name: AppKey
        in: header
        required: true
        description: This is the Consumer Key provided during the App Registration process and is used to identify the user's application
        schema:
          type: string
      responses:
        201:
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InitiationDataResponse'
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        401:
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        403:
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        404:
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        405:
          description: Method Not Allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        409:
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        422:
          description: Client Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        500:
          description: Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
    put:
      tags:
      - Trade Initiation
      operationId: PutTrade
      summary: This API Call updates the Transaction attributes information once an Transaction is successfully created
      parameters:
      - name: trackingNumber
        in: path
        required: true
        description: Trade tracking id
        schema:
          type: string
      - name: Authorization
        in: header
        required: true
        description: access_token value obtained from the Token endpoint.This is passed as "Bearer access_token
        schema:
          type: string
      - name: AppKey
        in: header
        required: true
        description: This is the Consumer Key provided during the App Registration process and is used to identify the user's application
        schema:
          type: string
      - name: Content-Type
        in: header
        required: true
        description: Valid value is application/json. This defines the content type of the request payload accepted by the API.
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InitiationRequest'
        required: true
      responses:
        201:
          description: Opportunity updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InitiationDataResponse'
        400:
          description: Malformed request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        401:
          description: Invalid or expired authorization.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        403:
          description: Access forbidden for resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        404:
          description: Not Authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        405:
          description: Method is not allowed on specified resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        409:
          description: The request cannot be completed due to conflict with current
            state of the resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        422:
          description: Payload is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        500:
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-codegen-request-body-name: requestPayload
  /initiation/channels/{productName}/{transactionType}:
    get:
      tags:
      - Trade Initiation
      summary: Returns a list of all the channels available for a given Product and Transaction type.
      operationId: GetTradeChannels
      parameters:
      - name: productName
        in: path
        required: true
        description: One of three values that determine the kit which drives the process and form details that will need to be completed (i.e. WWC Event Driven Fund, L.P.). The other fields are requestType and and channel.
        schema:
          type: string
      - name: transactionType
        in: path
        required: true
        description: Describes the type of transaction.
        schema:
          type: string
      - name: Authorization
        in: header
        required: true
        description: access_token value obtained from the Token endpoint.This is passed as "Bearer access_token"
        schema:
          type: string
      - name: AppKey
        in: header
        required: true
        description: This is the Consumer Key provided during the App Registration process and is used to identify the user's application.
        schema:
          type: string
      responses:
        201:
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InitiationResponse'
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        401:
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        403:
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        404:
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        405:
          description: Method Not Allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        409:
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        422:
          description: Client Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        500:
          description: Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /initiation/prefill/{trackingNumber}:
    post:
      tags:
      - Trade Initiation
      operationId: PostPrefill
      summary: Notifies Trade for the Data Readiness for a given Transaction
      parameters:
      - name: Authorization
        in: header
        required: true
        description: access_token value obtained from the Token endpoint.This is passed as "Bearer access_token"
        schema:
          type: string
      - name: AppKey
        in: header
        required: true
        description: This is the Consumer Key provided during the App Registration process and is used to identify the user's application
        schema:
          type: string
      - name: trackingNumber
        in: path
        required: true
        description: Trade tracking id
        schema:
          type: string
      responses:
        200:
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActionResult'
        401:
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        403:
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        404:
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        500:
          description: Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    InitiationRequest:
      required:
      - data
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Opportunity'
    Opportunity:
      type: object
      properties:
        requestType:
          type: string
          description: One of three values that determine the kit which drives the process and form details that will need to be completed (i.e., 'New Subscription'). The other fields are channel and productName.
          example: New Subscription
        channel:
          type: string
          description: Intermediate through which the investor came into the product.
          example: Direct
        opportunityGroupId:
          type: string
          description: ""
        externalOrderId:
          type: string
          description: An optional identifier that can be captured and used to ensure that duplicate requests are not initiated and also can be used as a way to link specific requests from disparate systems.
          example: WWC_{{$timestamp}}
        firm:
          type: string
          description: An optional identifier that can be used to link a Firm to an Opportunity.
        team:
          type: string
          description: The identifier of the team.
        group:
          type: string
          description: An optional identifier that can be used to link a group to an Opportunity.
        tradeDate:
          type: string
          description: The date the order was executed, e.g., the effective date, in format yyyy-MM-ddTHH:mm:ss.SSS. Datetime is Eastern Standard Time (EST).
          format: date-time
          example: 2018-09-25T00:00:000
        orderDate:
          type: string
          description: The date and time that this request has been made.
          format: date-time
          example: 2018-09-25T00:00:000
        eSign:
          type: boolean
          description: Gets or sets a value indicating whether [e sign].
          example: true
        products:
          type: array
          description: ""
          items:
            $ref: '#/components/schemas/Product'
        advisor:
          $ref: '#/components/schemas/Advisor'
        investor:
          $ref: '#/components/schemas/Investor'
        manager:
          $ref: '#/components/schemas/Manager'
        accessContacts:
          type: array
          description: ""
          items:
            $ref: '#/components/schemas/AccessContact'
        formContacts:
          type: array
          description: ""
          items:
            $ref: '#/components/schemas/FormContact'
        custodians:
          type: array
          description: It represents the custodian id and custodian name as a key value pair that are linked to the specific portfolios
          items:
            type: string
        subForms:
          type: array
          description: ""
          items:
            $ref: '#/components/schemas/OpportunityDocumentDTO'
        placementFee:
          type: array
          description: Placement fees, only applicable for incoming transactions.
          items:
            type: number
            format: double
    Product:
      required:
      - productName
      type: object
      properties:
        productName:
          type: string
          description: One of three values that determine the kit which drives the process and form details that will need to be completed (i.e. WWC Event Driven Fund, L.P.). The other fields are requestType and and channel.
          example: Worldwide Capital Event Driven Fund, LP
        classIds:
          type: array
          description: ""
          items:
            type: string
        amlRepLetter:
          type: boolean
          description: Determines if an AML Rep Letter is required for the product.
          example: true
        funds:
          type: array
          description: An array of products specific to the opportunity in SEI Trade.
          items:
            $ref: '#/components/schemas/Fund'
      description: Class Product.
    Advisor:
      type: object
      properties:
        externalId:
          type: string
          description: Unique business identifier that represents a contact, investor, product, transaction or alternate entity recognized by SEI and a third party system or application.  Many times the externalId is used to synchronize SEI sourced data with another data source for the same record.
        division:
          type: string
          description: A division within the advisory firm, if applicable.
        region:
          type: string
          description: The region of the world associated with the calendar with the options being (Africa, Americas, Asia, Europe, Global and Middle East).
        contact:
          $ref: '#/components/schemas/Manager'
        label:
          $ref: '#/components/schemas/AdvisorLabel'
    Investor:
      type: object
      properties:
        name:
          type: string
          description: The first, last, and middle name of the user as available in the SEI application
          example: John Doe Personal Trust
        externalId:
          type: string
          description: Unique business identifier that represents a contact, investor, product, transaction or alternate entity recognized by SEI and a third party system or application.  Many times the externalId is used to synchronize SEI sourced data with another data source for the same record.
        subscriberType:
          type: string
          description: Investor's subscriber type as indicated on the subscription document. A full list of subscriber types can be obtained through the Lists API.
        accountNumber:
          type: string
          description: Code which uniquely identifies an individual or entity.
        contact:
          $ref: '#/components/schemas/Manager'
        label:
          $ref: '#/components/schemas/AdvisorLabel'
    Manager:
      type: object
      properties:
        fullName:
          type: string
          description: The full legal name of the investor,manager or contact or any other entity represented by the object grouping of the field in the JSON response structure.
        firstName:
          type: string
          description: The first name for the financial advisor, investor,manager or contact or third party
        lastName:
          type: string
          description: The last name for the financial advisor, investor,manager or contact or third party
        email:
          type: string
          description: The email address at which communications can be sent or received.
          example: jdoe@gmail.com
        externalId:
          type: string
          description: Unique business identifier that represents a contact, investor, product, transaction or alternate entity recognized by SEI and a third party system or application.  Many times the externalId is used to synchronize SEI sourced data with another data source for the same record.
      description: ""
    AccessContact:
      type: object
      properties:
        access:
          type: string
          description: Describes the access the contact should have in SEI Trade. Possible values are 'read', 'readwrite' or blank.
        contact:
          $ref: '#/components/schemas/Manager'
        label:
          $ref: '#/components/schemas/AccessLabel'
    FormContact:
      type: object
      properties:
        contact:
          $ref: '#/components/schemas/Manager'
        label:
          $ref: '#/components/schemas/AccessLabel'
    OpportunityDocumentDTO:
      type: object
      properties:
        id:
          type: string
          description: The SEI system's internal identifier for an Account, position, lot, transaction, investor, product or any other entity indicated by the object grouping in the API response. 
    Fund:
      type: object
      properties:
        externalId:
          type: string
          description: Unique business identifier that represents a contact, investor, product, transaction or alternate entity recognized by SEI and a third party system or application.  Many times the externalId is used to synchronize SEI sourced data with another data source for the same record.
        amount:
          type: number
          format: double
          description: Debit Credit Amount
          example: 0
        currency:
          type: string
          description: ISO 4217 alphabetic code
    AdvisorLabel:
      type: object
      properties:
        city:
          type: string
          description: The city of the address.
        stateCode:
          type: string
          description: The two character code for US and Canadian states and provinces.
        postalCode:
          type: string
          description: The postal code of the address.
        countryIsoCode:
          type: string
          description: ISO country code ISO 3166-1 alpha-2 code format.
        address1:
          type: string
          description: The first line of the address, typically used for the street address.
        address2:
          type: string
          description: The second line of the address.
        zip:
          type: string
    AccessLabel:
      type: object
      properties:
        countryIsoCode:
          type: string
          description: ISO country code ISO 3166-1 alpha-2 code format.
    InitiationDataResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/InitiationResponse'
        formatters:
          type: array
          items:
            type: object
            properties: {}
        contentTypes:
          type: array
          items:
            type: object
            properties: {}
        declaredType:
          type: string
        statusCode:
          type: integer
          format: int32
          enum:
          - 200
          - 201
          - 202
          - 203
          - 204
          - 205
          - 206
          - 300
          - 301
          - 302
          - 303
          - 304
          - 305
          - 306
          - 307
          - 400
          - 401
          - 402
          - 403
          - 404
          - 405
          - 406
          - 407
          - 408
          - 409
          - 410
          - 411
          - 412
          - 413
          - 414
          - 415
          - 416
          - 417
          - 426
          - 500
          - 501
          - 502
          - 503
          - 504
          - 505
          - 100
          - 101
    InitiationResponse:
      type: object
      properties:
        orders:
          type: array
          items:
            $ref: '#/components/schemas/OrderResponse'
        faults:
          type: array
          items:
            $ref: '#/components/schemas/IFault'
    OrderResponse:
      type: object
      properties:
        advisor:
          $ref: '#/components/schemas/AdvisorResponse'
        createdAt:
          type: string
          format: date-time
          description: The date time the entity was created.
        orderId:
          type: string
          description: The Unique identifier of the order.
        products:
          type: array
          items:
            $ref: '#/components/schemas/ProductResponse'
        accountNumber:
          type: string
          description: Code which uniquely identifies an individual or entity.
        opportunityGroupId:
          type: string
        investorName:
          type: string
          description: Investor full legal name as indicated on the subscription document.
        subform:
          type: array
          items:
            $ref: '#/components/schemas/OpportunityDocumentDTO'
        placementFee:
          type: string
          description: Placement fees, only applicable for incoming transactions.
    IFault:
      type: object
      properties:
        code:
          type: string
          description: A semantic code which expresses the following {errorDomain}.{errorSubDomainOrResource}.{verb}.
        message:
          type: string
          description: A developer specified message which accompanies the error.
        userMessage:
          type: string
          description: A localized message based on the locale of the user. If unspecified, defaults to message.
        trackingId:
          type: string
          description: A unique identifier which can be used to trace the logs.
        transient:
          type: boolean
          description: Indicates if the error is temporary and the original request can be retried without any modifications.
    AdvisorResponse:
      type: object
      properties:
        name:
          type: string
          description: Field name stateCode  
        stateCode:
          type: string
          description: The two character code for US and Canadian states and provinces.
    ProductResponse:
      type: object
      properties:
        name:
          type: string
          description: The business description for an entity in the context of the API, sometimes called a proper name. A name can apply to a Calendar, Financial Institution, Investor, Account, Advisor and various other entities.
        trackingNumber:
          type: string
          description: A unique tracking number assigned to a specific request.
    ErrorResponse:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
        userMessage:
          type: string
        trackingId:
          type: string
        transient:
          type: boolean
        documentationalUrl:
          type: string
        remediationInfo:
          type: string
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Errors'
        debugInfo:
          type: array
          items:
            $ref: '#/components/schemas/DebugInfo'
    Errors:
      type: object
      properties:
        field:
          type: string
        location:
          type: string
        reason:
          type: string
    DebugInfo:
      type: object
      properties:
        type:
          type: string
        reason:
          type: string
        remediationMsg:
          type: string
        debugInfo:
          type: array
          items:
            $ref: '#/components/schemas/DebugInfo'
    ActionResult:
      type: object