> ## 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 borrow curves for equities.

> Use this operation to publish borrow curves to a non-default provider that the caller may edit. Each curve
identifies an equity and value date and supplies positive day maturities or valid tenor strings, together
with either positive discount factors or annualised decimal rates. `UseZeroRates` selects zero rates;
otherwise rates are forward rates. Invalid curves are reported while other valid curves can be stored, and
an accepted curve replaces the contribution for the same provider, equity, and value date before the response returns.



## OpenAPI

````yaml /risk-and-pricing/atoti-risk-services/apis-endpoints/openapi/openapi.mintlify.json post /api/MarketData/UploadBorrowCurves
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/UploadBorrowCurves:
    post:
      tags:
        - MarketData
      summary: Store borrow curves for equities.
      description: >-
        Use this operation to publish borrow curves to a non-default provider
        that the caller may edit. Each curve

        identifies an equity and value date and supplies positive day maturities
        or valid tenor strings, together

        with either positive discount factors or annualised decimal rates.
        `UseZeroRates` selects zero rates;

        otherwise rates are forward rates. Invalid curves are reported while
        other valid curves can be stored, and

        an accepted curve replaces the contribution for the same provider,
        equity, and value date before the response returns.
      operationId: UploadBorrowCurves
      requestBody:
        description: >-
          The upload payload. Provide either `ProviderId` or
          `MarketDataEnvironmentName`, not both; omitting both selects the
          caller's organisation scope. `BorrowCurves` must be non-empty. The
          legacy `BorrowRatesByIdentifiers` form is also accepted and treats its
          rate values as percentages, using `MarketDate` and `UploadZeroRates`.
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/ApiUploadBorrowCurvesRequest'
          application/json:
            schema:
              $ref: '#/components/schemas/ApiUploadBorrowCurvesRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/ApiUploadBorrowCurvesRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/ApiUploadBorrowCurvesRequest'
      responses:
        '200':
          description: >-
            Returns whether any borrow curves were stored and errors for invalid
            providers, identifiers, tenors, maturities, factors, or rate
            vectors.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiUploadBorrowCurvesResponse'
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
      security:
        - oauth2: []
        - apikey: []
components:
  schemas:
    ApiUploadBorrowCurvesRequest:
      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
        borrow_curves:
          type: array
          items:
            $ref: '#/components/schemas/BorrowCurveData'
          description: >-
            Preferred typed equity borrow-curve rows; nonempty typed rows take
            precedence over the legacy map.
          nullable: true
        borrow_rates_by_identifiers:
          type: array
          items:
            $ref: >-
              #/components/schemas/InstrumentIdentifierStringDoubleKeyValuePairListKeyValuePair
          description: >-
            Legacy map from asset selector to tenor/rate entries expressed as
            percentages; values are converted to decimals.
          nullable: true
        market_date:
          type: string
          description: >-
            Date-only value date shared by legacy keyed borrow rates when typed
            rows are absent or empty.
          format: date-time
        upload_zero_rates:
          type: boolean
          description: >-
            Whether legacy rate inputs are interpreted as zero rather than
            forward rates; defaults to `false`.
        $type:
          type: string
          enum:
            - >-
              Derivitec.Web.Core.MarketData.ApiUploadBorrowCurvesRequest,
              Derivitec.Web.Core
      additionalProperties: false
      description: >-
        Accepts typed equity borrow curves with per-row value dates, or legacy
        keyed percentage rates sharing MarketDate.
    ApiUploadBorrowCurvesResponse:
      required:
        - $type
      type: object
      additionalProperties: false
      description: Returns the success flag and error messages from a borrow-curve 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.ApiUploadBorrowCurvesResponse,
              Derivitec.Web.Core
    BorrowCurveData:
      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
        identifier:
          $ref: '#/components/schemas/InstrumentIdentifier'
        maturities:
          type: array
          items:
            type: integer
            format: int32
          description: >-
            Positive day-offset maturities paired with DiscountFactors or Rates;
            explicit maturities take precedence over Tenors.
          nullable: true
        tenors:
          type: array
          items:
            type: string
          description: >-
            Valid tenor strings converted to maturity coordinates only when
            Maturities is empty.
          nullable: true
        discount_factors:
          type: array
          items:
            type: number
            format: double
          description: >-
            Positive dimensionless factors paired with Maturities; when
            supplied, they take precedence over Rates.
          nullable: true
        rates:
          type: array
          items:
            type: number
            format: double
          description: Annualised decimal rates used when DiscountFactors is empty.
          nullable: true
        use_zero_rates:
          type: boolean
          description: >-
            Whether Rates contains zero rather than forward annualised decimal
            rates. Defaults to false, so supplied values are forward rates
            unless set to true.
        value_date:
          type: string
          description: Date-only value date specific to this typed curve row.
          format: date-time
        $type:
          type: string
          enum:
            - Derivitec.Web.Core.MarketData.BorrowCurveData, Derivitec.Web.Core
      additionalProperties: false
      description: >-
        Typed equity borrow-curve row with a per-row value date and alternative
        factor or annualised-rate representations.
    InstrumentIdentifierStringDoubleKeyValuePairListKeyValuePair:
      type: object
      properties:
        key:
          $ref: '#/components/schemas/InstrumentIdentifier'
        value:
          type: array
          items:
            $ref: '#/components/schemas/StringDoubleKeyValuePair'
          nullable: true
      additionalProperties: false
    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'
    StringDoubleKeyValuePair:
      type: object
      properties:
        key:
          type: string
          nullable: true
        value:
          type: number
          format: double
      additionalProperties: false
    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

````