> ## Documentation Index
> Fetch the complete documentation index at: https://docs.activeviam.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Store index or ETF component sets.

> Use this operation to replace the active contributed component set for each index or reference ETF, date,
and writable provider represented in the request. Every row needs a date-only market date, a stock identifier,
and either an index identifier or a configured reference ETF. Supply non-negative weights for non-currency
components, or positive shares; optional divisor and index-price values must be positive and consistent across
the group. Share-based uploads require the relevant index and component prices when neither value is supplied.
`UseBestEffort` defaults to false; when true, valid groups can replace their existing sets despite other errors.
Accepted component sets and divisors are stored before the response is returned. Accepted uploads for the
previous business day (T-1), relative to the current UTC date (T), schedule an asynchronous conversion for T
unless a conversion is already pending or running. The conversion can rebuild rolled T components and divisors
from the uploaded T-1 data and refresh spot-derived index prices. The response reports the upload outcome;
it does not indicate whether the conversion has completed or succeeded.



## OpenAPI

````yaml /risk-and-pricing/atoti-risk-services/apis-endpoints/openapi/openapi.mintlify.json post /api/MarketData/UploadIndexComponentData
openapi: 3.0.4
info:
  title: Derivitec Api 1.0
  version: '1.0'
servers:
  - url: https://api.riskportal.activeviam.com
security:
  - oauth2: []
  - apikey: []
tags:
  - name: AdminUser
  - name: AtotiReport
  - name: AtotiSession
  - name: BloombergOAuth
  - name: Bond
  - name: BondYieldCurvePage
  - name: BookAccess
  - name: Books
  - name: Commodity
  - name: Counterparties
  - name: Currencies
  - name: Equity
  - name: EquityDividend
  - name: EquityPage
  - name: FeatureFlag
  - name: Fx
  - name: FxPage
  - name: GroupAccess
  - name: Home
  - name: LegacyPosition
  - name: MarketData
  - name: MarketDataProvider
  - name: MarketDataProviderAccess
  - name: Meta
  - name: Notification
  - name: Organisation
  - name: PnLReport
  - name: PortfolioAccess
  - name: Portfolios
  - name: Position
  - name: PositionFilter
  - name: PricingEnvironment
  - name: PricingEnvironmentAccess
  - name: RateAsset
  - name: RateAssetPage
  - name: Report
  - name: ReportDefinition
  - name: ReportHistoryLauncherQuery
  - name: ReportLauncher
  - name: ReportQuery
  - name: ReportQueryViewUser
  - name: ReportRestriction
  - name: ReportView
  - name: RiskReport
  - name: Tradable
  - name: TradeBooking
  - name: User
  - name: VarReport
  - name: VarReportQuery
  - name: YieldCurvePage
paths:
  /api/MarketData/UploadIndexComponentData:
    post:
      tags:
        - MarketData
      summary: Store index or ETF component sets.
      description: >-
        Use this operation to replace the active contributed component set for
        each index or reference ETF, date,

        and writable provider represented in the request. Every row needs a
        date-only market date, a stock identifier,

        and either an index identifier or a configured reference ETF. Supply
        non-negative weights for non-currency

        components, or positive shares; optional divisor and index-price values
        must be positive and consistent across

        the group. Share-based uploads require the relevant index and component
        prices when neither value is supplied.

        `UseBestEffort` defaults to false; when true, valid groups can replace
        their existing sets despite other errors.

        Accepted component sets and divisors are stored before the response is
        returned. Accepted uploads for the

        previous business day (T-1), relative to the current UTC date (T),
        schedule an asynchronous conversion for T

        unless a conversion is already pending or running. The conversion can
        rebuild rolled T components and divisors

        from the uploaded T-1 data and refresh spot-derived index prices. The
        response reports the upload outcome;

        it does not indicate whether the conversion has completed or succeeded.
      operationId: UploadIndexComponentData
      requestBody:
        description: >-
          The upload payload. Provide either `ProviderId` or
          `MarketDataEnvironmentName`, not both; omitting both selects the
          caller's organisation scope. `IndexComponentData` must be non-empty;
          rows contain index or ETF scope, component identifier, market date,
          weights or shares, and optional divisor, index price, and notes.
          `ConstituentSpot` is accepted but is not used by this upload.
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/ApiUploadIndexComponentDataRequest'
          application/json:
            schema:
              $ref: '#/components/schemas/ApiUploadIndexComponentDataRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/ApiUploadIndexComponentDataRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ApiUploadIndexComponentDataRequest'
      responses:
        '200':
          description: >-
            Returns whether component sets and divisors were stored and errors
            for invalid providers, identifiers, coverage, duplicates, weights,
            shares, prices, or divisors. Scheduled conversion results are not
            included; conversion may still be pending or running.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiUploadIndexComponentDataResponse'
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
        - oauth2: []
        - apikey: []
