Saxo Bank Positions API

Read only end points serving individual positions. The set of positions is restricted by the supplied query parameters as well as whether or not the identity represented by the authorization token has access to the account on which the positions are posted. * A user of a client will have access to accounts under that client * A user of an IB or WLC will have access to accounts on that client or clients there under * An employee has access to all accounts * A request containing a TradingFloor "Federated Access" token will have access to the account specified in that token. * If access is granted on the basis of the TradingFloor "Federated Access" token, then the number of fields will be a subset of the full set of fields shown in the specification for the response.

OpenAPI Specification

saxo-positions-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Services.AutoTrading Account Values Positions API
  description: 'The AutoTrading service group provides endpoints for interacting with Saxo Bank''s SaxoSelect offering.Through these interfaces a client application can get Saxo Select trade leaders, portfolios and investments. Portfolio investments can be created and modifed.<div class=well style=''border: 1px solid rgb(204, 82, 0); border-image: none; background-color: rgb(255, 209, 179);padding:1px;''><strong> Note:</strong> </br>This service is subject to special licensing agreements and not generally available to all OpenAPI applications.</div>'
  version: 2.4.138+710c760591
  x-framework-version: 38.0.2+439c5b0ec3
  x-machine: SIMOAWEB11-DK2
servers:
- url: https://gateway.saxobank.com/sim/openapi
tags:
- name: Positions
  description: "Read only end points serving individual positions.\n            The set of positions is restricted by the supplied query parameters as well as whether or not the identity \n            represented by the authorization token has access to the account on which the positions are posted. \n\n*   A user of a client will have access to accounts under that client\n*   A user of an IB or WLC will have access to accounts on that client or clients there under \n*   An employee has access to all accounts\n*   A request containing a TradingFloor \"Federated Access\" token will have access to the account specified in that token.\n*   If access is granted on the basis of the TradingFloor \"Federated Access\" token, then the number of fields will be a subset \n                of the full set of fields shown in the specification for the response."
