openapi: 3.1.2
info:
  title: Transact API
  description: |
    The Transact API is a programmatic interface for software to interact with the
    Transact investment platform.
  version: 2026-05-12.2
  contact:
    name: Transact API Team
    email: transactapi@integrafin.co.uk
    url: https://www.transact-online.co.uk
servers:
  - url: https://api.transact-online.co.uk
    description: The production environment.
  - url: https://apidemo.transact-online.co.uk
    description: The UAT environment.
security:
  - Oauth: []
tags:
  - name: account-opening
    x-displayName: Account Opening
    description: Endpoints related to Account Opening.
  - name: advisers
    x-displayName: Advisers
    description: Endpoints that provide information about advisers.
  - name: firms
    x-displayName: Firms
    description: Endpoints that provide information about firms.
  - name: investors
    x-displayName: Investors
    description: Endpoints that provide information about investor portfolios.
  - name: remuneration
    x-displayName: Remuneration
    description: Endpoints related to adviser payments.
  - name: valuations
    x-displayName: Valuations
    description: Endpoints that provide valuation data.
paths:
  /advisers:
    get:
      summary: Get advisers
      operationId: getAdvisers
      tags:
        - advisers
      description: |
        Retrieves information about advisers associated with the Resource Owner.

        Note that in the UAT environment, this endpoint returns one adviser per page.
        In the production environment each page contains multiple advisers.
      security:
        - Oauth:
            - entity.read
      x-roles:
        - FIRM
        - NETWORK
      parameters:
        - $ref: '#/components/parameters/ApiVersion'
        - $ref: '#/components/parameters/Cursor'
        - name: firm_ids
          in: query
          description: The list of firm Transact numbers to filter on.
          required: false
          style: form
          explode: false
          schema:
            type: array
            uniqueItems: true
            items:
              $ref: '#/components/schemas/EntityId'
            maxItems: 50
          example:
            - '123456789'
            - '987654321'
      responses:
        '200':
          description: Retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdviserPage'
              example:
                items:
                  - id: '111111111'
                    surname: Adviser
                    given_names: John
                    fca_number: ABC02345
                    firm_id: '444444444'
                  - id: '222222222'
                    surname: Adviser
                    given_names: Ian
                    fca_number: ABC12345
                    firm_id: '444444444'
                  - id: '333333333'
                    surname: Adviser
                    given_names: Pamela
                    fca_number: ABC22345
                    firm_id: '555555555'
                self: 1234567abc-defg-hijk-lmno-pqrstuvwxyz
                first: 2234567abc-defg-hijk-lmno-pqrstuvwxyz
                prev: 334567abc-defg-hijk-lmno-pqrstuvwxyz
                next: 434567abc-defg-hijk-lmno-pqrstuvwxyz
                last: 534567abc-defg-hijk-lmno-pqrstuvwxyz
                query: {}
        default:
          $ref: '#/components/responses/ProblemResponse'
  /advisers/{adviser_id}:
    get:
      summary: Get an adviser
      operationId: getAdviserById
      tags:
        - advisers
      description: |
        Retrieves information about an adviser. The adviser must be associated with the Resource Owner.
      security:
        - Oauth:
            - entity.read
      x-roles:
        - FIRM
        - NETWORK
      parameters:
        - $ref: '#/components/parameters/ApiVersion'
        - name: adviser_id
          in: path
          description: The adviser's Transact number.
          required: true
          schema:
            $ref: '#/components/schemas/EntityId'
          example: '123456789'
      responses:
        '200':
          description: Retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Adviser'
              example:
                id: '111111111'
                surname: Smith
                given_names: John
                fca_number: ABC12345
                firm_id: '222222222'
        default:
          $ref: '#/components/responses/ProblemResponse'
  /advisers/{adviser_id}/prepop-apps:
    post:
      summary: Prepopulate a Personalised Illustration
      operationId: prepopApps
      tags:
        - account-opening
      description: |
        Instructs creation of a *Transact Personalised Illustration* and pre-populates certain data
        points within the illustration and subsequent *Guided Application*.

        ### Notes

        At a  high level the request structure is as follows:

        | Field                | Description                                                                                                                                                                                                                                                                                           |
        | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
        | `investors`          | Information about the applicants. There are three application types possible: <br>• *Adult portfolio* - One individual applicant over the age of 18<br>• *Joint adult portfolio* - Two individual applicants over the age of 18<br>• *Child portfolio* - One individual applicant under the age of 18 |
        | `registered_contact` | Parent/guardian information for a child portfolio.                                                                                                                                                                                                                                                    |
        | `bank_account`       | Bank account information to be associated with adult portfolios.                                                                                                                                                                                                                                      |

        For the adviser to complete the process, the returned link (see `_links` in the response) can be used to work with the newly created
        illustration within Transact Online. If the user has since proceeded to *Guided Applications*,
        the application will be displayed (with an option to return to the illustration).

        The following fields are disregarded for child applicants:
        `nino` *(where a child is under the age of 15 years and 9 months)*, `bank_account`,
        `investor_category`, `mobile_number`, `phone_number`, `email_address` and `postal_address`.
      security:
        - Oauth:
            - investor-illustration-profile
      x-roles:
        - FIRM
      parameters:
        - $ref: '#/components/parameters/ApiVersion'
        - name: adviser_id
          in: path
          description: The adviser's Transact number.
          required: true
          schema:
            $ref: '#/components/schemas/EntityId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              description: |
                The request body which contains an IllustrationData object.
              $ref: '#/components/schemas/PrePopulationRequestIllustrationData'
            examples:
              adult:
                summary: Adult portfolio
                value:
                  investors:
                    - title: MR
                      surname: Miggins
                      given_names: Ian
                      date_of_birth: '1970-12-25'
                      country_of_birth: GB
                      gender: MALE
                      nationalities:
                        - GB
                      tax_residencies:
                        - country: GB
                        - country: AU
                          tax_id: '12345678'
                      nino: QQ123456A
                      investor_category: RETAIL
                      mobile_number:
                        country: GB
                        number: '07700900000'
                      landline_number:
                        country: GB
                        number: '07700900001'
                      email_address: example@mail.com
                      residential_address:
                        address:
                          line1: 1 Washington Street
                          line2: Worcester
                          post_code: WR1 1NL
                          country: GB
                      postal_address:
                        care_of: Ian Miggins
                        address:
                          line1: 1 Washington Street
                          line2: Worcester
                          post_code: WR1 1NL
                          country: GB
                  bank_account:
                    sort_code: '123456'
                    account_number: '12345678'
                    account_name_or_roll_number: Ian Miggins
                    is_building_society: false
              joint:
                summary: Joint portfolio
                value:
                  investors:
                    - title: MR
                      surname: Miggins
                      given_names: Ian
                      date_of_birth: '1970-12-25'
                      country_of_birth: GB
                      gender: MALE
                      nationalities:
                        - GB
                      tax_residencies:
                        - country: GB
                        - country: AU
                          tax_id: '123456782'
                      nino: QQ123456A
                      investor_category: RETAIL
                      mobile_number:
                        country: GB
                        number: '07700900000'
                      landline_number:
                        country: GB
                        number: '02079460000'
                      email_address: example@mail.com
                      residential_address:
                        address:
                          line1: 1 Washington Street
                          line2: Worcester
                          post_code: WR1 1NL
                          country: GB
                      postal_address:
                        care_of: Ian Miggins
                        address:
                          line1: 49 Featherstone Street
                          line2: London
                          post_code: WR1 1NL
                          country: GB
                    - title: MRS
                      surname: Miggins
                      given_names: Pamela
                      previous_name: Atkinson
                      date_of_birth: '1970-12-25'
                      country_of_birth: GB
                      gender: FEMALE
                      nationalities:
                        - GB
                      tax_residencies:
                        - country: GB
                        - country: AU
                          tax_id: '12354678'
                      nino: QQ123456C
                      investor_category: RETAIL
                      mobile_number:
                        country: GB
                        number: '07700900001'
                      landline_number:
                        country: GB
                        number: '02079460001'
                      email_address: example@mail.com
                      residential_address:
                        address:
                          line1: 49 Featherstone Street
                          line2: London
                          post_code: WR1 1NL
                          country: GB
                      postal_address:
                        address:
                          line1: 49 Featherstone Street
                          line2: London
                          post_code: WR1 1NL
                          country: GB
                  bank_account:
                    sort_code: '123456'
                    account_number: '12345678'
                    account_name_or_roll_number: Ian Miggins
                    is_building_society: false
              child:
                summary: Child portfolio
                value:
                  investors:
                    - title: MR
                      surname: Miggins
                      given_names: Jack
                      date_of_birth: '2014-12-25'
                      country_of_birth: GB
                      gender: MALE
                      nationalities:
                        - GB
                      tax_residencies:
                        - country: GB
                      residential_address:
                        address:
                          line1: 49 Featherstone Street
                          line2: London
                          post_code: WR1 1NL
                          country: GB
                  registered_contact:
                    title: MR
                    surname: Ian
                    given_names: Miggins
                    date_of_birth: '1970-12-25'
                    country_of_birth: GB
                    gender: MALE
                    nationalities:
                      - GB
                    tax_residencies:
                      - country: GB
                      - country: AU
                        tax_id: '12345678'
                    nino: QQ123456A
                    investor_category: RETAIL
                    mobile_number:
                      country: GB
                      number: '07700900000'
                    landline_number:
                      country: GB
                      number: '02079460001'
                    email_address: example@mail.com
                    residential_address:
                      address:
                        line1: 49 Featherstone Street
                        line2: London
                        post_code: WR1 1NL
                        country: GB
                    postal_address:
                      address:
                        line1: 49 Featherstone Street
                        line2: London
                        post_code: WR1 1NL
                        country: GB
      responses:
        '201':
          description: Created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrePopulationResponse'
              examples:
                adult:
                  summary: Adult portfolio
                  value:
                    id: 012345ab-cdef-ghij-klmn-opqrstuvwxyz
                    adviser_id: '123456789'
                    name: Ian Miggins created on 12/05/2026 00:00:00
                    data:
                      investors:
                        - title: MR
                          surname: Miggins
                          given_names: Ian
                          previous_name: ''
                          date_of_birth: '1970-12-25'
                          country_of_birth: GB
                          gender: MALE
                          nationalities:
                            - GB
                          tax_residencies:
                            - country: GB
                              tax_id: ''
                            - country: AU
                              tax_id: '12345678'
                          nino: QQ123456A
                          investor_category: RETAIL
                          mobile_number:
                            country: GB
                            number: '07700900000'
                          landline_number:
                            country: GB
                            number: '07700900001'
                          email_address: example@mail.com
                          residential_address:
                            address:
                              line1: 1 Washington Street
                              line2: Worcester
                              line3: ''
                              post_code: WR1 1NL
                              country: GB
                          postal_address:
                            care_of: Ian Miggins
                            address:
                              line1: 1 Washington Street
                              line2: Worcester
                              line3: ''
                              post_code: WR1 1NL
                              country: GB
                      registered_contact: null
                      bank_account:
                        sort_code: '123456'
                        account_number: '12345678'
                        account_name_or_roll_number: Ian Miggins
                        is_building_society: false
                    _links:
                      - href: https://demo.transact-online.co.uk/hub/prepop-apps/012345ab-cdef-ghij-klmn-opqrstuvwxyz
                        rel: html
                        method: GET
                        description: The URL to access the newly created illustration within Transact Online
                joint:
                  summary: Joint portfolio
                  value:
                    id: 234567abc-defg-hijk-lmno-pqrstuvwxyz
                    adviser_id: '123456789'
                    name: Ian Miggins & Pamela Miggins created on 12/05/2026 00:00:00
                    data:
                      investors:
                        - title: MR
                          surname: Miggins
                          given_names: Ian
                          previous_name: ''
                          date_of_birth: '1970-12-25'
                          country_of_birth: GB
                          gender: MALE
                          nationalities:
                            - GB
                          tax_residencies:
                            - country: GB
                              tax_id: ''
                            - country: AU
                              tax_id: '123456782'
                          nino: QQ123456A
                          investor_category: RETAIL
                          mobile_number:
                            country: GB
                            number: '07700900000'
                          landline_number:
                            country: GB
                            number: '02079460000'
                          email_address: example@mail.com
                          residential_address:
                            address:
                              line1: 1 Washington Street
                              line2: Worcester
                              line3: ''
                              post_code: WR1 1NL
                              country: GB
                          postal_address:
                            care_of: Ian Miggins
                            address:
                              line1: 49 Featherstone Street
                              line2: London
                              line3: ''
                              post_code: WR1 1NL
                              country: GB
                        - title: MRS
                          surname: Miggins
                          given_names: Pamela
                          previous_name: Atkinson
                          date_of_birth: '1970-12-25'
                          country_of_birth: GB
                          gender: FEMALE
                          nationalities:
                            - GB
                          tax_residencies:
                            - country: GB
                              tax_id: ''
                            - country: AU
                              tax_id: '12354678'
                          nino: QQ123456C
                          investor_category: RETAIL
                          mobile_number:
                            country: GB
                            number: '07700900001'
                          landline_number:
                            country: GB
                            number: '02079460001'
                          email_address: example@mail.com
                          residential_address:
                            address:
                              line1: 49 Featherstone Street
                              line2: London
                              line3: ''
                              post_code: WR1 1NL
                              country: GB
                          postal_address:
                            care_of: ''
                            address:
                              line1: 49 Featherstone Street
                              line2: London
                              line3: ''
                              post_code: WR1 1NL
                              country: GB
                      registered_contact: null
                      bank_account:
                        sort_code: '123456'
                        account_number: '12345678'
                        account_name_or_roll_number: Ian Miggins
                        is_building_society: false
                    _links:
                      - href: https://demo.transact-online.co.uk/hub/prepop-apps/234567abc-defg-hijk-lmno-pqrstuvwxyz
                        rel: html
                        method: GET
                        description: The URL to access the newly created illustration within Transact Online
                child:
                  summary: Child portfolio
                  value:
                    id: 456789abc-defg-hijk-lmno-pqrstuvwxyz
                    adviser_id: '123456789'
                    name: Jack Miggins created on 12/05/2026 00:00:00
                    data:
                      investors:
                        - title: MR
                          surname: Miggins
                          given_names: Jack
                          previous_name: ''
                          date_of_birth: '2014-12-25'
                          country_of_birth: GB
                          gender: MALE
                          nationalities:
                            - GB
                          tax_residencies:
                            - country: GB
                              tax_id: ''
                          nino: ''
                          investor_category: null
                          mobile_number: null
                          landline_number: null
                          email_address: ''
                          residential_address:
                            address:
                              line1: 49 Featherstone Street
                              line2: London
                              line3: ''
                              post_code: WR1 1NL
                              country: GB
                          postal_address: null
                      registered_contact:
                        title: MR
                        surname: Ian
                        given_names: Miggins
                        previous_name: ''
                        date_of_birth: '1970-12-25'
                        country_of_birth: GB
                        gender: MALE
                        nationalities:
                          - GB
                        tax_residencies:
                          - country: GB
                            tax_id: ''
                          - country: AU
                            tax_id: '12345678'
                        nino: QQ123456A
                        investor_category: RETAIL
                        mobile_number:
                          country: GB
                          number: '07700900000'
                        landline_number:
                          country: GB
                          number: '02079460001'
                        email_address: example@mail.com
                        residential_address:
                          address:
                            line1: 49 Featherstone Street
                            line2: London
                            line3: ''
                            post_code: WR1 1NL
                            country: GB
                        postal_address:
                          care_of: ''
                          address:
                            line1: 49 Featherstone Street
                            line2: London
                            line3: ''
                            post_code: WR1 1NL
                            country: GB
                      bank_account: null
                    _links:
                      - href: https://demo.transact-online.co.uk/hub/prepop-apps/456789abc-defg-hijk-lmno-pqrstuvwxyz
                        rel: html
                        method: GET
                        description: The URL to access the newly created illustration within Transact Online
        default:
          $ref: '#/components/responses/ProblemResponse'
  /firms:
    get:
      summary: Get firms
      operationId: getFirms
      tags:
        - firms
      description: |
        Retrieves information about adviser firms associated with the Resource Owner.

        Note that in the UAT environment, this endpoint returns one firm per page.
        In the production environment each page contains multiple firms.
      security:
        - Oauth:
            - entity.read
      x-roles:
        - FIRM
        - NETWORK
        - INVESTMENT_MANAGER
      parameters:
        - $ref: '#/components/parameters/ApiVersion'
        - $ref: '#/components/parameters/Cursor'
      responses:
        '200':
          description: Retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FirmPage'
              example:
                items:
                  - id: '111111111'
                    name: Firm Company Ltd
                    fca_number: '1234567'
                    postcode: M11 1AA
                  - id: '222222222'
                    name: Adviser Company Ltd
                    fca_number: '2234567'
                    postcode: M11 1AB
                  - id: '333333333'
                    name: Adviser Firm Company Ltd
                    fca_number: '3234567'
                    postcode: M11 1AC
                self: 1234567abc-defg-hijk-lmno-pqrstuvwxyz
                first: 2234567abc-defg-hijk-lmno-pqrstuvwxyz
                prev: 334567abc-defg-hijk-lmno-pqrstuvwxyz
                next: 434567abc-defg-hijk-lmno-pqrstuvwxyz
                last: 534567abc-defg-hijk-lmno-pqrstuvwxyz
                query: {}
        default:
          $ref: '#/components/responses/ProblemResponse'
  /firms/{firm_id}:
    get:
      summary: Get a firm
      operationId: getFirmById
      tags:
        - firms
      description: |
        Retrieves information about an adviser firm. The firm must be associated with the Resource Owner.

        If the Resource Owner is itself an adviser firm, `self` can be used in place of the nine digit
        `firm_id` to return the Resource Owner's information.
      security:
        - Oauth:
            - entity.read
      x-roles:
        - FIRM
        - NETWORK
        - INVESTMENT_MANAGER
      parameters:
        - $ref: '#/components/parameters/ApiVersion'
        - name: firm_id
          in: path
          description: The firm's Transact number.
          required: true
          schema:
            $ref: '#/components/schemas/EntityIdOrSelf'
      responses:
        '200':
          description: Retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Firm'
              example:
                id: '111111111'
                name: Firm Company Ltd
                fca_number: '1234567'
                postcode: M11 1AA
        default:
          $ref: '#/components/responses/ProblemResponse'
  /remunerations:
    get:
      summary: Get remuneration
      operationId: getRemuneration
      tags:
        - remuneration
      description: |
        Retrieves remuneration data associated with the Resource Owner.

        Remuneration data is comprised of bank payments, underlying adviser payment transactions and wrapper details.

        When the optional `start_date` and `end_date` parameters are omitted, bank payments for the most recent payment date are returned.

        ### Notes
        A bank payment Transact makes to firm or network represents a collection of adviser payment transactions.

        There is a standard bank payment made for all firms that is paid on the 27th of each
        month, with further optional payments on the 7th and 17th. Bank holidays and weekends may cause variations
        to these dates.

        There are separate bank payments made for Offshore Bond related remuneration.

        A bank payment can be uniquely identified based on its `payee_id`, `source` and `date`.
        It contains a `breakdown` of adviser payment transactions. The reported transaction types are as follows:

        | **Type**         | **Description**                                                                                                                                      |
        | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
        | `ONGOING`        | An annual percentage based, or recurring amount based adviser payment.                                                                               |
        | `INITIAL`        | A percentage based adviser payment related to a specific deposit or transfer.                                                                        |
        | `AD_HOC`         | A one-off, amount based adviser payment.                                                                                                             |
        | `ADVISER_CREDIT` | An ad hoc refund or compensation payment paid by the firm to an investor.                                                                            |
        | `ADJUSTMENT`     | An adjustment made by Transact to an adviser's payment balance. The `investor_wrapper` value is `null`.                                              |
        | `INTEREST`       | Accrued interest related to cash holdings collected and reserved for payment to the adviser firm or network. The `investor_wrapper` value is `null`. |

        Data is prepared for consumption each weekday and remains static throughout the day. It is recommended that you request data after 6 am UK local time.
      security:
        - Oauth:
            - entity.read
            - transaction.read
      x-roles:
        - FIRM
        - NETWORK
      parameters:
        - $ref: '#/components/parameters/ApiVersion'
        - name: start_date
          in: query
          description: The first bank payment date. It must be within three months of today.
          required: false
          schema:
            type: string
            format: date
            example: '2024-06-02'
        - name: end_date
          in: query
          description: The last bank payment date. It must be within 31 days of the start date.
          required: false
          schema:
            type: string
            format: date
            example: '2024-07-01'
      responses:
        '200':
          description: Retrieved successfully.
          content:
            application/json:
              schema:
                type: array
                uniqueItems: true
                description: The list of bank payments.
                items:
                  $ref: '#/components/schemas/RemunerationBankPayment'
              example:
                - payee_id: '123456789'
                  payee_name: Adviser Firm
                  payee_fca_number: '123456'
                  source: ONSHORE
                  date: '2024-06-10'
                  amount: 100.35
                  breakdown:
                    - investor_wrapper:
                        id: IH00000001
                        type: PERSONAL_PENSION
                        investor_portfolio_id: '222333444'
                        investor_portfolio_name: Doe, John
                      type: ONGOING
                      amount: 100.35
                      is_vat: false
                      date: '2024-06-10'
                      adviser_id: '012345678'
                      adviser_name: Smith, John
                      firm_id: '987654321'
                      firm_name: Adviser Firm
                      firm_fca_number: '654321'
                - payee_id: '111222333'
                  payee_name: Adviser Network
                  payee_fca_number: '456789'
                  source: OFFSHORE
                  date: '2024-06-10'
                  amount: 150.32
                  breakdown:
                    - investor_wrapper: null
                      type: INTEREST
                      amount: 50.15
                      is_vat: false
                      date: '2024-06-10'
                      adviser_id: '012345678'
                      adviser_name: Smith, John
                      firm_id: '987654321'
                      firm_name: Adviser Firm
                      firm_fca_number: '654321'
                    - investor_wrapper:
                        id: IH00000002
                        type: GENERAL_INVESTMENT_ACCOUNT
                        investor_portfolio_id: '333444555'
                        investor_portfolio_name: Doe, Jane
                      type: ONGOING
                      amount: 100.17
                      is_vat: false
                      date: '2024-06-10'
                      adviser_id: '234567890'
                      adviser_name: John, Smith
                      firm_id: '987654321'
                      firm_name: Adviser Firm
                      firm_fca_number: '654321'
        default:
          $ref: '#/components/responses/ProblemResponse'
  /investor-portfolios:
    get:
      summary: Get investor portfolios
      operationId: getInvestorPortfolios
      tags:
        - investors
      description: |
        Retrieves open investor portfolios associated with the Resource Owner, along with underlying personal data.

        Open portfolios are defined as those with at least one open wrapper.

        For `INDIVIDUAL` and `JOINT` portfolios, identifying personal information for the individual investors is provided.
        For `CORPORATE` and `TRUST` portfolios, a legal entity identifier is provided.

        Note that in the UAT environment, this endpoint returns one investor portfolio per page.
        In the production environment each page contains multiple investor portfolios.
      security:
        - Oauth:
            - investor-personal.read
      x-roles:
        - FIRM
        - NETWORK
      parameters:
        - $ref: '#/components/parameters/ApiVersion'
        - $ref: '#/components/parameters/Cursor'
        - name: firm_ids
          in: query
          description: The list of firm Transact numbers to filter on.
          required: false
          style: form
          explode: false
          schema:
            type: array
            uniqueItems: true
            items:
              $ref: '#/components/schemas/EntityId'
            maxItems: 50
          example:
            - '123456789'
            - '987654321'
        - name: adviser_ids
          in: query
          description: The list of adviser Transact numbers to filter on.
          required: false
          style: form
          explode: false
          schema:
            type: array
            uniqueItems: true
            items:
              $ref: '#/components/schemas/EntityId'
            maxItems: 50
          example:
            - '123456789'
            - '987654321'
        - name: investor_portfolio_ids
          in: query
          description: The list of investor Transact numbers to filter on.
          required: false
          style: form
          explode: false
          schema:
            type: array
            uniqueItems: true
            items:
              $ref: '#/components/schemas/EntityId'
            maxItems: 50
          example:
            - '123456789'
            - '987654321'
      responses:
        '200':
          description: Retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvestorPortfolioPage'
              example:
                items:
                  - id: '000000001'
                    adviser_id: '000000002'
                    firm_id: '000000003'
                    name: Miggins, Jennifer
                    type: INDIVIDUAL
                    individuals:
                      - id: IDN123456789012
                        surname: Miggins
                        given_names: Jennifer
                        date_of_birth: '2000-12-25'
                        nino: QQ123456C
                    corporation: null
                    trust: null
                  - id: '000000004'
                    adviser_id: '000000005'
                    firm_id: '000000006'
                    name: Miggins, Rory & Miggins, John
                    type: JOINT
                    individuals:
                      - id: IDN123456789013
                        surname: Miggins
                        given_names: Rory
                        date_of_birth: '2000-12-21'
                        nino: QQ123456C
                      - id: IDN123456789014
                        surname: Miggins
                        given_names: John
                        date_of_birth: '2000-11-23'
                        nino: QQ123456D
                    corporation: null
                    trust: null
                  - id: '000000007'
                    adviser_id: '000000008'
                    firm_id: '000000009'
                    name: Miggins Holding
                    type: CORPORATE
                    individuals: []
                    corporation:
                      legal_entity_identifier: 1234567890ABCDEFGH12
                    trust: null
                  - id: '000000010'
                    adviser_id: '000000011'
                    firm_id: '000000012'
                    name: Miggins Family Trust
                    type: TRUST
                    individuals: []
                    corporation: null
                    trust:
                      legal_entity_identifier: 1234567890ABCDEFGH13
                self: 1234567abc-defg-hijk-lmno-pqrstuvwxyz
                first: 2234567abc-defg-hijk-lmno-pqrstuvwxyz
                prev: 334567abc-defg-hijk-lmno-pqrstuvwxyz
                next: 434567abc-defg-hijk-lmno-pqrstuvwxyz
                last: 534567abc-defg-hijk-lmno-pqrstuvwxyz
                query: {}
        default:
          $ref: '#/components/responses/ProblemResponse'
  /investor-portfolios/{investor_portfolio_id}:
    get:
      summary: Get an investor portfolio
      operationId: getInvestorPortfolioById
      tags:
        - investors
      description: |
        Retrieves an open investor portfolio associated with the Resource Owner, along with underlying personal data.

        Open portfolios are defined as those with at least one open wrapper.

        For `INDIVIDUAL` and `JOINT` portfolios, identifying personal information for the individual investors is provided.
        For `CORPORATE` and `TRUST` portfolios, a legal entity identifier is provided.
      security:
        - Oauth:
            - investor-personal.read
      x-roles:
        - FIRM
        - NETWORK
      parameters:
        - $ref: '#/components/parameters/ApiVersion'
        - name: investor_portfolio_id
          in: path
          description: The investor's Transact number.
          required: true
          schema:
            $ref: '#/components/schemas/EntityId'
      responses:
        '200':
          description: Retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvestorPortfolio'
              examples:
                individual:
                  summary: Individual portfolio
                  value:
                    id: '000000001'
                    adviser_id: '000000002'
                    firm_id: '000000003'
                    name: Miggins, Jennifer
                    type: INDIVIDUAL
                    individuals:
                      - id: IDN123456789012
                        surname: Miggins
                        given_names: Jennifer
                        date_of_birth: '2000-12-25'
                        nino: QQ123456C
                    corporation: null
                    trust: null
                joint:
                  summary: Joint portfolio
                  value:
                    id: '000000004'
                    adviser_id: '000000005'
                    firm_id: '000000006'
                    name: Miggins, Rory & Miggins, John
                    type: JOINT
                    individuals:
                      - id: IDN123456789013
                        surname: Miggins
                        given_names: Rory
                        date_of_birth: '2000-12-21'
                        nino: QQ123456C
                      - id: IDN123456789014
                        surname: Miggins
                        given_names: John
                        date_of_birth: '2000-11-23'
                        nino: QQ123456D
                    corporation: null
                    trust: null
                corporate:
                  summary: Corporate portfolio
                  value:
                    id: '000000007'
                    adviser_id: '000000008'
                    firm_id: '000000009'
                    name: Miggins Holding
                    type: CORPORATE
                    individuals: []
                    corporation:
                      legal_entity_identifier: 1234567890ABCDEFGH12
                    trust: null
                trust:
                  summary: Trust portfolio
                  value:
                    id: '000000010'
                    adviser_id: '000000011'
                    firm_id: '000000012'
                    name: Miggins Family Trust
                    type: TRUST
                    individuals: []
                    corporation: null
                    trust:
                      legal_entity_identifier: 1234567890ABCDEFGH13
        default:
          $ref: '#/components/responses/ProblemResponse'
  /valuations:
    get:
      summary: Get valuations
      operationId: getValuations
      tags:
        - valuations
      description: |
        Retrieves investor portfolio valuation data for portfolios associated with the Resource Owner.

        Data is as of the end of the previous business day.

        ### Notes

        Wrappers (and holdings) are included where any of the following conditions are met:
        * The wrapper is `OPEN` or `CLOSING`
        * The wrapper is `CLOSED` and
          * it was closed within the last 30 days
          * or a transaction was added within the last 30 days
          * or a holding exists

        Current wrapper state (`OPEN`, `CLOSING`, `CLOSED`) and effective dates for each state is provided.

        Optionally `firm_ids`, `adviser_ids` and `investor_portfolio_ids` may be specified.

        Optionally `exclude_closed_portfolios` may be specified. If `true`, this overrides the above conditional logic. Portfolios where all contained wrappers are `CLOSED` are excluded.

        Optionally `exclude_empty_gias` may be specified. If `true`, General Investment Account wrappers (GIAs) that have no transactions are excluded.

        Data is prepared for consumption each weekday and remains static throughout the day. It is recommended that you request data after 6 am UK local time.

        Note that in the UAT environment, this endpoint returns one investor portfolio per page.
        In the production environment each page contains multiple investor portfolios.
      security:
        - Oauth:
            - valuation.read
            - entity.read
      x-roles:
        - FIRM
        - NETWORK
      parameters:
        - $ref: '#/components/parameters/ApiVersion'
        - $ref: '#/components/parameters/Cursor'
        - name: exclude_closed_portfolios
          in: query
          description: |
            Option to suppress portfolios where all contained wrappers are `CLOSED`. Default value is `false`.
          schema:
            type: boolean
            default: false
        - name: exclude_empty_gias
          in: query
          description: Option to suppress GIAs that contain no transactions. Default value is `false`.
          schema:
            type: boolean
            default: false
        - name: firm_ids
          in: query
          description: The list of firm Transact numbers to filter on.
          required: false
          style: form
          explode: false
          schema:
            type: array
            uniqueItems: true
            items:
              $ref: '#/components/schemas/EntityId'
            maxItems: 50
          example:
            - '123456789'
            - '987654321'
        - name: adviser_ids
          in: query
          description: The list of adviser Transact numbers to filter on.
          required: false
          style: form
          explode: false
          schema:
            type: array
            uniqueItems: true
            items:
              $ref: '#/components/schemas/EntityId'
            maxItems: 50
          example:
            - '123456789'
            - '987654321'
        - name: investor_portfolio_ids
          in: query
          description: The list of investor Transact numbers to filter on.
          required: false
          style: form
          explode: false
          schema:
            type: array
            uniqueItems: true
            items:
              $ref: '#/components/schemas/EntityId'
            maxItems: 50
          example:
            - '123456789'
            - '987654321'
      responses:
        '200':
          description: Retrieved Successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValuationPage'
              example:
                items:
                  - id: '333333331'
                    adviser_id: '222222221'
                    firm_id: '111111111'
                    wrappers:
                      - id: IH00000001
                        type: GENERAL_INVESTMENT_ACCOUNT
                        name: Savings for John
                        status: OPEN
                        opening_date: '2024-01-31'
                        closing_date: null
                        closed_date: null
                        holdings:
                          - investment_id: IP00000002
                            investment_name: Cash
                            isin: ''
                            is_cash: true
                            price: 1
                            price_date: '2000-03-15'
                            units: 100.95
                          - investment_id: IP12345678
                            investment_name: Investments Ltd
                            isin: GB1234567890
                            is_cash: false
                            price: 1.1234
                            price_date: '2025-01-30'
                            units: 200.1234
                      - id: IH00000002
                        type: ISA_STOCKS_AND_SHARES
                        name: ''
                        status: OPEN
                        opening_date: '2024-01-31'
                        closing_date: null
                        closed_date: null
                        holdings:
                          - investment_id: IP12345678
                            investment_name: Investments Ltd
                            isin: GB1234567890
                            is_cash: false
                            price: 1.1234
                            price_date: '2025-01-30'
                            units: 200.1234
                      - id: IH00000003
                        type: GENERAL_INVESTMENT_ACCOUNT
                        name: ''
                        status: CLOSING
                        opening_date: '2023-01-31'
                        closing_date: '2025-01-31'
                        closed_date: null
                        holdings: []
                      - id: IH00000004
                        type: GENERAL_INVESTMENT_ACCOUNT
                        name: ''
                        status: CLOSED
                        opening_date: '2023-01-31'
                        closing_date: '2025-01-31'
                        closed_date: '2025-02-01'
                        holdings: []
                self: 1234567abc-defg-hijk-lmno-pqrstuvwxyz
                first: 2234567abc-defg-hijk-lmno-pqrstuvwxyz
                prev: 334567abc-defg-hijk-lmno-pqrstuvwxyz
                next: 434567abc-defg-hijk-lmno-pqrstuvwxyz
                last: 534567abc-defg-hijk-lmno-pqrstuvwxyz
                query: {}
        default:
          $ref: '#/components/responses/ProblemResponse'
components:
  securitySchemes:
    Oauth:
      type: oauth2
      description: |
        Transact uses OAuth 2.0, an industry standard protocol that allows an end user to authorise an
        application to perform certain actions on behalf of the user, without the user's credentials
        being shared with the application itself.
      flows:
        authorizationCode:
          authorizationUrl: https://auth.transact-online.co.uk
          tokenUrl: https://auth.transact-online.co.uk/token
          refreshUrl: https://auth.transact-online.co.uk/token
          scopes:
            investor-personal.read: View clients' personal data and contact information
            investor-illustration-profile: |
              View, add, edit, delete temporary client profiles for use within
              illustrations/applications
            transaction.read: View client transactions
            valuation.read: View client valuations
            model.read: View templates
            model: View, add, edit, delete templates
            entity.read: |
              View basic wrapper, client, adviser, firm, investment manager information
              (excluding clients' personal data and contact information)
            metadata.read: |
              View Transact's available investments, ceding parties and other common platform data
  parameters:
    ApiVersion:
      name: Transact-Api-Version
      in: header
      required: true
      description: The targeted API version. This must be set to the current version of the API.
      schema:
        type: string
        enum:
          - '2026-05-12'
      examples:
        current:
          description: Use Transact API version 2026-05-12.
          value: '2026-05-12'
    Cursor:
      name: cursor
      in: query
      description: |
        Opaque cursor to the result page to include in the response. Appropriate values for this field may be retrieved
        from a response object's `first`, `prev`, `next`, `last`, and `self` fields.
      style: form
      schema:
        type: string
  schemas:
    Address:
      type: object
      required:
        - line1
        - line2
        - post_code
        - country
      properties:
        line1:
          $ref: '#/components/schemas/NonPaddedString'
          description: The first line of the address.
          minLength: 1
          maxLength: 60
        line2:
          $ref: '#/components/schemas/NonPaddedString'
          description: The second line of the address.
          minLength: 1
          maxLength: 60
        line3:
          $ref: '#/components/schemas/NonPaddedString'
          description: The third line of the address.
          maxLength: 60
        post_code:
          $ref: '#/components/schemas/NonPaddedString'
          description: The postcode of the address.
          minLength: 1
          maxLength: 10
        country:
          $ref: '#/components/schemas/CountryCode'
    Adviser:
      type: object
      required:
        - id
        - surname
        - given_names
        - fca_number
        - firm_id
      properties:
        id:
          $ref: '#/components/schemas/EntityId'
          description: The adviser's Transact number.
        surname:
          type: string
          description: The surname of the adviser.
          example: Miggins
        given_names:
          type: string
          description: All given names of the adviser.
          example: John
        fca_number:
          type: string
          description: The adviser's Identity Reference Number (IRN).
          example: ABC12345
        firm_id:
          $ref: '#/components/schemas/EntityId'
          description: The firm's Transact number.
    AdviserPage:
      allOf:
        - $ref: '#/components/schemas/Page'
        - type: object
          required:
            - items
          properties:
            items:
              type: array
              description: The list of advisers.
              items:
                $ref: '#/components/schemas/Adviser'
    BankAccount:
      type: object
      required:
        - sort_code
        - account_number
        - account_name_or_roll_number
        - is_building_society
      properties:
        sort_code:
          type: string
          pattern: ^[0-9]{6}$
          description: The sort code of the bank account.
          example: '123456'
        account_number:
          type: string
          pattern: ^[0-9]{8}$
          description: The account number of the bank account.
          example: '12345678'
        account_name_or_roll_number:
          $ref: '#/components/schemas/NonPaddedString'
          description: The bank account name or building society roll number.
          minLength: 1
          maxLength: 32
          example: Ian Miggins
        is_building_society:
          type: boolean
          description: Boolean to specify whether the account represents a building society account.
    CountryCode:
      type: string
      pattern: ^[A-Z]{2}$
      description: The country must be a valid ISO 3166-1 alpha-2 country code.
      example: GB
    EntityId:
      type: string
      pattern: ^[0-9]{9}$
      example: '123456789'
    EntityIdOrSelf:
      type: string
      pattern: ^([0-9]{9}|self)$
      example: '123456789'
    FcaNumber:
      type: string
      description: The Firm Reference Number (FRN).
      pattern: ^[0-9]{6,7}$
      example: '1234567'
    Firm:
      type: object
      required:
        - id
        - name
        - fca_number
        - postcode
      properties:
        id:
          $ref: '#/components/schemas/EntityId'
          description: The firm's Transact number.
        name:
          type: string
          description: The name of the firm.
          example: Firm Company Ltd
        fca_number:
          $ref: '#/components/schemas/FcaNumber'
          description: The firm's Firm Reference Number (FRN).
        postcode:
          type: string
          description: The firm's postcode.
          example: M11 1AA
    FirmPage:
      allOf:
        - $ref: '#/components/schemas/Page'
        - type: object
          required:
            - items
          properties:
            items:
              type: array
              description: The list of firms.
              items:
                $ref: '#/components/schemas/Firm'
    Gender:
      type: string
      examples:
        - MALE
        - FEMALE
        - UNDISCLOSED
      x-restricted-values: true
    Holding:
      type: object
      required:
        - investment_id
        - investment_name
        - isin
        - is_cash
        - price
        - price_date
        - units
      properties:
        investment_id:
          type: string
          description: Transact's unique identifier for the investment.
          example: IP12345678
        investment_name:
          type: string
          description: The investment name.
          example: Investment Ltd
        isin:
          $ref: '#/components/schemas/Isin'
        is_cash:
          type: boolean
          description: True for Cash (GBP).
        price:
          type: number
          format: decimal
          description: The price of the investment.
          example: 1.1234
        price_date:
          type: string
          description: The date of the investment price.
          format: date
          example: '2025-06-30'
        units:
          type: number
          format: decimal
          description: The number of units held.
          example: 100.1234
    InvestorCategory:
      type: string
      enum:
        - RETAIL
        - PROFESSIONAL
    InvestorPortfolio:
      type: object
      required:
        - id
        - name
        - type
        - firm_id
        - adviser_id
        - individuals
        - trust
        - corporation
      properties:
        id:
          $ref: '#/components/schemas/EntityId'
          description: The investor's Transact number.
        adviser_id:
          $ref: '#/components/schemas/EntityId'
          description: The adviser's Transact number.
        firm_id:
          $ref: '#/components/schemas/EntityId'
          description: The firm's Transact number.
        name:
          type: string
          description: The investor's portfolio name.
          example: Miggins, Jennifer
        type:
          type: string
          description: The type of the investor portfolio.
          enum:
            - INDIVIDUAL
            - JOINT
            - CORPORATE
            - TRUST
        individuals:
          type: array
          description: Included for `INDIVIDUAL` and `JOINT` portfolio, otherwise empty.
          uniqueItems: true
          items:
            $ref: '#/components/schemas/InvestorPortfolioIndividual'
        trust:
          anyOf:
            - type: object
              description: Included for `TRUST` portfolio, otherwise null.
              required:
                - legal_entity_identifier
              properties:
                legal_entity_identifier:
                  type: string
                  description: Legal Entity Identifier, in accordance with the ISO 17442 standard.
                  example: 1234567890ABCDEFGH12
            - type: 'null'
        corporation:
          anyOf:
            - type: object
              description: Included for `CORPORATE` portfolio, otherwise null.
              required:
                - legal_entity_identifier
              properties:
                legal_entity_identifier:
                  type: string
                  description: Legal Entity Identifier, in accordance with the ISO 17442 standard.
                  example: 1234567890ABCDEFGH12
            - type: 'null'
    InvestorPortfolioIndividual:
      type: object
      required:
        - id
        - surname
        - given_names
        - date_of_birth
        - nino
      properties:
        id:
          type: string
          description: Transact's unique identifier for the individual.
          example: IDN123456789012
        surname:
          type: string
          description: The surname of the individual.
          example: Miggins
        given_names:
          type: string
          description: All given names of the individual.
          example: John Rory
        date_of_birth:
          type: string
          format: date
          description: The date of birth of the individual.
          example: '2000-12-25'
        nino:
          type: string
          description: The National Insurance number (NINO) of the individual.
          example: QQ123456C
    InvestorPortfolioPage:
      allOf:
        - $ref: '#/components/schemas/Page'
        - type: object
          required:
            - items
          properties:
            items:
              type: array
              description: The list of investor portfolios.
              items:
                $ref: '#/components/schemas/InvestorPortfolio'
    Isin:
      type: string
      description: |
        The International Securities Identification Number of the investment, in accordance with the  ISO 6166 standard.
      maxLength: 12
      example: GB1234567890
    Link:
      type: object
      required:
        - href
        - rel
        - method
        - description
      properties:
        href:
          type: string
          description: The URL of the link.
        rel:
          type: string
          description: The relationship of the link to the resource.
        method:
          type: string
          description: The HTTP method that should be used for the link.
        description:
          type: string
          description: The description of the link.
    NonPaddedString:
      type: string
      pattern: ^([^ \t\n\r](.*[^ \t\n\r])?)?$
    Page:
      type: object
      properties:
        self:
          type: string
          description: Pagination cursor pointing to the current page.
          format: cursor
        first:
          type: string
          description: Pagination cursor pointing to the first page.
          format: cursor
        prev:
          type: string
          description: Pagination cursor pointing to the previous page.
          format: cursor
        next:
          type: string
          description: Pagination cursor pointing to the next page.
          format: cursor
        last:
          type: string
          description: Pagination cursor pointing to the last page.
          format: cursor
        query:
          type: object
          description: Object containing the applied query filters.
          additionalProperties: true
    PhoneNumber:
      type: object
      required:
        - country
        - number
      properties:
        country:
          $ref: '#/components/schemas/CountryCode'
        number:
          type: string
          pattern: ^[0-9]{3,20}$
          description: The phone number, excluding country prefix.
          example: '02079460000'
    PostalAddress:
      type: object
      required:
        - address
      properties:
        care_of:
          $ref: '#/components/schemas/NonPaddedString'
          description: The care of addressee name.
          maxLength: 40
        address:
          $ref: '#/components/schemas/Address'
    PrePopulationIllustrationData:
      type: object
      required:
        - investors
        - registered_contact
        - bank_account
      properties:
        investors:
          type: array
          description: |
            The list of applicants.
          items:
            $ref: '#/components/schemas/PrePopulationIndividual'
        registered_contact:
          anyOf:
            - $ref: '#/components/schemas/PrePopulationIndividual'
            - type: 'null'
          description: Details of the Registered Contact.
        bank_account:
          anyOf:
            - $ref: '#/components/schemas/BankAccount'
            - type: 'null'
          description: The bank account information for the portfolio.
    PrePopulationIndividual:
      type: object
      description: The individual details.
      required:
        - title
        - surname
        - given_names
        - previous_name
        - date_of_birth
        - country_of_birth
        - gender
        - nationalities
        - tax_residencies
        - nino
        - investor_category
        - mobile_number
        - landline_number
        - email_address
        - residential_address
        - postal_address
      properties:
        title:
          $ref: '#/components/schemas/Salutation'
          description: The title of the individual.
        surname:
          $ref: '#/components/schemas/NonPaddedString'
          description: The surname of the individual.
          example: Miggins
        given_names:
          $ref: '#/components/schemas/NonPaddedString'
          description: All given names of the individual.
        previous_name:
          $ref: '#/components/schemas/NonPaddedString'
          description: The previous/maiden name of the individual.
          example: Atkinson
        date_of_birth:
          type: string
          format: date
          description: The date of birth of the individual.
          example: '2000-12-25'
        country_of_birth:
          $ref: '#/components/schemas/CountryCode'
        gender:
          anyOf:
            - $ref: '#/components/schemas/Gender'
            - type: 'null'
          description: The gender of the individual.
        nationalities:
          type: array
          description: The nationalities of the individual.
          items:
            $ref: '#/components/schemas/CountryCode'
          uniqueItems: true
        tax_residencies:
          type: array
          description: The tax residencies of the individual.
          items:
            $ref: '#/components/schemas/TaxResidency'
          uniqueItems: true
        nino:
          $ref: '#/components/schemas/NonPaddedString'
          description: The National Insurance Number (NINO) of the individual.
          example: QQ123456C
        investor_category:
          anyOf:
            - $ref: '#/components/schemas/InvestorCategory'
            - type: 'null'
          description: The category of the investor.
        mobile_number:
          anyOf:
            - $ref: '#/components/schemas/PhoneNumber'
            - type: 'null'
          description: The mobile phone number of the individual.
        landline_number:
          anyOf:
            - $ref: '#/components/schemas/PhoneNumber'
            - type: 'null'
          description: The landline phone number of the individual.
        email_address:
          $ref: '#/components/schemas/NonPaddedString'
          description: The email address of the individual.
        residential_address:
          anyOf:
            - $ref: '#/components/schemas/ResidentialAddress'
            - type: 'null'
          description: The residential address of the individual.
        postal_address:
          anyOf:
            - $ref: '#/components/schemas/PostalAddress'
            - type: 'null'
          description: The postal address of the individual.
    PrePopulationRequestIllustrationData:
      type: object
      required:
        - investors
      properties:
        investors:
          type: array
          description: |
            The list of applicants.
              - If one adult individual is provided, an adult portfolio can be created.
              - If two adult individuals are provided, both a joint portfolio and individual
              portfolios can be created.
              - If one child individual is provided, a child portfolio will be created.
          items:
            $ref: '#/components/schemas/PrePopulationRequestIndividual'
          minItems: 1
          maxItems: 2
        registered_contact:
          $ref: '#/components/schemas/PrePopulationRequestIndividual'
          description: |
            Details of the Registered Contact. Only relevant for a child portfolio and is
              ignored where supplied for adult applicant(s).
        bank_account:
          $ref: '#/components/schemas/BankAccount'
          description: |
            The bank account information for the portfolio. Ignored where supplied for a child applicant.
    PrePopulationRequestIndividual:
      type: object
      description: The individual details.
      required:
        - title
        - surname
        - given_names
        - date_of_birth
      properties:
        title:
          $ref: '#/components/schemas/Salutation'
          description: The title of the individual.
        surname:
          $ref: '#/components/schemas/NonPaddedString'
          description: The surname of the individual as it appears in passport.
          minLength: 1
          maxLength: 40
          example: Miggins
        given_names:
          $ref: '#/components/schemas/NonPaddedString'
          description: All given names of the individual as they appear in passport including middle names.
          minLength: 1
          maxLength: 40
        previous_name:
          $ref: '#/components/schemas/NonPaddedString'
          description: The previous/maiden name of the individual.
          maxLength: 40
          example: Atkinson
        date_of_birth:
          type: string
          format: date
          description: |
            The date of birth of the individual. The date must be between 1900-01-01 and present, excluding any future dates.
          example: '2000-12-25'
        country_of_birth:
          $ref: '#/components/schemas/CountryCode'
        gender:
          $ref: '#/components/schemas/Gender'
          description: The gender of the individual.
        nationalities:
          type: array
          description: The nationalities of the individual.
          items:
            $ref: '#/components/schemas/CountryCode'
          minItems: 0
          maxItems: 4
          uniqueItems: true
        tax_residencies:
          type: array
          description: The tax residencies of the individual.
          items:
            $ref: '#/components/schemas/TaxResidency'
          minItems: 0
          maxItems: 4
          uniqueItems: true
        nino:
          $ref: '#/components/schemas/NonPaddedString'
          description: |
            The National Insurance Number (NINO) of the individual. Ignored where supplied for a child applicant.
          minLength: 9
          maxLength: 9
          example: QQ123456C
        investor_category:
          $ref: '#/components/schemas/InvestorCategory'
          description: The category of the investor. Ignored where supplied for a child applicant.
        mobile_number:
          $ref: '#/components/schemas/PhoneNumber'
          description: |
            The mobile phone number of the individual. Ignored where supplied for a child applicant.
        landline_number:
          $ref: '#/components/schemas/PhoneNumber'
          description: |
            The landline phone number of the individual. Ignored where supplied for a child applicant.
        email_address:
          $ref: '#/components/schemas/NonPaddedString'
          format: email
          description: The email address of the individual. Ignored where supplied for a child applicant.
          maxLength: 80
        residential_address:
          $ref: '#/components/schemas/ResidentialAddress'
          description: The residential address of the individual.
        postal_address:
          $ref: '#/components/schemas/PostalAddress'
          description: |
            The postal address of the individual. Ignored where supplied for a child applicant.
    PrePopulationResponse:
      type: object
      description: The response body which contains an Illustration object.
      required:
        - id
        - adviser_id
        - name
        - data
        - _links
      properties:
        id:
          type: string
          description: The id of the illustration created.
        adviser_id:
          $ref: '#/components/schemas/EntityId'
          description: The adviser's Transact number.
        name:
          type: string
          description: |
            The illustration name consists of the investor names and date time of the illustration created.
          example: Ian Miggins created on 25/12/2024 00:00:00
        data:
          $ref: '#/components/schemas/PrePopulationIllustrationData'
        _links:
          type: array
          uniqueItems: true
          description: The URIs relevant to the Account Opening API.
          items:
            $ref: '#/components/schemas/Link'
    Problem:
      type: object
      description: |
        Information about a problem. Problems are general and may encapsulate multiple
        underlying errors.
      required:
        - type
        - title
        - detail
        - status
        - request_id
      properties:
        type:
          type: string
          description: The unique identifier for the problem type.
        title:
          type: string
          description: A human-readable summary of the problem type.
        detail:
          type: string
          description: A human-readable description of this occurrence of the problem.
        status:
          type: integer
          description: The HTTP status code corresponding to the problem.
          minimum: 100
          maximum: 599
        request_id:
          type: string
          description: The unique ID for the request, used for troubleshooting.
        errors:
          type: array
          description: Individual errors contributing to the overall problem.
          items:
            $ref: '#/components/schemas/ProblemError'
      example:
        type: /problems/an_error_code
        title: An Error
        detail: Specific detail of the error
        status: 123
        request_id: 8c25076679d0339b273037447ab26aea
    ProblemError:
      type: object
      required:
        - detail
      description: Information about a single error.
      properties:
        detail:
          type: string
          description: An explanation of this specific error.
        pointer:
          type: string
          description: A JSONPath expression to the affected part of the request body.
        parameter:
          type: string
          description: The name of the affected parameter.
    RemunerationBankPayment:
      type: object
      required:
        - payee_id
        - payee_name
        - payee_fca_number
        - source
        - date
        - amount
        - breakdown
      properties:
        payee_id:
          $ref: '#/components/schemas/EntityId'
          description: The payee's Transact number.
        payee_name:
          type: string
          description: The name of the payee.
          example: Adviser Firm
        payee_fca_number:
          type: string
          description: The FCA number of the payee.
          example: '1234567'
        source:
          type: string
          enum:
            - ONSHORE
            - OFFSHORE
          description: Whether the bank payment relates to onshore or offshore remuneration.
        date:
          type: string
          format: date
          description: Date of the bank payment.
          example: '2024-06-10'
        amount:
          type: number
          format: decimal
          description: Amount of the bank payment.
          example: 100
        breakdown:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/RemunerationTransaction'
    RemunerationTransaction:
      type: object
      required:
        - type
        - amount
        - is_vat
        - date
        - adviser_id
        - adviser_name
        - firm_id
        - firm_name
        - firm_fca_number
        - investor_wrapper
      properties:
        investor_wrapper:
          anyOf:
            - $ref: '#/components/schemas/RemunerationWrapper'
            - type: 'null'
        type:
          type: string
          description: Transaction type.
          enum:
            - ONGOING
            - INITIAL
            - AD_HOC
            - ADVISER_CREDIT
            - ADJUSTMENT
            - INTEREST
        amount:
          type: number
          format: decimal
          description: Transaction amount.
          example: 100
        is_vat:
          type: boolean
          description: Whether the transaction represents a VAT adjustment.
        date:
          type: string
          format: date
          description: Date of the transaction.
          example: '2024-06-10'
        adviser_id:
          $ref: '#/components/schemas/EntityId'
          description: The adviser's Transact number.
        adviser_name:
          type: string
          description: Name of the associated adviser.
          example: Smith, John
        firm_id:
          $ref: '#/components/schemas/EntityId'
          description: The firm's Transact number.
        firm_name:
          type: string
          description: Name of the associated adviser firm.
          example: Adviser Firm
        firm_fca_number:
          type: string
          description: FCA number of the associated adviser firm.
          example: '1234567'
    RemunerationWrapper:
      type: object
      description: Details of the associated Wrapper.
      required:
        - id
        - type
        - investor_portfolio_id
        - investor_portfolio_name
      properties:
        id:
          type: string
          description: The unique identifier for the wrapper, known as a Transact 'Wrapper Ref'.
          example: IH00000001
        type:
          $ref: '#/components/schemas/WrapperType'
        investor_portfolio_id:
          $ref: '#/components/schemas/EntityId'
          description: The investor portfolio's Transact number.
        investor_portfolio_name:
          type: string
          description: The name of the investor portfolio.
          example: Doe, John
    ResidentialAddress:
      type: object
      required:
        - address
      properties:
        address:
          $ref: '#/components/schemas/Address'
    Salutation:
      type: string
      examples:
        - MR
        - MRS
        - MISS
        - MS
        - DOCTOR
        - PROFESSOR
        - THE_REVEREND
        - MASTER
        - LADY
        - SIR
        - MAJOR
        - CAPTAIN
        - LORD
        - LIEUTENANT_COLONEL
        - COMMANDER
        - COLONEL
        - THE_HONOURABLE
        - MAJOR_GENERAL
        - BRIGADIER
        - BARONESS
        - CANON
        - ALDERMAN
        - LIEUTENANT_COMMANDER
        - THE_RIGHT_HONOURABLE
        - THE_RIGHT_REVEREND
        - VISCOUNT
        - COUNTESS
        - PROFESSOR_SIR
        - SQUADRON_LEADER
        - THE_VERY_REVEREND
        - VISCOUNTESS
        - DAME
        - GENERAL
        - MARQUESS
        - SERGEANT
        - THE_VENERABLE
        - COUNT
        - FATHER
        - LIEUTENANT
        - REAR_ADMIRAL
        - RABBI
        - MX
        - COMMODORE
        - MARQUIS
        - ADMIRAL
        - VICE_ADMIRAL
      x-restricted-values: true
    TaxResidency:
      type: object
      required:
        - country
      properties:
        country:
          $ref: '#/components/schemas/CountryCode'
        tax_id:
          $ref: '#/components/schemas/NonPaddedString'
          description: |
            The tax identification number of the investor. Only relevant for a non GB country, tax identification will be ignored if provided for GB country.
          maxLength: 40
    ValuationPage:
      allOf:
        - $ref: '#/components/schemas/Page'
        - type: object
          required:
            - items
          properties:
            items:
              type: array
              description: The list of investor portfolios.
              items:
                $ref: '#/components/schemas/ValuationPortfolio'
    ValuationPortfolio:
      type: object
      description: Details of the investor portfolio.
      required:
        - id
        - adviser_id
        - firm_id
        - wrappers
      properties:
        id:
          $ref: '#/components/schemas/EntityId'
          description: The investor's Transact number.
        adviser_id:
          $ref: '#/components/schemas/EntityId'
          description: The adviser's Transact number.
        firm_id:
          $ref: '#/components/schemas/EntityId'
          description: The firm's Transact number.
        wrappers:
          type: array
          description: The wrappers belonging to the investor portfolio.
          items:
            $ref: '#/components/schemas/ValuationWrapper'
    ValuationWrapper:
      type: object
      required:
        - id
        - type
        - name
        - status
        - opening_date
        - closing_date
        - closed_date
        - holdings
      properties:
        id:
          type: string
          description: The unique identifier for the wrapper, known as a Transact 'Wrapper Ref'.
          example: IH00000001
        type:
          $ref: '#/components/schemas/WrapperType'
          description: The wrapper type.
        name:
          type: string
          description: |
            Optional wrapper name as provided by the investor/adviser.
          example: Savings for John
        status:
          $ref: '#/components/schemas/WrapperStatus'
        opening_date:
          type: string
          format: date
          description: Date the wrapper was opened.
          example: '2024-06-10'
        closing_date:
          type:
            - string
            - 'null'
          format: date
          description: Date the closing process was initiated.
          example: '2025-06-30'
        closed_date:
          type:
            - string
            - 'null'
          format: date
          description: Date the wrapper was closed.
          example: '2025-07-15'
        holdings:
          type: array
          description: The wrapper holdings.
          items:
            $ref: '#/components/schemas/Holding'
    WrapperStatus:
      type: string
      enum:
        - OPEN
        - CLOSING
        - CLOSED
      description: The wrapper status.
    WrapperType:
      type: string
      examples:
        - GENERAL_INVESTMENT_ACCOUNT
        - ISA_CASH
        - ISA_STOCKS_AND_SHARES
        - JUNIOR_ISA_CASH
        - JUNIOR_ISA_STOCKS_AND_SHARES
        - LIFETIME_ISA
        - PERSONAL_PENSION
        - EXECUTIVE_PENSION
        - SECTION_32_BUY_OUT_BOND
        - SIPP
        - OPEN_ANNUITY
        - OFFSHORE_BOND
        - ONSHORE_BOND
      x-restricted-values: true
  responses:
    ProblemResponse:
      description: A problem occurred during processing of this request.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            type: /problems/an_error_code
            title: An Error
            detail: Specific detail of the error
            status: 123
            request_id: 8c25076679d0339b273037447ab26aea