components:
  schemas:
    ApiUploadIndexComponentDataRequest:
      required:
        - $type
      type: object
      properties:
        market_data_environment_name:
          type: string
          description: >-
            Name of the market-data environment to use. Supply either this name
            or `provider_id`, not both.
          nullable: true
          example: Example market data
        provider_id:
          type: string
          description: >-
            Opaque identifier of the market-data provider to use. Supply either
            this identifier or `market_data_environment_name`, not both.
          nullable: true
        index_component_data:
          type: array
          items:
            $ref: '#/components/schemas/IndexComponentData'
          description: Dated index-component sets to upload.
          nullable: true
        use_best_effort:
          type: boolean
          description: >-
            Requests independent handling of input records when one cannot be
            processed; defaults to `false`.
        $type:
          type: string
          enum:
            - >-
              Derivitec.Web.Core.MarketData.ApiUploadIndexComponentDataRequest,
              Derivitec.Web.Core
      additionalProperties: false
      description: Submits dated index-component sets.
    ApiUploadIndexComponentDataResponse:
      required:
        - $type
      type: object
      additionalProperties: false
      description: >-
        Returns the success flag and error messages from an index-component
        upload.
      properties:
        is_success:
          type: boolean
          description: >-
            Whether the operation completed successfully. The default is `true`;
            error outcomes set it to `false`.
          example: true
        error_messages:
          type: array
          items:
            type: string
          description: >-
            Messages explaining operation-level failures. The collection is
            empty by default.
          nullable: true
        $type:
          type: string
          enum:
            - >-
              Derivitec.Web.Core.MarketData.ApiUploadIndexComponentDataResponse,
              Derivitec.Web.Core
    IndexComponentData:
      required:
        - $type
      type: object
      properties:
        provider_id:
          type: string
          description: >-
            Market-data provider code recorded as the source of the
            contribution. Defaults to Derivitec.
          nullable: true
        derivitec_created:
          type: string
          description: Timestamp at which the market-data record was created.
        derivitec_modified:
          type: string
          description: Optional timestamp of the record's latest modification.
          nullable: true
        uploaded_date_time:
          type: string
          description: >-
            Optional timestamp at which the contribution was uploaded.
            UploadRateAssets ignores the supplied value on each rate asset and
            stores the current UTC time.
          nullable: true
        derivitec_modified_by:
          type: string
          description: >-
            Principal recorded as the latest modifier. UploadRateAssets ignores
            the supplied value on each rate asset and stores the authenticated
            user identifier.
          nullable: true
        uploaded_by:
          type: string
          description: >-
            Principal recorded as the uploader. UploadRateAssets ignores the
            supplied value on each rate asset and stores the authenticated user
            identifier.
          nullable: true
        rolled:
          type: boolean
          description: Whether the contribution has been rolled.
          example: false
        date:
          type: string
          description: Market date of the component contribution.
          format: date-time
        index_identifier:
          $ref: '#/components/schemas/InstrumentIdentifier'
        reference_etf:
          $ref: '#/components/schemas/InstrumentIdentifier'
        shares:
          type: number
          description: >-
            Optional constituent share amount; non-FX constituents require a
            positive value when shares are used.
          format: double
          nullable: true
        stock_identifier:
          $ref: '#/components/schemas/InstrumentIdentifier'
        weight:
          type: number
          description: >-
            Optional constituent weight; non-FX constituents require a
            nonnegative value when weights are used.
          format: double
          nullable: true
        index_price:
          type: number
          description: >-
            Optional positive index value used for share-based uploads. If
            supplied, every row in the component set must provide the same
            value; it is not used when component weights are supplied.
          format: double
          nullable: true
        divisor:
          type: number
          description: >-
            Optional divisor for the index and date; when used, every component
            row must supply the same positive value.
          format: double
          nullable: true
        constituent_spot:
          type: number
          description: >-
            Optional constituent spot returned by retrieval; accepted but
            ignored by index-component upload.
          format: double
          nullable: true
        notes:
          type: string
          description: Free-text notes carried with the component contribution.
          nullable: true
        $type:
          type: string
          enum:
            - >-
              Derivitec.Web.Core.MarketData.IndexComponentData,
              Derivitec.Web.Core
      additionalProperties: false
      description: >-
        One index or reference-ETF constituent contribution accepted by
        index-component upload.
    InstrumentIdentifier:
      description: >-
        Instrument code qualified by an identifier namespace and optional market
        code.
      discriminator:
        propertyName: $type
        mapping:
          Derivitec.Web.Core.MarketData.InstrumentIdentifier, Derivitec.Web.Core: '#/components/schemas/InstrumentIdentifierMintlifyShape'
          Derivitec.Web.Core.MarketData.InstrumentInfo, Derivitec.Web.Core: '#/components/schemas/InstrumentInfo'
      oneOf:
        - $ref: '#/components/schemas/InstrumentIdentifierMintlifyShape'
        - $ref: '#/components/schemas/InstrumentInfo'
    InstrumentIdentifierMintlifyShape:
      required:
        - $type
      type: object
      properties:
        code:
          type: string
          description: Instrument code interpreted in the selected identifier namespace.
          nullable: true
        identifier_type:
          enum:
            - Derivitec
            - Ric
            - Bloomberg
            - Isin
            - Figi
            - Sedol
            - RedCode
            - RedPairCode
            - BloombergYellow
            - XIgniteCode
            - CBondsId
            - EdiSecId
            - EdiSymbol
            - Cusip
            - NotSet
          type: string
          description: Namespace that determines how the instrument code is interpreted.
        market_identification_code:
          type: string
          description: >-
            Optional market identification code that further qualifies the
            instrument code.
          nullable: true
        $type:
          type: string
          enum:
            - >-
              Derivitec.Web.Core.MarketData.InstrumentIdentifier,
              Derivitec.Web.Core
      additionalProperties: false
      description: >-
        Instrument code qualified by an identifier namespace and optional market
        code.
    InstrumentInfo:
      required:
        - $type
      type: object
      properties:
        code:
          type: string
          description: Instrument code interpreted in the selected identifier namespace.
          nullable: true
        identifier_type:
          enum:
            - Derivitec
            - Ric
            - Bloomberg
            - Isin
            - Figi
            - Sedol
            - RedCode
            - RedPairCode
            - BloombergYellow
            - XIgniteCode
            - CBondsId
            - EdiSecId
            - EdiSymbol
            - Cusip
            - NotSet
          type: string
          description: Namespace that determines how the instrument code is interpreted.
        market_identification_code:
          type: string
          description: >-
            Optional market identification code that further qualifies the
            instrument code.
          nullable: true
        name:
          type: string
          description: Human-readable name of the identified instrument.
          nullable: true
        $type:
          type: string
          enum:
            - Derivitec.Web.Core.MarketData.InstrumentInfo, Derivitec.Web.Core
      additionalProperties: false
      description: Instrument identifier with a human-readable instrument name.
  securitySchemes:
    oauth2:
      type: oauth2
      description: >-
        OAuth2 access-token requested from AWS Cognito and provided as a Auth
        Bearer header
      flows:
        implicit:
          authorizationUrl: https://auth.riskportal.derivitec.com/oauth2/authorize
          scopes: {}
    apikey:
      type: apiKey
      description: API-Key requested via the site and provided as a header
      name: x-api-key
      in: header

````