> ## 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.

# Upload a batch of equity volatility-index surface spot model definitions.

> Requires edit or owner access to a non-default market-data provider. The asset identifier is resolved
to an internal volatility-index ID. Only BetaAdjustedATMF is supported; the model type is not an input.
Tenors must resolve to positive, strictly increasing maturities from the reference date, with one finite
up and down beta per tenor. Betas multiply the signed relative equity spot shock to produce an absolute
decimal ATMF volatility change. A successful upload replaces the same asset/model/date/provider record
before returning, stamps the authenticated uploader and upload time, and clears the rolled flag.
Subsequent rolling preserves these user-uploaded contributions. All rows use the request's authorized
provider, overriding row ProviderId and provenance. Invalid rows, unresolved identifiers and duplicate
resolved asset/model/date identities reject the batch before saving. Persistence is not transactional.



## OpenAPI

````yaml /risk-and-pricing/atoti-risk-services/apis-endpoints/openapi/openapi.mintlify.json post /api/MarketData/UploadVolSurfaceSpotModelDefinitions
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/UploadVolSurfaceSpotModelDefinitions:
    post:
      tags:
        - MarketData
      summary: >-
        Upload a batch of equity volatility-index surface spot model
        definitions.
      description: >-
        Requires edit or owner access to a non-default market-data provider. The
        asset identifier is resolved

        to an internal volatility-index ID. Only BetaAdjustedATMF is supported;
        the model type is not an input.

        Tenors must resolve to positive, strictly increasing maturities from the
        reference date, with one finite

        up and down beta per tenor. Betas multiply the signed relative equity
        spot shock to produce an absolute

        decimal ATMF volatility change. A successful upload replaces the same
        asset/model/date/provider record

        before returning, stamps the authenticated uploader and upload time, and
        clears the rolled flag.

        Subsequent rolling preserves these user-uploaded contributions. All rows
        use the request's authorized

        provider, overriding row ProviderId and provenance. Invalid rows,
        unresolved identifiers and duplicate

        resolved asset/model/date identities reject the batch before saving.
        Persistence is not transactional.
      operationId: UploadVolSurfaceSpotModelDefinitions
      requestBody:
        description: >-
          A nonempty list of definitions with asset identifiers, reference
          dates, model IDs, tenors and beta lists.
                      Supply either ProviderId or MarketDataEnvironmentName, not both; omitting both selects the caller's organisation scope.
        content:
          application/json-patch+json:
            schema:
              $ref: >-
                #/components/schemas/ApiUploadVolSurfaceSpotModelDefinitionsRequest
          application/json:
            schema:
              $ref: >-
                #/components/schemas/ApiUploadVolSurfaceSpotModelDefinitionsRequest
          text/json:
            schema:
              $ref: >-
                #/components/schemas/ApiUploadVolSurfaceSpotModelDefinitionsRequest
          application/*+json:
            schema:
              $ref: >-
                #/components/schemas/ApiUploadVolSurfaceSpotModelDefinitionsRequest
      responses:
        '200':
          description: >-
            Returns the upload outcome and any validation, provider, identifier
            or persistence errors.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ApiUploadVolSurfaceSpotModelDefinitionsResponse
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
        - oauth2: []
        - apikey: []
components:
  schemas:
    ApiUploadVolSurfaceSpotModelDefinitionsRequest:
      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
        vol_surface_spot_model_definitions:
          type: array
          items:
            $ref: '#/components/schemas/VolSurfaceSpotModelDefinition'
          description: >-
            Required nonempty list of definitions. Null rows and duplicate
            resolved asset/model/date identities are rejected. All rows use the
            request's authorized provider; row provenance is replaced by
            server-managed upload metadata.
          nullable: true
        $type:
          type: string
          enum:
            - >-
              Derivitec.Web.Core.MarketData.ApiUploadVolSurfaceSpotModelDefinitionsRequest,
              Derivitec.Web.Core
      additionalProperties: false
      description: >-
        Uploads a batch of beta-adjusted ATMF spot model definitions to one
        writable provider.
    ApiUploadVolSurfaceSpotModelDefinitionsResponse:
      required:
        - $type
      type: object
      additionalProperties: false
      description: >-
        Reports the batch upload outcome and any validation, identifier,
        provider or persistence errors.
      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.ApiUploadVolSurfaceSpotModelDefinitionsResponse,
              Derivitec.Web.Core
    VolSurfaceSpotModelDefinition:
      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
        asset:
          $ref: '#/components/schemas/InstrumentIdentifier'
        reference_date:
          type: string
          description: >-
            Required date-only reference date at midnight, without timezone
            conversion. Tenor maturities are calculated from this date.
          format: date-time
        model_id:
          type: string
          description: >-
            Required nonblank model identifier, shared with the equity
            scenario's spot-model selection. Asset, reference date, model ID and
            provider identify the record replaced by this upload.
          nullable: true
        tenors:
          type: array
          items:
            type: string
          description: >-
            Required nonempty tenor strings such as 1M, 3M and 1Y. Maturities
            must be positive and strictly increasing from ReferenceDate; entries
            align with both beta lists.
          nullable: true
        betas_up:
          type: array
          items:
            type: number
            format: double
          description: >-
            Required finite coefficients for positive relative equity spot
            shocks, one per tenor. The absolute decimal ATMF volatility change
            is beta times the relative spot shock; beta -1 and shock 0.01 give a
            volatility change of -0.01. Negative and zero betas are allowed.
          nullable: true
        betas_dn:
          type: array
          items:
            type: number
            format: double
          description: >-
            Required finite coefficients for negative relative equity spot
            shocks, one per tenor. The absolute decimal ATMF volatility change
            is beta times the signed relative spot shock. Negative and zero
            betas are allowed.
          nullable: true
        $type:
          type: string
          enum:
            - >-
              Derivitec.Web.Core.MarketData.VolSurfaceSpotModelDefinition,
              Derivitec.Web.Core
      additionalProperties: false
      description: Beta-adjusted ATMF spot model inputs for an equity volatility index.
    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

````