Skip to content

Instantly share code, notes, and snippets.

@georgeben
Created July 23, 2023 19:59
Show Gist options
  • Save georgeben/0c594bad5aaae1ebb31674f7dd1bcc4e to your computer and use it in GitHub Desktop.
Save georgeben/0c594bad5aaae1ebb31674f7dd1bcc4e to your computer and use it in GitHub Desktop.
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://fintrac-canafe.gc.ca/reporting-gen2/api/str/v1/schema#",
"title": "Suspicious Transaction Report Schema",
"type": "object",
"additionalProperties": false,
"properties": {
"reportDetails": {
"type": "object",
"minItems": 1,
"additionalProperties": false,
"properties": {},
"required": [
"reportTypeCode",
"submitTypeCode",
"reportingEntityNumber",
"submittingReportingEntityNumber",
"reportingEntityReportReference",
"reportingEntityContactId"
]
},
"detailsOfSuspicion": {
"type": "object",
"additionalProperties": false,
"properties": {
"discriptionOfSuspiciousActivity": {
"$ref": "#/definitions/string"
},
"suspicionTypeCode": {
"$ref": "#/definitions/optionTypeCode"
},
"publicPrivatePartnershipProjectNameCodes": {
"type": "array",
"items": {
"$ref": "#/definitions/optionTypeCode"
}
},
"politicallyExposedPersonIncludedIndicator": {
"type": "boolean"
}
},
"required": [
"publicPrivatePartnershipProjectNameCodes"
]
},
"relatedReports": {},
"actionTaken": {},
"definitions": {
"$ref": "#/definitions/personEntityData"
},
"transactions": {}
},
"required": [
"reportDetails",
"detailsOfSuspicion",
"relatedReports",
"definitions",
"transactions"
],
"definitions": {
"personEntityData": {
"type": "array",
"items": {
"anyOf": [
{
"$ref": "#/definitions/personName"
},
{
"$ref": "#/definitions/entityName"
},
{
"$ref": "#/definitions/personDetails"
},
{
"$ref": "#/definitions/entityDetails"
},
{
"$ref": "#/definitions/personAndEmployerDetails"
},
{
"$ref": "#/definitions/entityAndBeneficialOwnershipDetails"
}
]
}
},
"personName": {
"type": "object",
"additionalProperties": false,
"properties": {
"typeCode": {
"enum": [
1
]
},
"refId": {
"$ref": "#/definitions/string50"
},
"givenName": {
"$ref": "#/definitions/string100"
},
"surname": {
"$ref": "#/definitions/string100"
},
"otherNameInitial": {
"$ref": "#/definitions/string100"
}
},
"required": [
"typeCode",
"refId"
]
},
"entityName": {
"type": "object",
"additionalProperties": false,
"properties": {
"typeCode": {
"enum": [
2
]
},
"refId": {
"$ref": "#/definitions/string50"
},
"nameOfEntity": {
"$ref": "#/definitions/string100"
}
},
"required": [
"typeCode",
"refId"
]
},
"personDetails": {
"type": "object",
"additionalProperties": false,
"properties": {
"typeCode": {
"enum": [
3
]
},
"refId": {
"$ref": "#/definitions/string50"
},
"surname": {
"$ref": "#/definitions/string100"
},
"givenName": {
"$ref": "#/definitions/string100"
},
"otherNameInitial": {
"$ref": "#/definitions/string100"
},
"alias": {
"$ref": "#/definitions/string100"
},
"addressTypeCode": {
"enum": [
1,
2
]
},
"address": {
"oneOf": [
{
"$ref": "#/definitions/structuredAddress"
},
{
"$ref": "#/definitions/unstructuredAddress"
}
]
},
"telephoneNumber": {
"$ref": "#/definitions/string20"
},
"extensionNumber": {
"$ref": "#/definitions/string10"
},
"dateOfBirth": {
"$ref": "#/definitions/localDate"
},
"countryOfResidenceCode": {
"$ref": "#/definitions/alpha2"
},
"occupation": {
"$ref": "#/definitions/string200"
},
"nameOfEmployer": {
"$ref": "#/definitions/string100"
},
"identifications": {
"type": "array",
"items": {
"$ref": "#/definitions/identification"
}
}
},
"required": [
"typeCode",
"refId",
"identifications"
]
},
"entityDetails": {
"type": "object",
"additionalProperties": false,
"properties": {
"typeCode": {
"enum": [
4
]
},
"refId": {
"$ref": "#/definitions/string50"
},
"nameOfEntity": {
"$ref": "#/definitions/string100"
},
"addressTypeCode": {
"enum": [
1,
2
]
},
"address": {
"oneOf": [
{
"$ref": "#/definitions/structuredAddress"
},
{
"$ref": "#/definitions/unstructuredAddress"
}
]
},
"telephoneNumber": {
"$ref": "#/definitions/string20"
},
"extensionNumber": {
"$ref": "#/definitions/string10"
},
"natureOfPrincipalBusiness": {
"$ref": "#/definitions/string200"
},
"registrationIncorporationIndicator": {
"type": "boolean"
},
"registrationsIncorporations": {
"type": "array",
"items": {
"$ref": "#/definitions/registrationIncorporation"
}
},
"identifications": {
"type": "array",
"items": {
"$ref": "#/definitions/identification"
}
},
"authorizedPersons": {
"type": "array",
"items": {
"$ref": "#/definitions/authorizedPerson"
}
}
},
"required": [
"typeCode",
"refId",
"registrationsIncorporations",
"identifications",
"authorizedPersons"
]
},
"personAndEmployerDetails": {
"type": "object",
"additionalProperties": false,
"properties": {
"typeCode": {
"enum": [
5
]
},
"refId": {
"$ref": "#/definitions/string50"
},
"surname": {
"$ref": "#/definitions/string100"
},
"givenName": {
"$ref": "#/definitions/string100"
},
"otherNameInitial": {
"$ref": "#/definitions/string100"
},
"alias": {
"$ref": "#/definitions/string100"
},
"addressTypeCode": {
"enum": [
1,
2
]
},
"address": {
"oneOf": [
{
"$ref": "#/definitions/structuredAddress"
},
{
"$ref": "#/definitions/unstructuredAddress"
}
]
},
"telephoneNumber": {
"$ref": "#/definitions/string20"
},
"extensionNumber": {
"$ref": "#/definitions/string10"
},
"dateOfBirth": {
"$ref": "#/definitions/localDate"
},
"countryOfResidenceCode": {
"$ref": "#/definitions/alpha2"
},
"countryOfCitizenshipCode": {
"$ref": "#/definitions/alpha2"
},
"occupation": {
"$ref": "#/definitions/string200"
},
"employerInformation": {
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"$ref": "#/definitions/string100"
},
"addressTypeCode": {
"enum": [
1,
2
]
},
"address": {
"oneOf": [
{
"$ref": "#/definitions/structuredAddress"
},
{
"$ref": "#/definitions/unstructuredAddress"
}
]
},
"telephoneNumber": {
"$ref": "#/definitions/string20"
},
"extensionNumber": {
"$ref": "#/definitions/string10"
}
}
},
"identifications": {
"type": "array",
"items": {
"$ref": "#/definitions/identification"
}
}
},
"required": [
"typeCode",
"refId",
"identifications"
]
},
"entityAndBeneficialOwnershipDetails": {
"type": "object",
"additionalProperties": false,
"properties": {
"typeCode": {
"enum": [
6
]
},
"refId": {
"$ref": "#/definitions/string50"
},
"nameOfEntity": {
"$ref": "#/definitions/string100"
},
"addressTypeCode": {
"enum": [
1,
2
]
},
"address": {
"oneOf": [
{
"$ref": "#/definitions/structuredAddress"
},
{
"$ref": "#/definitions/unstructuredAddress"
}
]
},
"telephoneNumber": {
"$ref": "#/definitions/string20"
},
"extensionNumber": {
"$ref": "#/definitions/string10"
},
"identifications": {
"type": "array",
"items": {
"$ref": "#/definitions/identification"
}
},
"authorizedPersons": {
"type": "array",
"items": {
"$ref": "#/definitions/authorizedPerson"
}
},
"structureTypeCode": {
"$ref": "#/definitions/optionTypeCode"
},
"structureTypeOther": {
"$ref": "#/definitions/string200"
},
"natureOfPrincipalBusiness": {
"$ref": "#/definitions/string200"
},
"registrationIncorporationIndicator": {
"type": "boolean"
},
"registrationsIncorporations": {
"type": "array",
"items": {
"$ref": "#/definitions/registrationIncorporation"
}
},
"directorsOfCorporation": {
"type": "array",
"items": {
"$ref": "#/definitions/personContact"
}
},
"personsOwningSharesOfCorporation": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"surname": {
"$ref": "#/definitions/string100"
},
"givenName": {
"$ref": "#/definitions/string100"
},
"otherNameInitial": {
"$ref": "#/definitions/string100"
}
}
}
},
"trusteesOfTrust": {
"type": "array",
"items": {
"$ref": "#/definitions/personContact"
}
},
"settlorsOfTrust": {
"type": "array",
"items": {
"$ref": "#/definitions/personContact"
}
},
"personsOwningUnitsOfTrust": {
"type": "array",
"items": {
"$ref": "#/definitions/personContact"
}
},
"beneficiariesOfTrust": {
"type": "array",
"items": {
"$ref": "#/definitions/personContact"
}
},
"personsOwningEntityNotCorporationOrTrust": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"surname": {
"$ref": "#/definitions/string100"
},
"givenName": {
"$ref": "#/definitions/string100"
},
"otherNameInitial": {
"$ref": "#/definitions/string100"
}
}
}
}
},
"required": [
"typeCode",
"refId",
"identifications",
"authorizedPersons",
"registrationsIncorporations",
"directorsOfCorporation",
"personsOwningSharesOfCorporation",
"trusteesOfTrust",
"settlorsOfTrust",
"personsOwningUnitsOfTrust",
"beneficiariesOfTrust",
"personsOwningEntityNotCorporationOrTrust"
]
},
"structuredAddress": {
"type": "object",
"additionalProperties": false,
"properties": {
"typeCode": {
"enum": [
1
]
},
"unitNumber": {
"$ref": "#/definitions/string10"
},
"buildingNumber": {
"$ref": "#/definitions/string10"
},
"streetAddress": {
"$ref": "#/definitions/string100"
},
"city": {
"$ref": "#/definitions/string100"
},
"district": {
"$ref": "#/definitions/string100"
},
"provinceStateCode": {
"$ref": "#/definitions/alpha2"
},
"provinceStateName": {
"$ref": "#/definitions/string100"
},
"subProvinceSubLocality": {
"$ref": "#/definitions/string100"
},
"postalZipCode": {
"$ref": "#/definitions/string20"
},
"countryCode": {
"$ref": "#/definitions/alpha2"
}
},
"required": [
"typeCode"
]
},
"unstructuredAddress": {
"type": "object",
"additionalProperties": false,
"properties": {
"typeCode": {
"enum": [
2
]
},
"countryCode": {
"$ref": "#/definitions/alpha2"
},
"unstructured": {
"$ref": "#/definitions/string500"
}
},
"required": [
"typeCode",
"unstructured"
]
},
"personContact": {
"type": "object",
"additionalProperties": false,
"properties": {
"surname": {
"$ref": "#/definitions/string100"
},
"givenName": {
"$ref": "#/definitions/string100"
},
"otherNameInitial": {
"$ref": "#/definitions/string100"
},
"addressTypeCode": {
"enum": [
1,
2
]
},
"address": {
"oneOf": [
{
"$ref": "#/definitions/structuredAddress"
},
{
"$ref": "#/definitions/unstructuredAddress"
}
]
},
"telephoneNumber": {
"$ref": "#/definitions/string20"
},
"extensionNumber": {
"$ref": "#/definitions/string10"
}
}
},
"identification": {
"type": "object",
"additionalProperties": false,
"properties": {
"identifierTypeCode": {
"$ref": "#/definitions/optionTypeCode"
},
"identifierTypeOther": {
"$ref": "#/definitions/string200"
},
"number": {
"$ref": "#/definitions/string100"
},
"jurisdictionOfIssueCountryCode": {
"$ref": "#/definitions/alpha2"
},
"jurisdictionOfIssueProvinceStateCode": {
"$ref": "#/definitions/alpha2"
},
"jurisdictionOfIssueProvinceStateName": {
"$ref": "#/definitions/string100"
}
},
"required": [
"identifierTypeCode",
"number"
]
},
"authorizedPerson": {
"type": "object",
"additionalProperties": false,
"properties": {
"surname": {
"$ref": "#/definitions/string100"
},
"givenName": {
"$ref": "#/definitions/string100"
},
"otherNameInitial": {
"$ref": "#/definitions/string100"
}
}
},
"registrationIncorporation": {
"type": "object",
"additionalProperties": false,
"properties": {
"typeCode": {
"$ref": "#/definitions/optionTypeCode"
},
"number": {
"$ref": "#/definitions/string100"
},
"jurisdictionOfIssueCountryCode": {
"$ref": "#/definitions/alpha2"
},
"jurisdictionOfIssueProvinceStateCode": {
"$ref": "#/definitions/alpha2"
},
"jurisdictionOfIssueProvinceStateName": {
"$ref": "#/definitions/string100"
}
},
"required": [
"typeCode"
]
},
"account": {
"type": "object",
"additionalProperties": false,
"properties": {
"financialInstitutionNumber": {
"$ref": "#/definitions/string50"
},
"branchNumber": {
"$ref": "#/definitions/string50"
},
"number": {
"$ref": "#/definitions/string100"
},
"typeCode": {
"$ref": "#/definitions/optionTypeCode"
},
"typeOther": {
"$ref": "#/definitions/string200"
},
"currencyCode": {
"$ref": "#/definitions/alpha3"
},
"virtualCurrencyTypeCode": {
"$ref": "#/definitions/string20"
},
"virtualCurrencyTypeOther": {
"$ref": "#/definitions/string200"
},
"dateOpened": {
"$ref": "#/definitions/localDate"
},
"dateClosed": {
"$ref": "#/definitions/localDate"
},
"holders": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"typeCode": {
"enum": [
1,
2
]
},
"refId": {
"$ref": "#/definitions/string50"
}
},
"required": [
"typeCode",
"refId"
]
}
}
},
"required": [
"holders"
]
},
"alpha2": {
"type": "string",
"minLength": 2,
"maxLength": 2
},
"alpha3": {
"type": "string",
"minLength": 3,
"maxLength": 3
},
"string10": {
"type": "string",
"minLength": 0,
"maxLength": 10
},
"string20": {
"type": "string",
"minLength": 0,
"maxLength": 20
},
"string50": {
"type": "string",
"minLength": 0,
"maxLength": 50
},
"string100": {
"type": "string",
"minLength": 0,
"maxLength": 100
},
"string200": {
"type": "string",
"minLength": 0,
"maxLength": 200
},
"string500": {
"type": "string",
"minLength": 0,
"maxLength": 500
},
"optionTypeCode": {
"type": "integer",
"minimum": 1,
"maximum": 99999
},
"telephone": {
"type": "string",
"minLength": 0,
"maxLength": 20
},
"telephoneExtension": {
"type": "string",
"minLength": 0,
"maxLength": 10
},
"currencyAmount": {
"type": "string",
"pattern": "^\\d{1,17}(\\.\\d{2,10})?$"
},
"exchangeRate": {
"type": "string",
"pattern": "^\\d{1,17}(\\.\\d{2,10})?$"
},
"zonedDateTime": {
"type": "string",
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}[\\-\\+][0-9]{2}:[0-9]{2}$"
},
"localDate": {
"type": "string",
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"
},
"zonedTime": {
"type": "string",
"pattern": "^[0-9]{2}:[0-9]{2}:[0-9]{2}[\\-\\+][0-9]{2}:[0-9]{2}$"
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment