openapi: 3.1.0
info:
title: ACES ETF SubmitPLF
version: '1.0'
description: >-
The Submit PLF API allows ACES application to process plf request for ETF
basket creation.
x-ibm-name: aces-basket-submitplf
contact:
name: ACES L2 Support Team
email: funds.l2productionsupport@imceu.eu.ssmb.com
security:
- Authentication: []
tags:
- name: submitPlf
description: Operations related to ETF basket processing
servers:
- url: https://aces-basketapi-sit-uat.cloudgsl.nam.nsroot.net/tts
description: SIT Environment URL
- url: https://aces-basketapi-secure.apps.namicgswd38u.ecs.dyn.nsroot.net/tts
description: QA Environment URL
- url: https://aces-basketapi-secure.apps.namicgswd43u.ecs.dyn.nsroot.net/tts
description: UAT Environment URL
- url: https://aces-basketapi-secure.apps.namicgswd39u.ecs.dyn.nsroot.net/tts
description: CTE Environment URL
paths:
/api/etf/v1/basket/submitPlf:
post:
tags:
- submitPlf
description: >-
Posts an action request - to process plf request for ETF basket
creation.
operationId: submitPlf
summary: Process plf request for ETF basket.
parameters:
- name: Content-Type
in: header
description: Supports \"application/json\".
required: true
schema:
type: string
- name: Authorization
in: header
description: The OAuth Token prefixed with "Bearer" and space in between.
required: true
schema:
type: string
- name: client_id
in: header
required: true
description: >-
This is your unique identifier shared during your Citi API
onboarding. This is the same `client_id` used for oauth token
generation
schema:
type: string
requestBody:
description: Basket Submit PLF Object
content:
application/json:
schema:
$ref: '#/components/schemas/submitPlf'
responses:
'200':
description: OK. Returns a successful confirmation of PLF creation.
content:
application/json:
schema:
$ref: '#/components/schemas/ackResponse'
example:
clientRefId: ABC1234
fundIdentifer: 01B99ZZZZ
fundTicker: XXXYYY
apiIdentifier: PLF_ClientName
responseDateTime: 2025-10-22 10:30:00EST
responseStatus: success
responseCode: 200
message: Data uploaded successfully.
'400':
description: Bad Request Error
content:
application/json:
schema:
$ref: '#/components/schemas/nackResponse'
example:
clientRefId: ABC1234
fundIdentifer: 01B99ZZZZ
fundTicker: XXXYYY
apiIdentifier: PLF_ClientName
responseDateTime: 2025-10-22 10:30:00EST
responseStatus: failed
responseCode: 400
message:
- errorAttribute: tradeDate
errorMessage: Trade Date is neither TD nor TD+1
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ackResponse'
example:
clientRefId: ABC1234
fundIdentifer: 01B99ZZZZ
fundTicker: XXXYYY
apiIdentifier: PLF_ClientName
responseDateTime: 2025-10-22 10:30:00EST
responseStatus: failed
responseCode: 500
message: >-
Unable to serve your request at this moment. Please try again
later.
components:
schemas:
submitPlf:
title: Submit PLF Request Object
required:
- clientRefId
- tradeDate
- fundIdentifier
- fundTicker
- apiIdentifier
- orderType
- unitSize
- specifiedRecipient
- requestTimestamp
- portfolioList
type: object
properties:
clientRefId:
title: Client Reference ID
description: Unique client assigned identifier for each api request and response.
type: string
example: ABC1234
tradeDate:
title: Trade Date
description: Trade Date of the PLF.
type: string
format: date
fundIdentifier:
title: Fund Identifier
description: Unique Identifier for the fund.
type: string
example: 01A994241
fundTicker:
title: Fund Ticker
description: Unique ticker of the Fund.
type: string
example: DFAECR
apiIdentifier:
title: Api Identifier
description: Unique identifier assigned for a client.
type: string
example: PLF_ClientName
orderType:
title: Order Type
description: Order type of the basket.
type: string
example: Custom
unitSize:
title: Unit Size
description: Unit size of the basket.
type: number
example: 99999.999999999
specifiedRecipient:
title: AP Code
description: Authorization Party Code
type: string
example: '0443'
requestTimestamp:
title: Request Timestamp
description: Timestamp of the request in EST Format yyyy-MM-dd HH:mm:ssEST.
type: string
example: 2025-07-26 10:30:00EST
portfolioList:
required:
- ticker
- cusip
- sedol
- isin
- securityName
- marketValue
- weight
- price
- currencyCode
- shares
- exchangeRate
- cil
- supplementalId
type: array
items:
type: object
properties:
ticker:
title: Ticker
type: string
description: Ticker of the security.
example: EFG
cusip:
title: Cusip
type: string
description: Cusip of the security.
example: 26252TAJ5
sedol:
title: Sedol
type: string
description: Sedol of the security.
example: BJVJNX2
isin:
title: Isin
type: string
description: ISIN of the security.
example: US26252TAJ51
securityName:
title: Security Name
type: string
description: Security name of the security.
example: WESTERN COPPER AND GOLD CORP
marketValue:
title: Market Value
type: number
description: Market value of the security.
example: 99999.999999999
weight:
title: Weight
type: number
description: Weight of the security.
example: 99999.999999999
price:
title: Price
type: number
description: Price of the security.
example: 99999.999999999
currencyCode:
title: Currency Code
type: string
description: Currency code of the security.
example: BRL
shares:
title: Shares
type: number
description: Shares of the security.
example: 1600
exchangeRate:
title: Exchange Rate
type: number
description: Exchange rate of the security.
example: 7.77777777
cil:
title: CIL
type: string
description: Cash In Lieu
example: 'Y'
supplementalId:
title: Supplemental Id
type: string
description: Supplemental Id of the security.
example: EP0000ZZZZ
ackResponse:
title: PLF Submit ACK Response Object
type: object
properties:
clientRefId:
title: Client Reference ID
type: string
description: Unique client assigned identifier for each api request and response.
example: ABC1234
tradeDate:
title: Trade Date
description: Trade Date of the PLF.
type: string
format: date
fundIdentifier:
title: Fund Identifier
type: string
description: Unique Identifier for the fund.
example: 01B99ZZZZ
fundTicker:
title: Fund Ticker
type: string
description: Unique ticker of the Fund.
example: XXXYYY
apiIdentifier:
title: API Identifier
type: string
description: Unique identifier assigned for a client.
example: PLF_ClientName
responseDateTime:
title: Response Date Time
type: string
description: Response date and timestamp.
example: 2025-10-22 10:30:00EST
responseStatus:
title: Response Status
type: string
description: Status of the request.
example: success
responseCode:
title: Response Code
type: integer
description: successful response Code.
example: 200
message:
title: Message
type: string
description: successful message of the request.
example: Data uploaded successfully.
nackResponse:
title: PLF Submit NACK Response Object
type: object
properties:
clientRefId:
title: Client Reference Id
description: Unique Client assigned identifier for each api request and response.
type: string
example: ABC1234
tradeDate:
title: Trade Date
description: Trade Date of the PLF exclue the timestamp MM/DD/YYYY
type: string
format: date
fundIdentifier:
title: Fund Identifier
description: Unique Identifier for the fund.
type: string
example: 01B99ZZZZ
fundTicker:
title: Fund Ticker
description: Unique ticker of the Fund.
type: string
example: XXXYYY
apiIdentifier:
title: API Identifier
description: Unique identifier assigned for a client.
type: string
example: PLF_ClientName
responseDateTime:
title: Response Date Time
description: Response date and timestamp.
type: string
example: 2025-10-22 10:30:00EST
responseStatus:
title: Response Status
description: Status of the request.
type: string
example: failed
responseCode:
title: Response Code
description: Failure response code.
type: integer
example: 400
message:
title: Messages
description: Failure Message object.
type: array
items:
type: object
properties:
errorAttribute:
title: Error Attribute
description: Error Attribute of the Message Object.
type: string
example: tradeDate
errorAttributeValue:
title: Error Attribute Value
description: Value of the Error Attribute.
type: string
example: 3/31/2025
errorMessage:
title: Error Message
description: Reason for the error.
type: string
example: Trade Date is neither TD nor TD+1
securitySchemes:
Authentication:
description: >
Client applications must supply an authentication token with every
request, and therefore must first authenticate before it can proceed. A
client can use the OAuth 2 client credential grant flow to obtain a time
limited access token. To get an access token send a HTTP Post request to
the token endpoint using basic authentication with the client key and
secret.
**Request**
```POST
{baseURL}/tts/api/v1/oauth2/token HTTPS/1.1 Authorization: Basic
base64(key:secret) Content-Type:application/x-www-form-urlencoded {
scope=/api&grant_type=client_credentials
}```
**Response**
```
{
"token_type": "bearer",
"access_token": ,
"expires_in": ,
"consented_on":,
"scope": "api"
}```
The bearer token is valid for 1800 seconds (30 minutes) after which it will expire. At this point, you would need to re-authenticate.
type: oauth2
flows:
clientCredentials:
tokenUrl: /tts/api/v1/oauth2/token
scopes:
/api: Access to ETF PLF API