openapi: 3.0.1
info:
title: Services.AutoTrading Account Values Elections 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.
Note: This service is subject to special licensing agreements and not generally available to all OpenAPI applications.
'
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: Elections
description: Endpoints for election instructions
paths:
/ca/v2/elections/bulk:
put:
tags:
- Elections
summary: Send bulk election instructions
description: "Sends instructions about elections to make for given accounts and event.\r\n When posting these instructions to elect, all previous elections for the specified accounts/event are overwritten."
operationId: ElectionBulkElectAsync
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BulkElectionRequest'
example:
Accounts:
- AccountKey: 2y0tX0m9ZH7MH8HK38qM9g==
EventId: '9652429'
Options:
- AmountPct: 75
OptionId: '1'
responses:
'204':
description: No Content
content:
application/json:
schema:
$ref: '#/components/schemas/BulkElectionResponseListResult'
example:
Data:
- AccountId: '845935'
Status: Accepted
'202':
description: Election instructions have been accepted.
'403':
description: Logged in client doesn't have necessary accesses to make election.
'400':
description: Bad Request
content:
application/json:
schema:
required:
- ErrorCode
- Message
type: object
properties:
ErrorCode:
enum:
- BulkBuyUpNotAllowed
- BulkOverSubscriptionNotAllowed
- DeadlineDatePassed
- EventNotElectable
- InvalidBulkElectionAmount
- InvalidEvent
- InvalidEventStatusToElectOn
- InvalidEventTypeForElection
- InvalidOptionInElectionInstruction
- InvalidTotalBulkElectionAmount
- NoSubAccountHasHoldingOnEvent
- OptionNotAvailableForElection
- SplitElectionsNotAllowedOnEvent
- TotalElectionAmountShouldNotBeZero
type: string
x-enum-descriptions:
NoSubAccountHasHoldingOnEvent: No sub-account in the request has holding for event in the request.
InvalidEventStatusToElectOn: Invalid election instruction if status of elected event is other than Approved.
InvalidOptionInElectionInstruction: Invalid election instruction if election is made on the option which is not available in event.
InvalidBulkElectionAmount: Invalid bulk election instruction if election percentage is less than 0 or greater than 100.
InvalidTotalBulkElectionAmount: Total percentage across options cannot exceed 100%.
OptionNotAvailableForElection: Invalid election instruction if election is made on Inactive or Cancelled option.
SplitElectionsNotAllowedOnEvent: Invalid election instruction if election are made on more than one option for events where it is specified that split elections can't be done.
BulkOverSubscriptionNotAllowed: Over subscription is not allowed in bulk elections.
BulkBuyUpNotAllowed: BuyUp is not allowed in bulk elections.
InvalidEvent: Invalid election instruction if elected event doesn't exist.
InvalidEventTypeForElection: Invalid event type for election.
EventNotElectable: Event is not electable.
DeadlineDatePassed: Deadline date for option has passed.
TotalElectionAmountShouldNotBeZero: Total election amount, across options, should be greater than zero.
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:
confidential: Write
/ca/v2/elections:
put:
tags:
- Elections
summary: Send election instruction
description: "Sends an instruction about elections to make for a given account and event.\r\n When posting an instruction to elect, all previous elections for the specified account/event are overwritten."
operationId: ElectionElectAsync
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ElectionRequest'
example:
AccountKey: 2y0tX0m9ZH7MH8HK38qM9g==
EventId: '9652429'
Options:
- Amount: 100
OptionId: '1'
Remarks: Electing on 100 holdings for option 1.
responses:
'204':
description: No Content
'202':
description: Election instructions have been accepted.
'403':
description: Logged in client doesn't have necessary accesses to make election.
'400':
description: Bad Request
content:
application/json:
schema:
required:
- ErrorCode
- Message
type: object
properties:
ErrorCode:
enum:
- AccountNotActive
- BlocksExistForOwnedContracts
- ClientFxDslLimitation
- ClientFxNopLimitation
- ClientNotActive
- ClientSingleCurrencyExposureLimitation
- ContactExposureLimitation
- CurrencyConversionRateOutOfToleranceRange
- DeadlineDatePassed
- ElectionAmountExceedsEligibleHolding
- ElectionAmountGreaterThanMaxExercisableQuantity
- ElectionAmountLessThanMinExercisableQuantity
- ElectionAmountNotMultipleOfMinExercisableMultipleQuantity
- EventNotElectable
- ForcedExposureReductionViolation
- HasSystemOrders
- IllegalInstrumentTypeForAccount
- InstrumentForcedExposureReductionViolation
- InsufficientCash
- InvalidElectionAmount
- InvalidEvent
- InvalidEventForHolding
- InvalidEventStatusToElectOn
- InvalidEventTypeForElection
- InvalidOptionInElectionInstruction
- InvestmentValueLessThanMinimumLimit
- MarginBorderLine
- OnlySidedReductionAllowed
- OptionNotAvailableForElection
- OrderPlacementWouldExceedMargin
- OrdersAlreadyExistForOwnedContracts
- OverSubscriptionNotAllowed
- OwnerRejection
- PostingModeViolation
- RelatedPositionAlreadyClosed
- RelatedPositionLockedUntilSettlement
- SaxoExposureError
- SaxoMarginRequirementError
- SaxoSymbolError
- SellExceedsSettledExposure
- SplitElectionsNotAllowedOnEvent
- TotalElectionAmountShouldNotBeZero
- TradeCannotCloseRelatedPosition
- TradeFollowerCannotElect
- TradeLeaderCanElectOnlyOneOption
- TradingDisabled
- TradingProfileViolation
- UnknownPosition
- WouldComeTooCloseToAccountValueProtectionLimit
- WouldExceedAccountValueProtectionLimit
- WouldExceedCreditLine
- WouldExceedEquityConcentrationLimit
- WouldExceedMargin
- WouldExceedMarginCeiling
- WouldExceedMaxCreditLine
- WouldExceedMaxCreditLineLimit
- WouldExceedPrecheckMarginUtilizationLimit
- WouldExceedSettlementLine
- WouldExceedTradingLine
type: string
x-enum-descriptions:
ElectionAmountLessThanMinExercisableQuantity: Invalid election instruction if elected amount in option is more than minimum exercisable quantity as specified in corresponding option.
ElectionAmountGreaterThanMaxExercisableQuantity: Invalid election instruction if elected amount in option is more than maximum exercisable quantity as specified in corresponding option.
ElectionAmountNotMultipleOfMinExercisableMultipleQuantity: Invalid election instruction if elected amount in option is not in multiple as specified in corresponding option.
InvalidEventForHolding: Invalid election instruction if event is not applicable for client's holding account.
ElectionAmountExceedsEligibleHolding: Invalid election instruction if total election amount is more than eligible holding, excluding over subscription.
InvalidOptionInElectionInstruction: Invalid election instruction if election is made on the option which is not available in event.
InvalidEvent: Invalid election instruction if elected event doesn't exist.
InvalidElectionAmount: Invalid election instruction if election amount is less than 0.
InvalidEventStatusToElectOn: Invalid election instruction if status of elected event is other than Approved.
OptionNotAvailableForElection: Invalid election instruction if election is made on Inactive or Cancelled option.
OverSubscriptionNotAllowed: Invalid election instruction if instruction contains over subscribed without fully electing holdings under exercise.
SplitElectionsNotAllowedOnEvent: Invalid election instruction if election are made on more than one option for events where it is specified that split elections can't be done.
TradeLeaderCanElectOnlyOneOption: Trade leader can elect only one option.
TradeFollowerCannotElect: Trade follower is not allowed to elect.
InvalidEventTypeForElection: Invalid event type for election.
EventNotElectable: Event is not electable.
DeadlineDatePassed: Deadline date for option has passed.
TotalElectionAmountShouldNotBeZero: Total election amount, across options, should be greater than zero.
OwnerRejection: The owner of the client rejected the clients pre check.
WouldExceedMaxCreditLine: Client tries to buy stocks, while he doesn’t have enough collateral available.
WouldExceedMaxCreditLineLimit: Client tries to buy stocks, and as a result of the trade, he will breach his loan limit.
ContactExposureLimitation: Client is part of a contact. The aggregated exposure of the contact is not within the bounderies set for any of the clients which are a member of the contact.
InsufficientCash: Client does not have sufficient cash.
MarginBorderLine: Client is on borderline margin.
OrdersAlreadyExistForOwnedContracts: There are already orders for all owned contracts.
SaxoExposureError: Exposure would be exceeded.
SaxoMarginRequirementError: Client does not have enough margin.
SaxoSymbolError: System couldn't find the security for which election was made.
WouldExceedMargin: Continuing the trade would seriously exceed margin.
AccountNotActive: The account is not active.
ClientNotActive: The client is not active.
UnknownPosition: Related position not found.
IllegalInstrumentTypeForAccount: Illegal instrument type for account.
ForcedExposureReductionViolation: Only exposure reduction is allowed for the traded instrument.
PostingModeViolation: Either insufficient position to close or opening in wrong direction.
TradingProfileViolation: Trade would violate conditions set by client trading profile.
OrderPlacementWouldExceedMargin: Placing the order would exceed margin.
WouldExceedMarginCeiling: Would exceed margin ceiling.
OnlySidedReductionAllowed: Only exposure reduction is allowed for the traded instrument.
WouldExceedEquityConcentrationLimit: Execution of an operation would exceed equity concentration limit.
WouldExceedTradingLine: Continuing the action would exceed trading line utilization.
WouldExceedCreditLine: Continuing the action would exceed credit line utilization.
RelatedPositionAlreadyClosed: The position that this trade was intended to close is already closed.
TradeCannotCloseRelatedPosition: Trade cannot close related position as they do not match.
WouldExceedSettlementLine: Continuing the action would exceed settlement line utilization.
WouldExceedAccountValueProtectionLimit: The equity value would go below the configured limit on the account.
InstrumentForcedExposureReductionViolation: Only exposure reduction is allowed for the traded instrument.
ClientFxNopLimitation: Order causes client to exceed FX NOP limit.
ClientSingleCurrencyExposureLimitation: Order causes client to exceed.
WouldExceedPrecheckMarginUtilizationLimit: Would exceed the clients own risk aversion limit.
TradingDisabled: Trading is disabled for the client. Any and all prechecks will be rejected for the client.
RelatedPositionLockedUntilSettlement: Trade cannot close related position as related position is locked until settlement.
SellExceedsSettledExposure: Instructions cannot be placed for quantity more than held.
InvestmentValueLessThanMinimumLimit: Order/trade value is less than the minimum allowed.
WouldComeTooCloseToAccountValueProtectionLimit: The equity value would get too close to the configured limit on the account. But still above.
CurrencyConversionRateOutOfToleranceRange: Election would result in breach of currency conversion tolerance range.
BlocksExistForOwnedContracts: Block already exists for the security election made for.
ClientFxDslLimitation: Order causes client to exceed FX DSL Limit.
HasSystemOrders: Pre check condition does not support client having any system orders.
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:
confidential: Write
components:
schemas:
ElectionRequest:
title: Election instruction
required:
- AccountKey
- EventId
- Options
type: object
properties:
AccountKey:
title: Account on which elections are to be made
minLength: 1
type: string
x-type-name: AccountKey
EventId:
title: Event on which election is to be made
pattern: ^\d*$
type: string
Options:
title: Instruction per option
type: array
items:
$ref: '#/components/schemas/OptionInstruction'
additionalProperties: false
ModelStateDictionary:
type: object
additionalProperties:
type: array
items:
type: string
OptionInstruction:
title: Election instruction on option
required:
- OptionId
- Amount
type: object
properties:
Amount:
title: Quantity to be elected
type: number
OptionId:
title: Option on which election is to be made
pattern: ^\d*$
type: string
Remarks:
title: Remarks by client
type: string
additionalProperties: false
BulkElectionResponse:
title: Bulk election response
type: object
properties:
AccountId:
title: Account id
type: string
Message:
title: Message
type: string
Status:
title: Status
allOf:
- $ref: '#/components/schemas/StatusCode'
additionalProperties: false
BulkElectionRequest:
title: Bulk election instruction
required:
- Accounts
- EventId
- Options
type: object
properties:
Accounts:
title: Accounts on which elections are to be made
type: array
items:
$ref: '#/components/schemas/Account'
EventId:
title: Event on which election is to be made
pattern: ^\d*$
type: string
Options:
title: Instruction per option for bulk election
type: array
items:
$ref: '#/components/schemas/BulkOptionInstruction'
additionalProperties: false
StatusCode:
title: Status
enum:
- Accepted
- Rejected
type: string
x-enum-descriptions:
Accepted: Accepted
Rejected: Rejected
Account:
title: Account key wrapper
required:
- AccountKey
type: object
properties:
AccountKey:
title: Account key
minLength: 1
type: string
x-type-name: AccountKey
additionalProperties: false
BulkElectionResponseListResult:
type: object
properties:
Data:
type: array
items:
$ref: '#/components/schemas/BulkElectionResponse'
description: The collection of entities for this feed.
MaxRows:
type: number
description: The maximum number of rows that can be returned (if applicable).
__count:
type: number
description: The total count of items in the feed.
__next:
type: string
description: The link for the next page of items in the feed.
additionalProperties: false
BulkOptionInstruction:
title: Election instruction on option for bulk election
required:
- OptionId
- AmountPct
type: object
properties:
AmountPct:
title: Quantity to be elected, in percentage
type: number
OptionId:
title: Option on which election is to be made
pattern: ^\d*$
type: string
additionalProperties: false
responses:
TooManyRequests:
description: The request was rejected due to rate limit being exceeded.
Unauthorized:
description: Indicates that the request was rejected because the 'Authorization' header was missing in the request or contained an invalid security token.
ServiceUnavailable:
description: Service Unavailable.
securitySchemes:
OpenApiJWTSecurityScheme:
type: http
scheme: bearer
bearerFormat: JWT
OpenApiOAuthSecurityScheme:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://sim.logonvalidation.net/authorize
tokenUrl: https://sim.logonvalidation.net/token
scopes: {}