curl --request PATCH \
--url https://api.enterprise.sandbox.uphold.com/core/kyc/processes/self-categorization-statement \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"input": {
"formId": "ac33651f-f2d3-47c4-8e8d-06fb87361f5c",
"answers": {
"investor": {
"type": "restricted_investor"
}
}
}
}
'{
"selfCategorizationStatement": {
"status": "pending",
"input": {
"formId": "ac33651f-f2d3-47c4-8e8d-06fb87361f5c",
"answers": {
"investor": {
"type": "restricted_investor"
}
}
},
"hint": {
"type": "form",
"formId": "ac33651f-f2d3-47c4-8e8d-06fb87361f5c",
"schema": {
"type": "object",
"properties": {
"investor": {
"type": "object",
"title": "Which type of investor are you?",
"description": "The FCA divides investors into 3 types. Choose the best fit for you.",
"properties": {
"type": {
"type": "string",
"oneOf": [
{
"const": "restricted_investor",
"title": "Everyday investor"
},
{
"const": "high_net_worth_investor",
"title": "High-Net-Worth Investor"
},
{
"const": "sophisticated_investor",
"title": "Certified Sophisticated Investor"
},
{
"const": "none_of_above",
"title": "None of the above"
}
]
}
},
"required": [
"type"
]
},
"investor-profile": {
"type": "object",
"title": "Everyday Investor",
"description": "Please confirm whether you qualify as a Everyday Investor.",
"properties": {
"invested-less-than-10-percent": {
"type": "string",
"oneOf": [
{
"const": "yes",
"title": "Yes, I have invested less than 10% of my net assets"
},
{
"const": "no",
"title": "No, I have invested more than 10% of my net assets"
}
]
},
"invest-less-than-10-percent": {
"description": "In the next 12 months do you intend to limit your investment in high-risk investments to less than 10% of your net assets?",
"type": "string",
"oneOf": [
{
"const": "yes",
"title": "Yes, I intend to invest less than 10% of my net assets"
},
{
"const": "no",
"title": "No, I intend to invest more than 10% of my net assets"
}
]
},
"investor-type-confirmation": {
"title": "I accept that being a Everyday Investor will expose me to promotions for investment where there is a significant risk of losing all the money I invest.",
"type": "string",
"oneOf": [
{
"const": "yes",
"title": "Yes"
},
{
"const": "no",
"title": "No"
}
]
}
},
"required": [
"invested-less-than-10-percent",
"invest-less-than-10-percent",
"investor-type-confirmation"
],
"allOf": [
{
"if": {
"properties": {
"invested-less-than-10-percent": {
"const": "yes"
}
},
"required": [
"invested-less-than-10-percent"
]
},
"then": {
"properties": {
"invested-percentage": {
"type": "number",
"minimum": 0,
"maximum": 100
}
},
"required": [
"invested-percentage"
]
}
},
{
"if": {
"properties": {
"invest-less-than-10-percent": {
"const": "yes"
}
},
"required": [
"invest-less-than-10-percent"
]
},
"then": {
"properties": {
"invest-percentage": {
"type": "number",
"minimum": 0,
"maximum": 100
}
},
"required": [
"invest-percentage"
]
}
}
]
}
}
},
"uiSchema": {
"type": "Categorization",
"elements": [
{
"type": "Category",
"label": "Which type of investor are you?",
"elements": [
{
"type": "Control",
"scope": "#/properties/investor/properties/type"
}
]
},
{
"type": "Category",
"label": "Everyday Investor",
"elements": [
{
"type": "Control",
"scope": "#/properties/investor-profile/properties/invested-less-than-10-percent"
},
{
"type": "Control",
"scope": "#/properties/investor-profile/properties/invested-percentage",
"rule": {
"effect": "SHOW",
"condition": {
"scope": "#/properties/investor-profile/properties/invested-less-than-10-percent",
"schema": {
"const": "yes"
}
}
}
},
{
"type": "Control",
"scope": "#/properties/investor-profile/properties/invest-less-than-10-percent"
},
{
"type": "Control",
"scope": "#/properties/investor-profile/properties/invest-percentage",
"rule": {
"effect": "SHOW",
"condition": {
"scope": "#/properties/investor-profile/properties/invest-less-than-10-percent",
"schema": {
"const": "yes"
}
}
}
},
{
"type": "Control",
"scope": "#/properties/investor-profile/properties/investor-type-confirmation"
}
]
}
]
}
}
}
}Update the self-categorization statement process for a user.
curl --request PATCH \
--url https://api.enterprise.sandbox.uphold.com/core/kyc/processes/self-categorization-statement \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"input": {
"formId": "ac33651f-f2d3-47c4-8e8d-06fb87361f5c",
"answers": {
"investor": {
"type": "restricted_investor"
}
}
}
}
'{
"selfCategorizationStatement": {
"status": "pending",
"input": {
"formId": "ac33651f-f2d3-47c4-8e8d-06fb87361f5c",
"answers": {
"investor": {
"type": "restricted_investor"
}
}
},
"hint": {
"type": "form",
"formId": "ac33651f-f2d3-47c4-8e8d-06fb87361f5c",
"schema": {
"type": "object",
"properties": {
"investor": {
"type": "object",
"title": "Which type of investor are you?",
"description": "The FCA divides investors into 3 types. Choose the best fit for you.",
"properties": {
"type": {
"type": "string",
"oneOf": [
{
"const": "restricted_investor",
"title": "Everyday investor"
},
{
"const": "high_net_worth_investor",
"title": "High-Net-Worth Investor"
},
{
"const": "sophisticated_investor",
"title": "Certified Sophisticated Investor"
},
{
"const": "none_of_above",
"title": "None of the above"
}
]
}
},
"required": [
"type"
]
},
"investor-profile": {
"type": "object",
"title": "Everyday Investor",
"description": "Please confirm whether you qualify as a Everyday Investor.",
"properties": {
"invested-less-than-10-percent": {
"type": "string",
"oneOf": [
{
"const": "yes",
"title": "Yes, I have invested less than 10% of my net assets"
},
{
"const": "no",
"title": "No, I have invested more than 10% of my net assets"
}
]
},
"invest-less-than-10-percent": {
"description": "In the next 12 months do you intend to limit your investment in high-risk investments to less than 10% of your net assets?",
"type": "string",
"oneOf": [
{
"const": "yes",
"title": "Yes, I intend to invest less than 10% of my net assets"
},
{
"const": "no",
"title": "No, I intend to invest more than 10% of my net assets"
}
]
},
"investor-type-confirmation": {
"title": "I accept that being a Everyday Investor will expose me to promotions for investment where there is a significant risk of losing all the money I invest.",
"type": "string",
"oneOf": [
{
"const": "yes",
"title": "Yes"
},
{
"const": "no",
"title": "No"
}
]
}
},
"required": [
"invested-less-than-10-percent",
"invest-less-than-10-percent",
"investor-type-confirmation"
],
"allOf": [
{
"if": {
"properties": {
"invested-less-than-10-percent": {
"const": "yes"
}
},
"required": [
"invested-less-than-10-percent"
]
},
"then": {
"properties": {
"invested-percentage": {
"type": "number",
"minimum": 0,
"maximum": 100
}
},
"required": [
"invested-percentage"
]
}
},
{
"if": {
"properties": {
"invest-less-than-10-percent": {
"const": "yes"
}
},
"required": [
"invest-less-than-10-percent"
]
},
"then": {
"properties": {
"invest-percentage": {
"type": "number",
"minimum": 0,
"maximum": 100
}
},
"required": [
"invest-percentage"
]
}
}
]
}
}
},
"uiSchema": {
"type": "Categorization",
"elements": [
{
"type": "Category",
"label": "Which type of investor are you?",
"elements": [
{
"type": "Control",
"scope": "#/properties/investor/properties/type"
}
]
},
{
"type": "Category",
"label": "Everyday Investor",
"elements": [
{
"type": "Control",
"scope": "#/properties/investor-profile/properties/invested-less-than-10-percent"
},
{
"type": "Control",
"scope": "#/properties/investor-profile/properties/invested-percentage",
"rule": {
"effect": "SHOW",
"condition": {
"scope": "#/properties/investor-profile/properties/invested-less-than-10-percent",
"schema": {
"const": "yes"
}
}
}
},
{
"type": "Control",
"scope": "#/properties/investor-profile/properties/invest-less-than-10-percent"
},
{
"type": "Control",
"scope": "#/properties/investor-profile/properties/invest-percentage",
"rule": {
"effect": "SHOW",
"condition": {
"scope": "#/properties/investor-profile/properties/invest-less-than-10-percent",
"schema": {
"const": "yes"
}
}
}
},
{
"type": "Control",
"scope": "#/properties/investor-profile/properties/investor-type-confirmation"
}
]
}
]
}
}
}
}GET /core/kyc?detailed=selfCategorizationStatement, you will get a hint property which includes a JSON form schema and UI schema.
The hint property will also be available in responses of this endpoint, in case there are still questions to be answered.
For more information about forms, refer to the form-based processes section.OAuth 2.0 authentication.
The natural language and locale that the client prefers.
Input of the KYC process.
Show child attributes
The answers property follows the JSON Forms specification for data objects and has two key behaviors:
The KYC process starts its evaluation once the last question has been answered, ensuring that all necessary information has been provided before proceeding with the assessment.
The form identifier returned in the formId property of the KYC process hint. Include this value when you need to persist or resume the current form state over an extended period (for example, across user sessions or long-running saves).
Output of the KYC process.
Show child attributes
The result of the verification.
approved, rejected The date and time when the verification expires.
The date and time of the verification.
KYC self-categorization statement process updated.
Show child attributes
Status of the KYC process.
ok, failed, running, pending, exempt Output of the KYC process.
Show child attributes
The result of the verification.
approved, rejected The offboarding state of the verification.
The date and time when the verification expires.
The date and time of the verification.
Hints for the KYC process.
Show child attributes
The type of the hint.
form The definition of the structure and validation rules for this KYC process form.
It follows the JSON Schema specification with the power of JSON Forms.
The schema is iterative, meaning that new questions and properties can be added dynamically as the KYC process evolves. This allows for a flexible and adaptive form structure that can accommodate changes and new requirements over time.
The uiSchema property defines the general layout and presentation of the form by means of different UI schema elements.
It follows the JSON Forms specification and is used to customize the appearance and behavior of the form fields.
The uiSchema includes the following elements:
Layouts: Used to structure the form layout. It includes properties like type to define the layout type (e.g., Categorization) and elements to define the child elements.Controls: Used to define the form controls. It includes properties like scope to point to the corresponding schema property and label to define the control's label.Rules: Used to define conditional visibility rules for form controls. It includes properties like effect to define the rule effect (e.g., SHOW) and condition to define the rule condition.The uiSchema is iterative, meaning that new controls and layout elements can be added dynamically as the KYC process evolves. This allows for a flexible and dynamic form layout, enhancing the user experience by providing a structured and intuitive form design that can adapt to new requirements and changes over time.
The id of the form.