paths:
  /port/v1/positions/subscriptions/{ContextId}:
    delete:
      tags:
      - Positions
      summary: Remove multiple subscriptions for the given ContextId, optionally marked with a specific tag
      description: Removes multiple subscriptions for the current session on this resource, and frees all resources on the server.
      operationId: PositionsV1DeleteSubscriptions
      parameters:
      - name: ContextId
        in: path
        description: Unique streaming context ID part of the streaming session.
        required: true
        schema:
          type: string
        example: '29931122'
      - name: Tag
        in: query
        description: Tag that subscriptions are marked with
        schema:
          type: string
        example: TAB15
      responses:
        '204':
          description: No Content
        '202':
          description: Subscription delete request will be processed eventually.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      security:
      - OpenApiOAuthSecurityScheme: []
      - OpenApiJWTSecurityScheme: []
      x-required-permissions:
        personal: Subscribe
        community: Subscribe
  /port/v1/positions/subscriptions/{ContextId}/{ReferenceId}:
    delete:
      tags:
      - Positions
      summary: Remove subscription
      description: Removes subscription for the current session identified by subscription id.
      operationId: PositionsV1DeleteSubscription
      parameters:
      - name: ContextId
        in: path
        description: The context id part of the streaming session.
        required: true
        schema:
          type: string
        example: '29931122'
      - name: ReferenceId
        in: path
        description: Unique ID of the subscription
        required: true
        schema:
          type: string
        example: P54123
      responses:
        '204':
          description: No Content
        '202':
          description: Subscription delete request will be processed eventually.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      security:
      - OpenApiOAuthSecurityScheme: []
      - OpenApiJWTSecurityScheme: []
      x-required-permissions:
        personal: Subscribe
        community: Subscribe
    patch:
      tags:
      - Positions
      summary: Change the positions subscription page size
      description: "Extends or reduces the page size, number of positions shown, on a running positions subscription.\n            When expanding the page size, the new positions are streamed so to avoid race conditions."
      operationId: PositionsV1UpdatePositionSubscriptionPagesize
      parameters:
      - name: ContextId
        in: path
        description: The context id part of the streaming session.
        required: true
        schema:
          type: string
        example: '29931122'
      - name: ReferenceId
        in: path
        description: Unique ID of the subscription
        required: true
        schema:
          type: string
        example: P54123
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PositionPagingSubscriptionUpdateRequest'
            example:
              NewPageSize: 99
      responses:
        '204':
          description: No Content
        '202':
          description: Subscription change will be processed and respose will be streamed.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      security:
      - OpenApiOAuthSecurityScheme: []
      - OpenApiJWTSecurityScheme: []
      x-required-permissions:
        personal: Subscribe
        community: Subscribe
  /port/v1/positions/subscriptions:
    post:
      tags:
      - Positions
      summary: Create a subscription on a list positions and make it active
      description: Sets up a subscription and returns an initial snapshot of list of positions specified by the parameters in the request.
      operationId: PositionsV1AddActiveSubscription
      parameters:
      - name: $top
        in: query
        description: The number of entries to return from the beginning of the collection
        schema:
          minimum: 0
          type: integer
          format: int32
          default: 0
        example: 1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PositionsSubscriptionRequest'
            example:
              Arguments:
                AccountGroupKey: LZTc7DdejXODf-WSl2aCyQ==
                AccountKey: LZTc7DdejXODf-WSl2aCyQ==
                ClientKey: 7m4I|vtYLUnEGg77o9uQhw==
                FieldGroups:
                - PositionBase
                - PositionView
                NetPositionId: GBPUSD_FxSpot
                PositionId: '1019942425'
                PriceMode: RegularTradingHours
              ContextId: '20221030064905734'
              Format: application/json
              ReferenceId: P48094
              RefreshRate: 1000
              Tag: PAGE1
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PositionsSubscriptionResponse'
              example:
                Format: application/json
                InactivityTimeout: 120
                ReferenceId: P11029
                RefreshRate: 1000
                Snapshot:
                  Data:
                  - NetPositionId: GBPUSD_FxSpot
                    PositionBase:
                      AccountId: 192134INET
                      Amount: 100000
                      AssetType: FxSpot
                      CanBeClosed: true
                      ClientId: '654321'
                      CloseConversionRateSettled: false
                      ExecutionTimeOpen: '2016-09-02T10:25:00Z'
                      IsForceOpen: false
                      IsMarketOpen: false
                      LockedByBackOffice: false
                      OpenPrice: 1.32167
                      SpotDate: '2016-09-06'
                      Status: Open
                      Uic: 31
                      ValueDate: '2017-05-04T00:00:00Z'
                    PositionId: '1019942425'
                    PositionView:
                      Ask: 1.2917
                      Bid: 1.29162
                      CalculationReliability: Ok
                      CurrentPrice: 1.29169
                      CurrentPriceDelayMinutes: 0
                      CurrentPriceType: Bid
                      Exposure: 100000
                      ExposureCurrency: GBP
                      ExposureInBaseCurrency: 129192
                      InstrumentPriceDayPercentChange: 0.26
                      ProfitLossOnTrade: -2998
                      ProfitLossOnTradeInBaseCurrency: -2998
                      SettlementInstruction:
                        ActualRolloverAmount: 0
                        ActualSettlementAmount: 10
                        Amount: 10
                        IsSettlementInstructionsAllowed: false
                        Month: 7
                        SettlementType: FullSettlement
                        Year: 2020
                      TradeCostsTotal: 0
                      TradeCostsTotalInBaseCurrency: 0
                State: Active
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                required:
                - ErrorCode
                - Message
                type: object
                properties:
                  ErrorCode:
                    enum:
                    - InvalidClientId
                    - InvalidInput
                    - InvalidModelState
                    - NoValidInput
                    - SubscriptionExceedesPositionsLimit
                    - UnsupportedSubscriptionFormat
                    type: string
                    example: None
                    x-enum-descriptions:
                      InvalidModelState: Error code returned when model state is invalid.
                      UnsupportedSubscriptionFormat: Error code returned when a subscription format that isn't supported by the publisher is requested.
                      NoValidInput: No valid input values passed.
                      SubscriptionExceedesPositionsLimit: Too many positions requested. Streaming updates are only allowed on a limited number of positions.
                      InvalidClientId: Indicates that the requested client id was invalid.
                      InvalidInput: An error was encountered when processing given input parameters.
                  Message:
                    type: string
                  ModelState:
                    $ref: '#/components/schemas/ModelStateDictionary'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                required:
                - ErrorCode
                - Message
                type: object
                properties:
                  ErrorCode:
                    enum:
                    - SubscriptionLimitExceeded
                    type: string
                    example: None
                    x-enum-descriptions:
                      SubscriptionLimitExceeded: Error code returned when more than the maximum allowed number of subscriptions for a specified type, is exceeded.
                  Message:
                    type: string
                  ModelState:
                    $ref: '#/components/schemas/ModelStateDictionary'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      security:
      - OpenApiOAuthSecurityScheme: []
      - OpenApiJWTSecurityScheme: []
      x-required-permissions:
        personal: Subscribe
        community: Subscribe
      x-streaming-type:
        $ref: '#/components/schemas/PositionResponseArray'
  /port/v1/positions:
    get:
      tags:
      - Positions
      summary: Get positions for a client, account group, account or a position
      description: Returns a list of positions fulfilling the criteria specified by the query string parameters.
      operationId: GET_PositionsV1GetPositions
      parameters:
      - name: $skip
        in: query
        description: The number of entries to skip from the beginning of the collection
        schema:
          minimum: 0
          type: integer
          format: int32
        example: 1
      - name: $top
        in: query
        description: The number of entries to return from the beginning of the collection
        schema:
          minimum: 0
          type: integer
          format: int32
          default: 0
        example: 1
      - name: AccountGroupKey
        in: query
        description: The key of the account group to which the net positions belongs.
        schema:
          title: The key of the account group to which the net positions belongs.
          minLength: 1
          type: string
          x-type-name: AccountGroupKey
        example: stringValue
      - name: AccountKey
        in: query
        description: The key of the account to which the net positions belongs.
        schema:
          title: The key of the account to which the net positions belongs.
          minLength: 1
          type: string
          x-type-name: AccountKey
        example: 01b64edf-da03-4145-bf33-ae21527d4c86
      - name: ClientKey
        in: query
        description: The key of the client to which the net positions belongs.
        required: true
        schema:
          title: The key of the client to which the net positions belongs.
          minLength: 1
          type: string
          x-type-name: ClientKey
        example: 493b43a5-fe85-4d1f-9071-dd4a9d4e42a4
      - name: FieldGroups
        in: query
        description: Specifies which data to return. Default is [PositionBase,PositionView]
        schema:
          title: Specifies which data to return. Default is [PositionBase,PositionView]
          type: array
          items:
            $ref: '#/components/schemas/PositionFieldGroup'
        example:
        - PositionView
      - name: NetPositionId
        in: query
        description: The id of the netposition to which the position belongs
        schema:
          title: The id of the netposition to which the position belongs
          type: string
        example: stringValue
      - name: PositionId
        in: query
        description: The id of the position.
        schema:
          title: The id of the position.
          type: string
        example: stringValue
      - name: WatchlistId
        in: query
        description: Selects only positions those instruments belongs to the given watchlist id
        schema:
          title: Selects only positions those instruments belongs to the given watchlist id
          type: string
        example: stringValue
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PositionResponseListResult'
              example:
                __next: /openapi/port/....../?$top=1&$skip=1
                Data:
                - NetPositionId: GBPUSD_FxSpot
                  PositionBase:
                    AccountId: 192134INET
                    Amount: 100000
                    AssetType: FxSpot
                    CanBeClosed: true
                    ClientId: '654321'
                    CloseConversionRateSettled: false
                    ExecutionTimeOpen: '2016-09-02T10:25:00Z'
                    IsForceOpen: false
                    IsMarketOpen: false
                    LockedByBackOffice: false
                    OpenPrice: 1.32167
                    SpotDate: '2016-09-06'
                    Status: Open
                    Uic: 31
                    ValueDate: '2017-05-04T00:00:00Z'
                  PositionId: '1019942425'
                  PositionView:
                    Ask: 1.2917
                    Bid: 1.29162
                    CalculationReliability: Ok
                    CurrentPrice: 1.29169
                    CurrentPriceDelayMinutes: 0
                    CurrentPriceType: Bid
                    Exposure: 100000
                    ExposureCurrency: GBP
                    ExposureInBaseCurrency: 129192
                    InstrumentPriceDayPercentChange: 0.26
                    ProfitLossOnTrade: -2998
                    ProfitLossOnTradeInBaseCurrency: -2998
                    SettlementInstruction:
                      ActualRolloverAmount: 0
                      ActualSettlementAmount: 10
                      Amount: 10
                      IsSettlementInstructionsAllowed: false
                      Month: 7
                      SettlementType: FullSettlement
                      Year: 2020
                    TradeCostsTotal: 0
                    TradeCostsTotalInBaseCurrency: 0
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                required:
                - ErrorCode
                - Message
                type: object
                properties:
                  ErrorCode:
                    enum:
                    - InvalidClientId
                    - NoValidInput
                    type: string
                    example: None
                    x-enum-descriptions:
                      NoValidInput: No valid input values passed.
                      InvalidClientId: Indicates that the requested client id was invalid.
                  Message:
                    type: string
                  ModelState:
                    $ref: '#/components/schemas/ModelStateDictionary'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      security:
      - OpenApiOAuthSecurityScheme: []
      - OpenApiJWTSecurityScheme: []
      x-required-permissions:
        personal: Read
        community: Read
  /port/v1/positions/me:
    get:
      tags:
      - Positions
      summary: Get positions for the logged-in client
      operationId: PositionsV1GetPositions
      parameters:
      - name: $skip
        in: query
        description: The number of entries to skip from the beginning of the collection
        schema:
          minimum: 0
          type: integer
          format: int32
        example: 1
      - name: $top
        in: query
        description: The number of entries to return from the beginning of the collection
        schema:
          minimum: 0
          type: integer
          format: int32
          default: 0
        example: 1
      - name: FieldGroups
        in: query
        description: Optional. Specifies which data to return. Default is [PositionBase, PositionView]
        required: true
        schema:
          type: array
          items:
            $ref: '#/components/schemas/PositionFieldGroup'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PositionResponseListResult'
              example:
                __next: /openapi/port/....../?$top=1&$skip=1
                Data:
                - NetPositionId: GBPUSD_FxSpot
                  PositionBase:
                    AccountId: 192134INET
                    Amount: 100000
                    AssetType: FxSpot
                    CanBeClosed: true
                    ClientId: '654321'
                    CloseConversionRateSettled: false
                    ExecutionTimeOpen: '2016-09-02T10:25:00Z'
                    IsForceOpen: false
                    IsMarketOpen: false
                    LockedByBackOffice: false
                    OpenPrice: 1.32167
                    SpotDate: '2016-09-06'
                    Status: Open
                    Uic: 31
                    ValueDate: '2017-05-04T00:00:00Z'
                  PositionId: '1019942425'
                  PositionView:
                    Ask: 1.2917
                    Bid: 1.29162
                    CalculationReliability: Ok
                    CurrentPrice: 1.29169
                    CurrentPriceDelayMinutes: 0
                    CurrentPriceType: Bid
                    Exposure: 100000
                    ExposureCurrency: GBP
                    ExposureInBaseCurrency: 129192
                    InstrumentPriceDayPercentChange: 0.26
                    ProfitLossOnTrade: -2998
                    ProfitLossOnTradeInBaseCurrency: -2998
                    SettlementInstruction:
                      ActualRolloverAmount: 0
                      ActualSettlementAmount: 10
                      Amount: 10
                      IsSettlementInstructionsAllowed: false
                      Month: 7
                      SettlementType: FullSettlement
                      Year: 2020
                    TradeCostsTotal: 0
                    TradeCostsTotalInBaseCurrency: 0
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      security:
      - OpenApiOAuthSecurityScheme: []
      - OpenApiJWTSecurityScheme: []
      x-required-permissions:
        personal: Read
        community: Read
  /port/v1/positions/{PositionId}/details:
    get:
      tags:
      - Positions
      summary: Get detailed information for a single position
      description: "Obsolete Gets detailed information about a single position as specified by the query parameters.\n            NOTE: This endpoint will be deprecated by November 2022. All functionality has been migrated to /port/v1/positions/{PositionId}. Fields available in this resource are moved to PositionBase and the new \"Costs\" fieldgroup that has been added to the base route. These fields also support streaming now."
      operationId: PositionsV1GetPositionDetails
      parameters:
      - name: AccountGroupKey
        in: query
        description: The key of the account group to which the net positions belongs.
        schema:
          title: The key of the account group to which the net positions belongs.
          minLength: 1
          type: string
          x-type-name: AccountGroupKey
        example: stringValue
      - name: AccountKey
        in: query
        description: The key of the account to which the net positions belongs.
        schema:
          title: The key of the account to which the net positions belongs.
          minLength: 1
          type: string
          x-type-name: AccountKey
        example: 01b64edf-da03-4145-bf33-ae21527d4c86
      - name: ClientKey
        in: query
        description: The key of the client to which the net positions belongs.
        required: true
        schema:
          title: The key of the client to which the net positions belongs.
          minLength: 1
          type: string
          x-type-name: ClientKey
        example: 493b43a5-fe85-4d1f-9071-dd4a9d4e42a4
      - name: PositionId
        in: path
        description: Unique id of the position.
        required: true
        schema:
          type: string
        example: '167968381'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PositionDetailedResponse'
              example:
                DisplayAndFormat:
                  Currency: EUR
                  Decimals: 4
                  Description: British Pound/US Dollar
                  Format: AllowDecimalPips
                  Symbol: GBPUSD
                NetPositionId: GBPUSD_FxSpot
                PositionBase:
                  AccountId: 192134INET
                  Amount: 100000
                  AssetType: FxSpot
                  CanBeClosed: true
                  ClientId: '654321'
                  CloseConversionRateSettled: false
                  ExecutionTimeOpen: '2016-09-02T10:25:00Z'
                  IsForceOpen: false
                  IsMarketOpen: false
                  LockedByBackOffice: false
                  OpenPrice: 1.32167
                  SpotDate: '2016-09-06'
                  Status: Open
                  Uic: 31
                  ValueDate: '2017-05-04T00:00:00Z'
                PositionId: '1019942425'
                PositionView:
                  Ask: 1.2917
                  Bid: 1.29162
                  CalculationReliability: Ok
                  CurrentPrice: 1.29169
                  CurrentPriceDelayMinutes: 0
                  CurrentPriceType: Bid
                  Exposure: 100000
                  ExposureCurrency: GBP
                  ExposureInBaseCurrency: 129192
                  InstrumentPriceDayPercentChange: 0.26
                  ProfitLossOnTrade: -2998
                  ProfitLossOnTradeInBaseCurrency: -2998
                  SettlementInstruction:
                    ActualRolloverAmount: 0
                    ActualSettlementAmount: 10
                    Amount: 10
                    IsSettlementInstructionsAllowed: false
                    Month: 7
                    SettlementType: FullSettlement
                    Year: 2020
                  TradeCostsTotal: 0
                  TradeCostsTotalInBaseCurrency: 0
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                required:
                - ErrorCode
                - Message
                type: object
                properties:
                  ErrorCode:
                    enum:
                    - InvalidClientId
                    - PositionIdNotSpecified
                    type: string
                    example: None
                    x-enum-descriptions:
                      PositionIdNotSpecified: Position not specified.
                      InvalidClientId: Indicates that the requested client id was invalid.
                  Message:
                    type: string
                  ModelState:
                    $ref: '#/components/schemas/ModelStateDictionary'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      deprecated: true
      security:
      - OpenApiOAuthSecurityScheme: []
      - OpenApiJWTSecurityScheme: []
      x-deprecated-date: '2022-11-01'
      x-required-permissions:
        personal: Read
        community: Read
  /port/v1/positions/{PositionId}:
    get:
      tags:
      - Positions
      summary: Get a single position
      description: Get a single position
      operationId: PositionsV1GetPosition
      parameters:
      - name: AccountGroupKey
        in: query
        description: The key of the account group to which the net positions belongs.
        schema:
          title: The key of the account group to which the net positions belongs.
          minLength: 1
          type: string
          x-type-name: AccountGroupKey
        example: stringValue
      - name: AccountKey
        in: query
        description: The key of the account to which the net positions belongs.
        schema:
          title: The key of the account to which the net positions belongs.
          minLength: 1
          type: string
          x-type-name: AccountKey
        example: 01b64edf-da03-4145-bf33-ae21527d4c86
      - name: ClientKey
        in: query
        description: The key of the client to which the net positions belongs.
        required: true
        schema:
          title: The key of the client to which the net positions belongs.
          minLength: 1
          type: string
          x-type-name: ClientKey
        example: 493b43a5-fe85-4d1f-9071-dd4a9d4e42a4
      - name: FieldGroups
        in: query
        description: Specifies which data to return. Default is [PositionBase,PositionView]
        schema:
          title: Specifies which data to return. Default is [PositionBase,PositionView]
          type: array
          items:
            $ref: '#/components/schemas/PositionFieldGroup'
        example:
        - PositionView
      - name: PositionId
        in: path
        description: Unique ID of the position.
        required: true
        schema:
          type: string
        example: '167968381'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PositionResponse'
              example:
                NetPositionId: GBPUSD_FxSpot
                PositionBase:
                  AccountId: 192134INET
                  Amount: 100000
                  AssetType: FxSpot
                  CanBeClosed: true
                  ClientId: '654321'
                  CloseConversionRateSettled: false
                  ExecutionTimeOpen: '2016-09-02T10:25:00Z'
                  IsForceOpen: false
                  IsMarketOpen: false
                  LockedByBackOffice: false
                  OpenPrice: 1.32167
                  SpotDate: '2016-09-06'
                  Status: Open
                  Uic: 31
                  ValueDate: '2017-05-04T00:00:00Z'
                PositionId: '1019942425'
                PositionView:
                  Ask: 1.2917
                  Bid: 1.29162
                  CalculationReliability: Ok
                  CurrentPrice: 1.29169
                  CurrentPriceDelayMinutes: 0
                  CurrentPriceType: Bid
                  Exposure: 100000
                  ExposureCurrency: GBP
                  ExposureInBaseCurrency: 129192
                  InstrumentPriceDayPercentChange: 0.26
                  ProfitLossOnTrade: -2998
                  ProfitLossOnTradeInBaseCurrency: -2998
                  SettlementInstruction:
                    ActualRolloverAmount: 0
                    ActualSettlementAmount: 10
                    Amount: 10
                    IsSettlementInstructionsAllowed: false
                    Month: 7
                    SettlementType: FullSettlement
                    Year: 2020
                  TradeCostsTotal: 0
                  TradeCostsTotalInBaseCurrency: 0
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                required:
                - ErrorCode
                - Message
                type: object
                properties:
                  ErrorCode:
                    enum:
                    - InvalidClientId
                    - PositionIdNotSpecified
                    type: string
                    example: None
                    x-enum-descriptions:
                      PositionIdNotSpecified: Position not specified.
                      InvalidClientId: Indicates that the requested client id was invalid.
                  Message:
                    type: string
                  ModelState:
                    $ref: '#/components/schemas/ModelStateDictionary'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      security:
      - OpenApiOAuthSecurityScheme: []
      - OpenApiJWTSecurityScheme: []
      x-required-permissions:
        personal: Read
        community: Read
  /trade/v1/positions/exercise:
    put:
      tags:
      - Positions
      summary: Exercise an amount
      description: Forces exercise of an amount across all positions for the specified UIC. This is relevant for Futures Options, Stock Options, Stock Index Options.
      operationId: PositionsV1ExerciseAmountAsync
      requestBody:
        conte

# --- truncated at 32 KB (133 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/saxo/refs/heads/main/openapi/saxo-positions-api-openapi.yml