Skip to content

Instantly share code, notes, and snippets.

@andreasevers
Last active February 24, 2024 21:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save andreasevers/86af2a0e64b01db6602e06826d2f09e1 to your computer and use it in GitHub Desktop.
Save andreasevers/86af2a0e64b01db6602e06826d2f09e1 to your computer and use it in GitHub Desktop.
openapi: 3.0.0
servers:
- description: RS Pre-Validations API
url: "https://pre-validations.rs<placeholder>.korfinancial.com"
info:
x-audience: external-public
x-api-id: 88522688-caeb-47f6-9e7e-bac59f52e67a
description: Provides services for querying regulatory messages
version: "1.0.0"
title: RS Pre-Validations API
contact:
name: KOR Engineering
email: support@korfinancial.com
url: https://www.korfinancial.com/
license:
name: Apache 2.0
url: 'https://www.apache.org/licenses/LICENSE-2.0.html'
tags:
- name: Regulatory Messages
description: Reportable messages induced from submissions after eligibility
paths:
/regulatory-messages:
get:
tags:
- Regulatory Messages
summary: Query a list of regulatory messages
description: Query a list of regulatory messages
security:
- OAuth2:
- openid
parameters:
- in: query
name: entityId
description: Your KOR entity identifier. Your admin can obtain this identifier from the KOR Central UI under entity client details.
required: false
schema:
type: string
format: uuid
example: EE740BB0-F854-4054-B5DB-0EAA6B3F6DBB
- in: query
name: validationStatus
description: The validation status of the regulatory message
required: false
schema:
$ref: '#/components/schemas/ValidationStatus'
- in: query
name: timeliness
description: Parameter to filter out rejected message where the specified timeliness is applicable. Also works in combination with the query parameter.
required: false
schema:
type: array
items:
type: string
x-extensible-enum:
- TIME_LEFT
- NEAR_LATE
- PAST_DUE
- NOT_APPLICABLE
- NOT_CALCULABLE
- in: query
name: cursor
description: The cursor to get the next page, empty returns the first page
required: false
schema:
type: string
nullable: true
- in: query
name: pageSize
description: Max amount of results that should be returned
required: false
schema:
type: integer
- in: query
name: scroll
description: A flag to define you intent to scroll through your results
required: false
schema:
type: boolean
- in: query
name: query
description: >
URL encoded JSON string containing the search query with various filter options.<br/>
<b>JSON Structure</b>
<p>The following JSON snippet can be passed in through an HTTP query parameter URL encoded:</p>
<p>
<code>{"lf": "and", "q": [{"p": ["field"], "cf": "eq", "v": ["value"]}]}</code>
</p>
<b>Possible "cf" Values</b>
<p>The "cf" field can have the following values based on data types:</p>
<b>Integers:</b>
<ul>
<li>'neq' (Not Equals)</li>
<li>'eq' (Equals)</li>
<li>'gt' (Greater Than)</li>
<li>'gte' (Greater Than or Equals)</li>
<li>'lt' (Less Than)</li>
<li>'lte' (Less Than or Equals)</li>
</ul>
<b>String:</b>
<ul>
<li>'neq' (Not Equals)</li>
<li>'eq' (Equals)</li>
<li>'ct' (Contains)</li>
</ul>
<b>Dates:</b>
<p>Represented as a unix timestamp as <b>long</b></p>
<ul>
<li>'neq' (Not Equals)</li>
<li>'eq' (Equals)</li>
<li>'gt' (Greater Than)</li>
<li>'gte' (Greater Than or Equals)</li>
<li>'lt' (Less Than)</li>
<li>'lte' (Less Than or Equals)</li>
</ul>
<b>Boolean:</b>
<p>Represented as the strings <b>true</b> or <b>false</b></p>
<ul>
<li>'neq' (Not Equals)</li>
<li>'eq' (Equals)</li>
</ul>
<b>Supported fields and their corresponding types:</b>
<ul>
<li>identifier: text</li>
<li>status: text</li>
<li>validationStatus: text</li>
<li>createdTimestamp: date</li>
<li>validatedTimestamp: date</li>
<li>assetClass: text</li>
<li>messageType: text</li>
<li>actionType: text</li>
<li>eventType: text</li>
<li>reportingJurisdiction: text</li>
<li>counterparty1: text</li>
<li>counterparty2: text</li>
<li>product: text</li>
<li>repository: text</li>
<li>clientTradeIdentifier: text</li>
<li>tradeIdentifier: text</li>
<li>timeliness.requiredTimestamp: text</li>
<li>timeliness.submittedLateIndicator: boolean</li>
<li>timeliness.submittedLateDuration: long</li>
<li>timeliness.rule: text</li>
<li>userIdentifier: text</li>
</ul>
<p>the In the context of your system, the attribute <b>validationStatus</b> with a value of <b>REJECTED</b> is conditionally required when performing a system query specifically for regulatory messages that have been rejected.
</p>
<ul>
<li>rejections.code: text</li>
<li>rejections.field: text</li>
<li>rejections.fieldType: text</li>
<li>rejections.submittedValue: text</li>
<li>rejections.ruleId: text</li>
</ul>
required: false
schema:
type: string
example: '%7B%22p%22%3A%5B%22field%22%5D%2C%22cf%22%3A%22eq%22%2C%22v%22%3A%5B%22value1%22%2C%22value2%22%5D%7D'
nullable: true
responses:
200:
description: The submissions
content:
application/json:
schema:
$ref: '#/components/schemas/RegulatoryMessagesSearchResult'
400:
description: Bad Request
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
401:
description: Unauthorized
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
403:
description: Forbidden
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
404:
description: Not Found
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
405:
description: Method Not Allowed
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
406:
description: Not Acceptable
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
415:
description: Unsupported Media Type
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
500:
description: Internal Server Error
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
504:
description: Gateway Timeout
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
default:
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
/regulatory-messages/{identifier}:
get:
tags:
- Regulatory Messages
summary: Get regulatory message by identifier
description: Get regulatory message by identifier
security:
- OAuth2:
- openid
parameters:
- in: path
name: identifier
description: The regulatory message identifier
required: true
schema:
type: string
format: uuid
example: EE740BB0-F854-4054-B5DB-0EAA6B3F6DBB
- in: query
name: validationStatus
description: The validation status of the regulatory message
required: false
schema:
$ref: '#/components/schemas/ValidationStatus'
responses:
200:
description: The regulatory message details
content:
application/json:
schema:
$ref: '#/components/schemas/RegulatoryMessageDetails'
400:
description: Bad Request
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
401:
description: Unauthorized
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
403:
description: Forbidden
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
404:
description: Not Found
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
405:
description: Method Not Allowed
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
406:
description: Not Acceptable
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
415:
description: Unsupported Media Type
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
500:
description: Internal Server Error
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
504:
description: Gateway Timeout
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
default:
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
/regulatory-messages/{identifier}/resolution:
post:
tags:
- messages
summary: Resolve the rejected regulatory message by ignoring it
description: Create a resolution of the rejected message by ignoring the rejected message
security:
- OAuth2:
- openid
parameters:
- in: path
name: identifier
description: KOR SDR generated unique and random identifier for the rejected regulatory message
required: true
schema:
type: string
format: uuid
example: EE740BB0-F854-4054-B5DB-0EAA6B3F6DBB
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateResolutionRequestObject'
responses:
202:
description: Resolve rejected regulatory message accepted
400:
description: Bad Request
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
401:
description: Unauthorized
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
403:
description: Forbidden
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
404:
description: Not Found
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
405:
description: Method Not Allowed
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
406:
description: Not Acceptable
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
500:
description: Internal Server Error
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
504:
description: Gateway Timeout
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
default:
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
/regulatory-messages/statistics/rejections/fields:
get:
tags:
- statistics
summary: Get the statistics on the amount of regulatory message rejections by field
description: Query rejection totals for all regulatory messages grouped by rejected field, with specific groups by timeliness.
security:
- OAuth2:
- openid
parameters:
- in: query
name: entityId
description: Your KOR entity identifier. Your admin can obtain this identifier from the KOR Central UI under entity client details.
schema:
type: string
format: uuid
example: EE740BB0-F854-4054-B5DB-0EAA6B3F6DBB
responses:
200:
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/RejectionStatisticsByField'
400:
description: Bad Request
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
401:
description: Unauthorized
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
403:
description: Forbidden
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
405:
description: Method Not Allowed
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
406:
description: Not Acceptable
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
500:
description: Internal Server Error
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
504:
description: Gateway Timeout
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
default:
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
/regulatory-messages/statistics/rejections/categories:
get:
tags:
- statistics
summary: Get statistics on the amount of regulatory message rejections by category
description: Query rejection totals for all regulatory messages grouped by rejection category, with specific groups by timeliness.
security:
- OAuth2:
- openid
parameters:
- in: query
name: entityId
description: Your KOR entity identifier. Your admin can obtain this identifier from the KOR Central UI under entity client details.
required: true
schema:
type: string
format: uuid
example: EE740BB0-F854-4054-B5DB-0EAA6B3F6DBB
responses:
200:
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/RejectionStatisticsByCategory'
400:
description: Bad Request
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
401:
description: Unauthorized
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
403:
description: Forbidden
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
405:
description: Method Not Allowed
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
406:
description: Not Acceptable
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
500:
description: Internal Server Error
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
504:
description: Gateway Timeout
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
default:
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
/regulatory-messages/statistics/rejections/rejections:
get:
tags:
- statistics
summary: Get statistics on the amount of regulatory message rejections by rejection
description: Query rejection totals for all regulatory messages grouped by rejection submitted value, code and field, with specific groups by timeliness.
security:
- OAuth2:
- openid
parameters:
- in: query
name: entityId
description: Your KOR entity identifier. Your admin can obtain this identifier from the KOR Central UI under entity client details.
required: true
schema:
type: string
format: uuid
example: EE740BB0-F854-4054-B5DB-0EAA6B3F6DBB
responses:
200:
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/RejectionStatisticsByRejection'
400:
description: Bad Request
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
401:
description: Unauthorized
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
403:
description: Forbidden
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
405:
description: Method Not Allowed
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
406:
description: Not Acceptable
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
500:
description: Internal Server Error
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
504:
description: Gateway Timeout
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
default:
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
/regulatory-messages/resolution:
post:
tags:
- messages
summary: Resolve the rejected regulatory messages by ignoring it
description: Create a resolution of the rejected messages by ignoring the rejected messages
security:
- OAuth2:
- openid
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateResolutionsRequestObject'
responses:
202:
description: Resolve rejected regulatory message accepted
400:
description: Bad Request
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
401:
description: Unauthorized
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
403:
description: Forbidden
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
404:
description: Not Found
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
405:
description: Method Not Allowed
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
406:
description: Not Acceptable
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
500:
description: Internal Server Error
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
504:
description: Gateway Timeout
content:
"application/problem+json":
schema:
$ref: '#/components/schemas/Problem'
default:
description: Internal Server Error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
components:
schemas:
CreateResolutionRequestObject:
type: object
required:
- resolution
properties:
resolution:
type: string
description: The resolution of the rejected regulatory message
x-extensible-enum:
- IGNORED
CreateResolutionsRequestObject:
type: object
required:
- resolution
- identifiers
properties:
resolution:
type: string
description: The resolution of the rejected regulatory message
x-extensible-enum:
- IGNORED
identifiers:
type: array
description: The list of identifiers of rejected regulatory messages
items:
type: string
MessageStatus:
type: string
description: The status of the processed message
x-extensible-enum:
- CREATION_FAILED
- CREATED
- VALIDATION_EXECUTED
- IGNORED
- SUPERSEDED
- RESOLVED
- CANCELLED
ValidationStatus:
type: string
description: The validation status of the processed message
x-extensible-enum:
- FAILED
- NOOP
- REJECTED
- VALIDATED
RegulatoryMessagesSearchResult:
description: The search result with a cursor, indicating whether there are more items and the returned (subset of) submissions
type: object
required:
- hasMore
- items
properties:
cursor:
description: Cursor for the current search request.
type: string
nullable: true
hasMore:
description: Indicating whether there are more items that can be retrieved.
type: boolean
items:
description: The list of items
type: array
items:
$ref: '#/components/schemas/RegulatoryMessage'
RegulatoryMessage:
type: object
description: Specific element of the regulatory message
properties:
identifier:
type: string
format: uuid
example: 3AE803B1-5765-481D-BFAB-D176679D7D8C
messageStatus:
$ref: '#/components/schemas/MessageStatus'
validationStatus:
type: string
nullable: true
x-extensible-enum:
- FAILED
- NOOP
- REJECTED
- VALIDATED
actionType:
type: string
example: NEWT
eventType:
type: string
example: TRAD
messageType:
type: string
x-extensible-enum:
- TRANSACTION
- PUBLIC
- COLLATERAL
- VALUATION
jurisdiction:
type: string
x-extensible-enum:
- CFTC
- ESMA
- ASIC
- MAS
- CA
- FCA
- ACER
- SEC
repository:
type: string
description: Where the message is being submitted to
x-extensible-enum:
- KOR
- DTCC
clientTradeIdentifier:
type: string
example: client-trade-id
tradeIdentifier:
type: string
example: 3AE803B1-5765-481D-BFAB-D176679D7D8C
submitterIdentifier:
type: string
counterparty1:
type: string
example: LEI12345671234567890
counterparty2:
type: string
example: LEI12345671234567890
assetClass:
type: string
example: CO
product:
type: string
example: GOLD
warningCount:
description: The number of warnings
type: number
example: 2
rejectionCount:
type: number
messageRequiredSubmissionTimestamp:
type: string
format: datetime
example: 2023-12-12T12:00:00Z
nullable: true
createdTimestamp:
type: string
format: datetime
example: 2023-12-12T12:00:00Z
validatedTimestamp:
type: string
format: datetime
nullable: true
example: 2023-12-12T12:00:00Z
failureReason:
type: string
nullable: true
lineage:
$ref: '#/components/schemas/RegulatoryMessageLineage'
userIdentifier:
type: string
example: 68F38959-1802-4DBC-A43D-651A7E441A05
description: The user that triggered the creation of the regulatory message
permissions:
$ref: '#/components/schemas/Permissions'
uniqueProductIdentifier:
type: string
description: The unique product identifier of the regulatory message
RegulatoryMessageDetails:
type: object
description: Regulatory message details
properties:
identifier:
type: string
format: uuid
example: 3AE803B1-5765-481D-BFAB-D176679D7D8C
kdm:
type: object
messageStatus:
$ref: '#/components/schemas/MessageStatus'
validationStatus:
type: string
nullable: true
x-extensible-enum:
- FAILED
- NOOP
- REJECTED
- VALIDATED
messageType:
type: string
x-extensible-enum:
- TRANSACTION
- PUBLIC
- COLLATERAL
- VALUATION
actionType:
type: string
example: NEWT
eventType:
type: string
example: TRAD
jurisdiction:
type: string
x-extensible-enum:
- CFTC
- ESMA
- ASIC
- MAS
- CA
- FCA
- ACER
- SEC
repository:
type: string
description: Where the message is being submitted to
x-extensible-enum:
- KOR
- DTCC
clientTradeIdentifier:
type: string
example: client-trade-id
tradeIdentifier:
type: string
example: 3AE803B1-5765-481D-BFAB-D176679D7D8C
submitterIdentifier:
type: string
counterparty1:
type: string
example: LEI12345671234567890
counterparty2:
type: string
example: LEI12345671234567890
assetClass:
type: string
example: CO
product:
type: string
example: GOLD
messageRequiredSubmissionTimestamp:
type: string
format: datetime
example: 2023-12-12T12:00:00Z
nullable: true
createdTimestamp:
type: string
format: datetime
example: 2023-12-12T12:00:00Z
validatedTimestamp:
type: string
format: datetime
nullable: true
example: 2023-12-12T12:00:00Z
rejectionCount:
type: number
failureReason:
type: string
nullable: true
rejections:
type: array
nullable: true
items:
type: object
warningCount:
description: The number of warnings
type: number
example: 2
warnings:
type: array
nullable: true
items:
$ref: '#/components/schemas/Warning'
korCalculatedFields:
type: array
nullable: true
items:
$ref: '#/components/schemas/FieldValue'
clientSubmittedFields:
type: array
nullable: true
items:
$ref: '#/components/schemas/FieldValue'
lineage:
$ref: '#/components/schemas/RegulatoryMessageLineage'
userIdentifier:
type: string
example: 68F38959-1802-4DBC-A43D-651A7E441A05
description: The user that triggered the creation of the regulatory message
permissions:
$ref: '#/components/schemas/Permissions'
uniqueProductIdentifier:
type: string
description: The unique product identifier of the regulatory message
FieldValue:
type: object
required:
- category
- name
properties:
category:
type: string
name:
type: string
value:
oneOf:
- type: integer
example: 123
- type: string
nullable: true
example: USD
- type: boolean
example: true
- type: array
items:
anyOf:
- type: string
nullable: true
- type: boolean
- type: integer
description: Fields can have an array as value if they are multi-value fields
RegulatoryMessageLineage:
description: The lineage of the regulatory message.
type: object
properties:
submissionIdentifier:
description: The submission identifier
type: string
format: uuid
example: EE740BB0-F854-4054-B5DB-0EAA6B3F6DBB
ingestionIdentifier:
description: The ingestion identifier
type: string
format: uuid
example: EE740BB0-F854-4054-B5DB-0EAA6B3F6DBB
ingestionType:
description: The ingestion type
type: string
x-extensible-enum:
- SINGLE_ENTRY
- UPLOAD
ingestionIndex:
description: The ingestion index
type: integer
dataFeedIdentifier:
description: The data feed identifier
type: string
format: uuid
example: EE740BB0-F854-4054-B5DB-0EAA6B3F6DBB
Warning:
description: A warning
type: object
properties:
fieldName:
description: The field name of the warning
type: string
description:
description: The description of the change caused warning
type: string
reason:
description: The reason of the change caused warning
type: string
category:
description: The category of the warning
x-extensible-enum:
- HUB
- REG
tag:
description: The tag of the function in which warning was generated
type: string
argumentName:
description: The argument name of the function in which warning was generated
type: string
argumentValue:
description: The argument value of the function in which warning was generated
type: string
RejectionStatisticsByField:
type: object
required:
- fields
properties:
fields:
type: array
description: List of individual rejection statistics by field
items:
$ref: '#/components/schemas/RejectionFieldStatistics'
description: A dictionary of total timeliness statistics and rejections by field
example:
"fields": [
{
field: 'assetClass',
nearLate: 400,
timeLeft: 200,
pastDue: 100,
unknown: 0,
total: 700,
errors: [
{
code: 1,
name: 'NUMERIC_LENGTH',
rejectionReason: 'Value is too long',
nearLate: 200,
timeLeft: 100,
pastDue: 50,
unknown: 0,
total: 350
},
{
code: 10,
name: 'INVALID_DATE',
rejectionReason: 'Date format is invalid',
nearLate: 200,
timeLeft: 100,
pastDue: 50,
unknown: 0,
total: 350
}
]
},
{
field: 'paymentAmount',
nearLate: 10,
timeLeft: 10,
pastDue: 5,
unknown: 0,
total: 40,
errors: [
{
code: 1029,
name: 'INVALID_FIELD_TYPE',
rejectionReason: 'Field type [x] is invalid',
nearLate: 10,
timeLeft: 10,
pastDue: 5,
unknown: 0,
total: 40
}
]
}
]
RejectionStatisticsByCategory:
type: object
required:
- categories
properties:
categories:
type: array
description: List of individual rejection statistics by category
items:
$ref: '#/components/schemas/RejectionCategoryStatistics'
description: A dictionary of total timeliness statistics and rejections by category
example:
"categories": [
{
category: 'INVALID_FORMAT',
nearLate: 400,
timeLeft: 200,
pastDue: 100,
unknown: 0,
total: 700,
errors: [
{
code: 1,
name: 'NUMERIC_LENGTH',
rejectionReason: 'Value is too long',
nearLate: 200,
timeLeft: 100,
pastDue: 50,
unknown: 0,
total: 350
},
{
code: 10,
name: 'INVALID_DATE',
rejectionReason: 'Date format is invalid',
nearLate: 200,
timeLeft: 100,
pastDue: 50,
unknown: 0,
total: 350
}
]
},
{
category: 'INVALID_FIELD_TYPE',
nearLate: 10,
timeLeft: 10,
pastDue: 5,
unknown: 0,
total: 40,
errors: [
{
code: 1029,
name: 'INVALID_FIELD_TYPE',
rejectionReason: 'Field type [x] is invalid',
nearLate: 10,
timeLeft: 10,
pastDue: 5,
unknown: 0,
total: 40
}
]
}
]
RejectionStatisticsByRejection:
type: object
required:
- rejections
properties:
rejections:
type: array
description: List of individual rejection statistics by rejections
items:
$ref: '#/components/schemas/RejectionStatistics'
description: A dictionary of total timeliness statistics and rejections by submitted value
example:
{
"rejections": [ {
"code": "25",
"name": "INVALID_ENUM",
"category": "INVALID_ENUM",
"field": "messageType",
"submittedValue": "COCR",
"rejectionReason": "Invalid allowed value",
"nearLate": 0,
"timeLeft": 0,
"pastDue": 2,
"notApplicable": 0,
"notCalculable": 0,
"total": 2,
"rejectionDetails": [
{
"fieldType": "string",
"resolution": "Allowed values include [ CORR, EROR, MARU, MODI, NEWT, PRTO, REVI, TERM, VALU ]",
"determinantFields": "[ instrumentType, postPricedSwap, assetClass ]",
"arguments": "[ CORR, EROR, MARU, MODI, NEWT, PRTO, REVI, TERM, VALU ]"
}
]
}, {
"code": "30",
"name": "COMPARES_EMPTY_DATA",
"category": "COMPARES_EMPTY_DATA",
"field": "assetClass",
"submittedValue": "NEW",
"rejectionReason": "Submitted values in either/both field [$$field-name$$] with value [$$field-value$$] and field [{argument-0}] with value [{argument-1}] are empty",
"nearLate": 0,
"timeLeft": 0,
"pastDue": 1,
"notApplicable": 0,
"notCalculable": 0,
"total": 1,
"rejectionDetails": [
{
"fieldType": "string",
"resolution": "Allowed values include [ CORR, EROR, MARU, MODI, NEWT, PRTO, REVI, TERM, VALU ]",
"determinantFields": "[ instrumentType, postPricedSwap, assetClass ]",
"arguments": "[ CORR, EROR, MARU, MODI, NEWT, PRTO, REVI, TERM, VALU ]"
}
]
} ]
}
RejectionFieldStatistics:
allOf: # Combines the RejectionTimelinessStatistics and the inline model
- $ref: '#/components/schemas/RejectionTimelinessStatistics'
- type: object
required:
- field
- errors
properties:
field:
type: string
errors:
type: array
description: List of individual rejection statistics for the encompassing category
items:
$ref: '#/components/schemas/RejectionErrorStatistics'
RejectionCategoryStatistics:
allOf: # Combines the RejectionTimelinessStatistics and the inline model
- $ref: '#/components/schemas/RejectionTimelinessStatistics'
- type: object
required:
- category
- errors
properties:
category:
type: string
errors:
type: array
description: List of individual rejection statistics for the encompassing category
items:
$ref: '#/components/schemas/RejectionErrorStatistics'
RejectionStatistics:
type: object
nullable: true
properties:
code:
type: string
nullable: false
name:
type: string
nullable: false
category:
type: string
nullable: false
field:
type: string
nullable: false
submittedValue:
type: string
nullable: false
rejectionReason:
type: string
nullable: false
nearLate:
type: number
description: The near late count
timeLeft:
type: number
description: The time left count
pastDue:
type: number
description: The past due count
notApplicable:
type: number
description: The amount of message where timeliness is not applicable
notCalculable:
type: number
description: The amount of message where timeliness can not be calculated
total:
type: number
description: The total count
rejectionDetails:
type: array
description: List of individual rejection statistics for the encompassing category
items:
$ref: '#/components/schemas/RejectionStatisticDetails'
RejectionStatisticDetails:
properties:
fieldType:
type: string
description: The type of the field for which the error occurred
example: string
resolution:
type: string
description: The resolution for the error
example: Allowed values include [CORR, EROR, MARU, MODI, NEWT, PRTO, REVI, TERM, VALU]
determinantFields:
type: array
items:
type: string
description: Array of fields that contributed to the conditional logic for the rule that created this error. This can also include required fields that were omitted in the submission.
additionalProperties: true
example:
[ instrumentType, postPricedSwap, assetClass ]
arguments:
type: array
description: Arguments for the rejection reason or resolution
items:
type: string
example: [ CORR, EROR, MARU, MODI, NEWT, PRTO, REVI, TERM, VALU ]
RejectionErrorStatistics:
allOf: # Combines the RejectionTimelinessStatistics and the inline model
- $ref: '#/components/schemas/RejectionTimelinessStatistics'
- type: object
required:
- code
- name
- rejectionReason
properties:
code:
type: string
name:
type: string
rejectionReason:
type: string
RejectionTimelinessStatistics:
type: object
required:
- nearLate
- timeLeft
- pastDue
- notApplicable
- notCalculable
- total
properties:
nearLate:
type: number
description: The near late count
timeLeft:
type: number
description: The time left count
pastDue:
type: number
description: The past due count
notApplicable:
type: number
description: The amount of message where timeliness is not applicable
notCalculable:
type: number
description: The amount of message where timeliness can not be calculated
total:
type: number
description: The total count
TradeRepositoryError:
type: object
properties:
code:
type: string
description: The error code
description:
type: string
description: The description of the error code
Permissions:
type: object
description: Experimental. The permissions the user has on a resource
properties:
canIgnore:
type: boolean
description: Experimental. Whether a user can ignore the resource
example: true
canReprocess:
type: boolean
description: Experimental. Whether a user can reprocess the resource
example: true
Problem:
type: object
properties:
type:
type: string
format: uri-reference
description: >
A URI reference that uniquely identifies the problem type only in the
context of the provided API. Opposed to the specification in RFC-7807,
it is neither recommended to be dereferenceable and point to a
human-readable documentation nor globally unique for the problem type.
default: 'about:blank'
example: '/some/uri-reference'
title:
type: string
description: >
A short summary of the problem type. Written in English and readable
for engineers, usually not suited for non technical stakeholders and
not localized.
example: some title for the error situation
status:
type: integer
format: int32
description: >
The HTTP status code generated by the origin server for this occurrence
of the problem.
minimum: 100
maximum: 600
exclusiveMaximum: true
detail:
type: string
description: >
A human readable explanation specific to this occurrence of the
problem that is helpful to locate the problem and give advice on how
to proceed. Written in English and readable for engineers, usually not
suited for non technical stakeholders and not localized.
example: some description for the error situation
instance:
type: string
format: uri-reference
description: >
A URI reference that identifies the specific occurrence of the problem,
e.g. by adding a fragment identifier or sub-path to the problem type.
May be used to locate the root of this problem in the source code.
example: '/some/uri-reference#specific-occurrence-context'
correlationId:
type: string
description: >
A correlation identity referring to the specific occurrence of the problem.
securitySchemes:
OAuth2:
type: oauth2
flows:
clientCredentials:
tokenUrl: '<placeholder>'
scopes:
submissions/write: Allows write access to submissions
submissions/read: Allows read access to submissions
authorizationCode:
authorizationUrl: '<placeholder>'
tokenUrl: '<placeholder>'
scopes:
openid: Grants user access
security:
- OAuth2:
- openid
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment