Versión: 2.0.0
Bienvenido a la Documentación de la API de AML Protektor
Introducción
Gracias por elegir utilizar la API de AML Protektor. Esta documentación está diseñada para ayudarte a comprender y utilizar nuestra API de manera efectiva para integrarla en tus aplicaciones y sistemas.
A través del uso de los diferentes endpoints podrás acceder y manipular datos relacionados con la creación de contrapartes y la obtención de datos de una contraparte específica.
Descripción
El API utiliza tecnología REST/JSON. Una API RESTful es una implementación de API diseñado para facilitar la comunicación entre sistemas distribuidos a través del protocolo HTTP. Están diseñadas para ser simples, escalables y fáciles de usar, suelen ser muy interoperables, lo que significa que pueden ser consumidas por una amplia variedad de clientes, desde aplicaciones web hasta dispositivos móviles y otros sistemas distribuidos.
En general, esta documentación contiene las explicaciones los endpoints MÉTODO DE ENTRADA y MÉTODO DE SALIDA.
Autenticación
En primer lugar se debe solicitar la activación de la integración de la empresa por medio de la API; paso seguido, la persona de soporte enviará el token de acceso necesario para realizar las solicitudes al sistema por medio de la API.
URL base
https://api.amlprotektor.com
La URL base es el protocolo HTTP que se debe usar en los endpoints disponibles.
HEADER
{ token : "Token de acceso" }
En los Headers de la petición debe llevar un parámetro llamado token, el cual debe contener el valor del token enviado a la empresa.
"Token de acceso": Valor del token enviado.
Método de entrada
Método por el cual es posible crear una contraparte pasando en el Body los datos necesarios, esto hace las veces del botón Crear Contraparte dentro de la aplicación de AML Protektor y envia el correo electrónico para que la contraparte realice la Debida Diligencia.
POST
/api/createContrapart
Body - Content type: application/json
                                        
{ "Name": "Nombre de la contraparte", "TypeIdentification": "Ver tabla de referencia (enviar ID)", "Identification": "Identificación de la contraparte", "Address": "Dirección de la contraparte", "Email": "Correo electrónico de la persona encargada de realizar la Debida Diligencia", "PhoneNumber": "Celular de la persona encargada de realizar la Debida Diligencia", "IdRisk": "Ver tabla de referencia (enviar ID)", "TypeCounterpart": "Ver tabla de referencia (enviar ID)", "ExpeditionDate": "Fecha de expedición de la cédula en los casos que aplique formato (DD/MM/AAAA)", "EmailNotification": "Correo electrónico de notificación (existe una contraparte por diligenciar)" , "CityName": "Nombre de la Ciudad", "Country": "Nombre del País", "State": "Nombre del Departamento", "DialCodePhoneNumber": "Código telefónico relacionado al celular" }
Tablas de referencia

✶ "TypeIdentification"

ID Nombre
1 CC
2 CE
3 NIT
4 PP

✶ "IdRisk"

ID Tipo de flujo
2 Regular: Este tipo de flujo se determina para todas las contrapartes que se le va a hacer la debida diligencia con todos los pasos
3 Simplificado: Este tipo de flujo se determina para todas las contrapartes que ya tienen implementado el sistema de SAGRILAFT en su empresa y por ende únicamente se va a pedir el certificado del mismo

✶ "TypeCounterpart"

ID Nombre
1 Cliente
2 Proveedor
3 Empleado
4 Accionista
5 Contratista
6 Otro

Ejemplo Headers
Ejemplo Body
Respuestas

★ ERRORES
401
{ message: "Error: El token es requerido" }
Este error se genera cuando se hace la petición a la API sin llevar el token en los Headers.
403
{ message: "Error: El token enviado no esta asociado a ninguna empresa" }
Este error se genera porque el token que se envía no es identificado por el sistema como un token válido, en este caso hay validar que se esté enviando el token tal cual incluyendo puntos, comas, guiones, etc. En caso de haber validado todo lo anterior y persistir el error, se debe comunicar con soporte para que genere un nuevo token.
403
{ message: "Error: La empresa no cuenta con la funcionalidad activa" }
Este error se genera cuando no se ha activado la integración por medio de API a la empresa, en este caso hay que comunicarse con soporte para que la active.
404
{ message: "Los siguientes campos son requeridos: Fields" }
Este error se genera cuando el request no contiene la cantidad de campos requeridos: Fields equivale a algun dato o datos que faltan por llenar en el Body.
422
{ message: "Error: Field no válido" }
Este error se genera cuando algún dato en el Body no es válido: Field equivale a un dato específico.
400
{ message: "Error: Este número de documento ya tiene un proceso en curso" }
Este error se genera cuando el número de documento ya tiene un proceso en curso, es decir, ya se creo la contraparte pero aún ha sido diligenciada.
503
{ message: "Error creando la contraparte" }
Error interno.
★ EXITOSO
200
{ message: "pre-formulario creado correctamente" }
Todo esta correcto y se crea el pre-formulario.
Método de salida
Método por el cual es posible obtener los datos de aquella contraparte que ya realizo la Debida Diligencia.
GET
/api/getDataContrapart/:numeroDeDocumento
El parámetro en la petición :numeroDeDocumento lo remplazamos por el documento que se quiere consultar.
Ejemplo
Respuestas

★ ERRORES
401
{ message: "Error: El token es requerido" }
Este error se genera cuando se hace la petición a la API sin llevar el token en los Headers.
403
{ message: "Error: El token enviado no esta asociado a ninguna empresa" }
Este error se genera porque el token que se envía no es identificado por el sistema como un token válido, en este caso hay validar que se esté enviando el token tal cual incluyendo puntos, comas, guiones, etc. En caso de haber validado todo lo anterior y persistir el error, se debe comunicar con soporte para que genere un nuevo token.
403
{ message: "Error: El token no se encuentra activo" }
Este error se genera cuando no se ha activado la integración por medio de API a la empresa, en este caso hay que comunicarse con soporte para que la active.
404
{ message: "No existe un formulario asociado a la empresa con el número de documento :numeroDeDocumento" }
Este error se genera cuando la identificación solicitada a traves de la API no existe en la empresa.
400
{ message: "El formulario no se ha diligenciado en su totalidad" }
Este error se genera cuando ha sido lanzado un formulario para su Debida Diligencia, y la contraparte aún no lo ha terminado de diligenciar.
503
{ message: "Error obteniendo información de la contraparte" }
Error interno.
★ EXITOSO
200 - Respuesta exitosa
                                        
{ "mainInformation": { "Name": "Nombre", "TypeIdentification": "Tipo de identificación", "Identification": "Número de documento", "Address": "Dirección", "Email": "ejemplo@dominio.com", "City": "Ciudad", "PhoneNumber": "Celular", "IdRisk": "Tipo de flujo", "TypeCounterpart": "Tipo de contraparte", "ExpeditionDate": "Fecha de expedición", "FormState": "Estado del formulario", "DialCodePhoneNumber": "Código telefónico", "City": "Ciudad", "Country": "País", "State": "Departamento" }, "otherInformation": { "MainEconomicActivity": "", "codeCIIU": "", "AnnualOrdinaryIncome": 0, "AnnualTotalIncome": 0, "Assets": 0, "Liabilities": 0, "ConceptOthersMonthlyIncome": "", "PublicResources": 0, "HoldsPublicOffice": 0, "PublicRecognition": 0, "RelationPublicExposed": 0, "InternationalOperation": 0, "InternacionalOperationImports": 0, "InternacionalOperationExports": 0, "InternationalOperationDescrip": "", "HasIntFinProducts": 0, "Investments": 0, "Transfers": 0, "FinancialProductsAbroadDescrip": "", "FlowType": 2, "tradeWithVirtualAssets": 0, "tradeWithVirtualAssetsDescrip": "" }, "dataFinProduct": [ { "Id": 134, "ProductTypeName": "N/A", "ProductNumber": "", "Entity": "", "Amount": 0, "CountryName": "N/A", "CurrencyName": "N/A" } ], "legalRepresentatives": [ { "Name": "Nombre del representante", "TypeIdentification": "Tipo de identificación", "Identification": "Número de documento", "PlaceOfBirth": "Lugar de nacimiento", "ExpeditionDate": "Fecha de expedición", "DateBorn": "Fecha de nacimiento", "Address": "Dirección ", "PhoneNumber": "Celular", "Occupation": "Cargo", "Principal": "SI o NO", "PublicResource": "0", "Political": "0" } ], "boardDirectors": [ { "Name": "Nombre del miembro de la junta directiva", "TypeIdentification": "Tipo de identificación", "Identification": "Número de documento", "City": "Ciudad Junta directiva", "ExpeditionDate": "Fecha de expedición", "PhoneNumber": "Celular", "Principal": "SI o NO " } ], "shareholders": [ { "Name": "Nombre del accionista", "Actions": Cantidad de acciones, "TypeIdentification": "Tipo de documento", "Identification": "Número de documento", "ExpeditionDate": "Fecha de expedición", "PublicResource": "NO", "Political": "0", "Partner": "Empresa socia" } ], "taxAuditors": { "Name": "Nombre", "TypeIdentification": "Tipo de identifcación", "Identification": "Número de documento", "City": "Ciudad", "ExpeditionDate": "Fecha de expedición", "PhoneNumber": "Celular" }, "queries": [ { "documentNumber": "Número de documento (Consulta)", "typeDoc": "Tipo de identificación (Consulta)", "name": "Nombre (Consulta)", "findings": { "altos": [], "bajos": [], "infos": [], "medios": [] }, "errors": "Fuentes con errores" } ] }
"mainInformation": Información principal del formularoio
"otherInformation": Información adicional del formulario
"dataFinProduct": Arreglo con la informacion de productos financieros en el extranjero. Si no existe información correspondiente responde un vector vacío []
"legalRepresentatives": Arreglo con la información de los representantes legales. Si no existe información correspondiente responde un vector vacío []
"boardDirectors": Arreglo con la información de la junta directiva. Si no existe información correspondiente responde un vector vacío []
"shareholders": Arreglo con la información de los accionistas. Si no existe información correspondiente responde un vector vacío []
"taxAuditors": Información con la información de los revisores fiscales. Si no existe información correspondiente responde un objeto vacío {}
"queries": Arreglo con las consultas realizadas a las personas y empresas relacionadas a la contraparte
¿Necesitas ayuda?
Si tienes alguna pregunta o necesitas asistencia técnica, no dudes en ponerte en contacto con nuestro equipo de soporte en veronica.escobar@amlprotektor.com
Estamos emocionados de que utilices la API de AML Protektor y esperamos que esta documentación te ayude a aprovechar al máximo todas sus capacidades.