200
sammen med data (JSON) uanset hvilken type kommando (payload.action) man benytter.api_data.api_key
og payload.action
{
"api_data": {
"api_key": "DIN_API_NØGLE"
},
"payload": {
"action": "KOMMANDO"
}
}
api_data.api_key : string
: (not null)
: Din API nøgle som du finder under 'Indstillinger' => 'Api'. Bemærk du skal have administrator adgang som bruger på FFlow for at have adgang til din Api nøgle.
payload.action : string
: (not null)
: Kommandoen du vil udføre. F.eks 'overall_status' som returnerer en samlet oversigt over din kundekendskabs process.
{
"response_status": {
"errorcode": 0,
"errormessage": "OK"
}
}
response_status.errorcode : int
: (not null)
: Returneres altid. Indeholder værdien '0' hvis kommando er udført uden fejl. Dette uanset om det er hente eller gemme kommando. Har kommandoen udløst en fejl, så angives fejlen med nummer.
response_status.errormessage : string
: (not null)
: Returneres altid. Indeholder beskrivelse af evt. fejl.
{
"response_status": {
"errorcode": 0,
"errormessage": "OK"
},
"response_data": { }
}
response_data : JSON data <string>
: (null)
: Returneres hvis der er data. response_data indeholder relevant data ud fra hvilken kommando som er udført.
using System;
using System.IO;
using System.Net;
namespace FFlow_API_TEST
{
class Program
{
private const string URL = "https://api.fflow.dk/api";
private const string JSON = @"{""api_data"":{""api_key"":""DIN_API_NØGLE""},""payload"":{""action"":""overall_status""}}";
static void Main()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
request.Method = "POST";
request.ContentType = "application/json";
request.ContentLength = JSON.Length;
using (Stream webStream = request.GetRequestStream())
using (StreamWriter requestWriter = new StreamWriter(webStream, System.Text.Encoding.ASCII)) {requestWriter.Write(JSON); }
try
{
WebResponse webResponse = request.GetResponse();
using (Stream webStream = webResponse.GetResponseStream() ?? Stream.Null)
using (StreamReader responseReader = new StreamReader(webStream))
{
string response = responseReader.ReadToEnd();
Console.Out.WriteLine(response);
Console.ReadKey();
}
}
catch (Exception e)
{
Console.Out.WriteLine("-----------------");
Console.Out.WriteLine(e.Message);
Console.ReadKey();
}
}
}
}
{
"response_status": {
"errorcode": 0,
"errormessage": "OK"
}
}
response_status.errorcode : int
: (not null)
: Returneres altid. Indeholder værdien '0' hvis kommando er udført uden fejl. Dette uanset om det er hente eller gemme kommando. Har kommandoen udløst en fejl, så angives fejlen med nummer.
response_status.errormessage : string
: (not null)
: Returneres altid. Indeholder beskrivelse af evt. fejl.
0
: OK1
: Der opstod en serverfejl. Prøv igen om lidt...8001
: CVR nummer må kun indeholde tal.8002
: Angiv gyldigt CVR nummer.8003
: Virksomheden kunne ikke findes i CVR registeret.20000
: Du kan ikke oprette dig selv som klient20004
: Klient ikke fundet.40001
: API nøgle kunne ikke findes. Du kan finde din API nøgle under *Indstillinger* => *API*40002
: API nøgle er låst. Kontakt FFlow på support@fflow.dk40003
: Der kræves abonnement for at benytte API.40004
: Værdien >XXXREPLACEXXX< i 'container.action' eksisterer ikke som kommando.40005
: JSON kan ikke læses. Fejl i strukturen. Fejlbeskeden40006
: Nøglen 'XXXREPLACEXXX' blev ikke fundet i JSON40007
: Nøgleværdien i JSON har givet fejl => XXXREPLACEXXX40008
: Nøgleværdien 'XXXREPLACEXXX' må ikke være null40009
: Nøglen 'XXXREPLACEXXX' skal indeholde værdi40010
: Nøgleværdien 'XXXREPLACEXXX' skal være et helt tal40011
: Nøgleværdien 'XXXREPLACEXXX' må kun være af typen *INT*. Tallet er for stort40012
: Nøgleværdien 'XXXREPLACEXXX' må ikke være et negativt tal40013
: Værdien er for lang : XXXREPLACEXXX40014
: 'payload.client_fflow_id', 'payload.client_inhouse_id' eller 'payload.client_cvr_number' skal indeholde værdi40015
: Kundenummeret 'payload.client_inhouse_id' => 'XXXREPLACEXXX' eksisterer allerede.40016
: Nøglen 'XXXREPLACEXXX' mangler CVR nummer40017
: CVR nummer allerede oprettet som klient40018
: Kundenummeret 'client_inhouse_id' => 'XXXREPLACEXXX' er allerede brugt som nøgle for klient.40019
: Du har nået det maksimale antal klienter du kan oprette. Kontakt FFlow på support@fflow.dk200000
: Der skete en fejl. Prøv igen.{
"api_data": {
"api_key": "DIN_API_NØGLE"
},
"payload": {
"action": "overall_status"
}
}
{
"response_status": {
"errorcode": 0,
"errormessage": "OK"
},
"response_data": {
"status_all": {
"clients_created": 8,
"documents_waiting_uploaded": 5,
"riscevaluations_missing": 7,
"samplecontrols_ongoing": 1,
"investigations_ongoing": 1,
"clients_missing_information": 7,
"documents_waiting_approval": 0,
"alarm_notifications": 1
}
}
}
response_data.status_all.clients_created : int
: (not null)
: Returneres altid. Antallet af klienter oprettet. Dette er udelukkende klienter og ikke personer. Én klient er f.eks en virksomhed. Virksomheden kan deri have flere personer tilknyttet.
response_data.status_all.documents_waiting_uploaded : int
: (not null)
: Returneres altid. Antallet af dokumenter som afventer uploaded fra personer. Enten virksomhedsdokumenter eller ID (f.eks. PAS, kørekort m.m.).
response_data.status_all.riscevaluations_missing : int
: (not null)
: Returneres altid. Antallet af risikovurderinger som mangler at blive udført.
response_data.status_all.samplecontrols_ongoing : int
: (not null)
: Returneres altid. Antallet af igangværende kontroller.
response_data.status_all.investigations_ongoing : int
: (not null)
: Returneres altid. Antallet af igangværende undersøgelser.
response_data.status_all.clients_missing_information : int
: (not null)
: Returneres altid. Antallet af klienter som mangler information af en eller anden art.
response_data.status_all.documents_waiting_approval : int
: (not null)
: Returneres altid. Antallet af dokumenter som er blevet uploaded og afventer godkendelse. F.eks. virksomhedsdokumenter eller ID (PAS, kørekort m.m.).
response_data.status_all.alarm_notifications : int
: (not null)
: Returneres altid. Antallet af udløste alarmer. En alarm kan sættes til ved f.eks. udløb af PAS.
{
"api_data": {
"api_key": "DIN_API_NØGLE"
},
"payload": {
"action": "client_cvr_create",
"client_cvr_number": 12345678,
"client_inhouse_id": "ABC123"
}
}
payload.client_cvr_number : int
: (not null)
: CVR nummer på virksomhed.
payload.client_inhouse_id : string
: (null)
: Valgfri ID som kan tilknyttes klienten. Angiv null
hvis intet internt ID ønskes tilknyttet.
{
"response_status": {
"errorcode": 0,
"errormessage": "OK"
},
"response_data": {
"client_created": {
"client_fflow_id": 70117,
"client_inhouse_id": "ABC123",
"client_identifier": "12345678"
}
}
}
response_data.client_created.client_fflow_id : int
: (not null)
: Returneres altid. FFlow´s interne ID. Kan benyttes som reference til klienten.
response_data.client_created.client_inhouse_id : string
: (not null)
: Returneres altid. Jeres interne ID tilknyttet klienten. Kan benyttes som reference til klienten.
response_data.client_created.client_identifier : string
: (not null)
: Returneres altid. CVR nummeret. (Bemærk nøglen er af typen string
. Dette skyldes client_identifier også benyttes til CPR numre hvis klient er oprettet som person)
{
"api_data": {
"api_key": "DIN_API_NØGLE"
},
"payload": {
"action": "client_status",
"client_fflow_id": null,
"client_inhouse_id": "ABC123",
"client_identifier": null
}
}
payload.client_fflow_id : int
: (null)
: FFlow´s interne ID. Er ID gemt ved oprettelsen, kan denne benyttes som reference.
payload.client_inhouse_id : string
: (null)
: Er internt ID tilknyttet klienten ved oprettelsen, kan denne benyttes som reference.
payload.client_identifier : string
: (null)
: Kan være CVR nummer eller CPR nummer (XXXXXX-XXXX).
null
{
"response_status": {
"errorcode": 0,
"errormessage": "OK"
},
"response_data": {
"client": {
"client_identifier": "12345678",
"client_type": 1,
"client_fflow_id": 70117,
"client_inhouse_id": "ABC123",
"client_name": "Firmanavn ApS"
},
"client_status": {
"missing_risk": 1,
"missing_purpose_text": 1,
"missing_purpose_tasks": 1,
"missing_description": 1,
"missing_persons": 1,
"missing_documents_approval": 0,
"missing_relationship_start": 1,
"missing_investigations": 0,
"missing_samplecontrol": 0,
"documents_waiting_upload": 0,
"documents_waiting_approval": 0,
"person_information_waiting_upload": 0,
"person_information_waiting_approval": 0,
"alarm_notifications": 0
},
"client_persons": [
{
"person_fflow_id": 60080,
"cvr_virk_id": 4000605673,
"cpr_number": "010190-1003",
"person_name": "Anders Andersen",
"person_address1": "Vejadresse 1",
"person_address2": "",
"person_zipcode": "2610",
"person_city": "Rødovre",
"person_phonenumber": "",
"person_phonenumber2": "",
"person_email": "",
"birthdate": "19900101",
"person_is_foreigner": 0,
"foreigner_number": "",
"missing_data": 1,
"missing_email": 1,
"missing_cpr_number": 1,
"missing_foreigner_id_number": 0,
"missing_identification": 1,
"waiting_upload_response": 0,
"waiting_document_approval": 0
},
{
"person_fflow_id": 60081,
"cvr_virk_id": 4000635460,
"cpr_number": "",
"person_name": "Sine Andersen",
"person_address1": "Vejnavn 2",
"person_address2": "",
"person_zipcode": "4772",
"person_city": "Langebæk",
"person_phonenumber": "",
"person_phonenumber2": "",
"person_email": "",
"birthdate": "",
"person_is_foreigner": 0,
"foreigner_number": "",
"missing_data": 1,
"missing_email": 1,
"missing_cpr_number": 1,
"missing_foreigner_id_number": 0,
"missing_identification": 1,
"waiting_upload_response": 0,
"waiting_document_approval": 0
}
]
}
}
response_data.client.client_type : int
: (not null)
: Virksomheder har værdien 1
. Personer oprettet som klient har værdien 2
.
response_data.client.client_name : string
: (not null)
: Klientnavn. Enten virksomhedens navn eller personens navn.
response_data.client_created.client_identifier : string
: (not null)
: CVR nummeret. (Bemærk nøglen er af typen string
. Dette skyldes client_identifier også benyttes til CPR numre hvis klient er oprettet som person)
response_data.client_status.missing_risk : int
: (0/1)
: Om der mangler udførelse af risikovurdering på klient.
response_data.client_status.missing_purpose_text : int
: (0/1)
: Om der mangler formålsbeskrivelse af klient.
response_data.client_status.missing_purpose_tasks : int
: (0/1)
: Om der mangler angivelse af opgavetyper for klient.
response_data.client_status.missing_description : int
: (0/1)
: Om der mangler klientbeskrivelse.
response_data.client_status.missing_persons : int
: (0/1)
: Om én eller flere personer tilknyttet klienten mangler information.
response_data.client_status.missing_documents_approval : int
: (0/1)
: Om klienten har én eller flere dokumenter som afventer godkendelse.
response_data.client_status.missing_relationship_start : int
: (0/1)
: Om klient mangler angivet startdato for opstart af klientforhold.
response_data.client_status.missing_investigations : int
: (0/1)
: Om der er igangværende undersøgelser af klient.
response_data.client_status.missing_samplecontrol : int
: (0/1)
: Om der er igangværende kontroller af klient.
response_data.client_status.documents_waiting_upload : int
: (0/1)
: Om der afventes upload af virksomhedsdokumenter.
response_data.client_status.documents_waiting_approval : int
: (0/1)
: Om der afventes godkendelse af uploadede virksomhedsdokumenter
response_data.client_status.person_information_waiting_upload : int
: (0/1)
: Om der ventes på upload af person informationer (PAS, kørekort m.m.)
response_data.client_status.person_information_waiting_approval : int
: (0/1)
: Om der ventes på godkendelse af person information (PAS, kørekort m.m.)
response_data.client_status.alarm_notifications : int
: (0/1)
: Om der forelægger aktiverede alarmer. F.eks hvis der er sat alarm på udløb af PAS.
response_data.client_persons : ARRAY
: (null)
: Array indeholder personer tilknyttet klient.
person_fflow_id : int
: (not null)
: FFlow´s interne id.
cvr_virk_id : int
: (not null)
: CVR registerets interne id. Gemmes sammen med personen når udtræk fra CVR registeret foretages.
cpr_number : string
: (not null)
: CPR nummer (XXXXXX-XXXX).
birthdate : string
: (not null)
: Fødselsdato YYYYMMDD
person_is_foreigner : int
: (0/1)
: Hvis person ikke har CPR nummer er værdien 1
foreigner_number : string
: (not null)
: Hvis person ikke har CPR nummer, så angives andet ID (Udenlandsk ID).
missing_data : int
: (0/1)
: Om der mangler indtastning eller indhentning af information på person.
missing_email : int
: (0/1)
: Om anførelse af email for person mangler.
missing_cpr_number : int
: (0/1)
: Om angivelse af CPR nummer mangler for person
missing_foreigner_id_number : int
: (0/1)
: Om angivelse af udenlandsk id mangler. Kun relevant hvis person ikke har CPR nummer. ('person_is_foreigner' == 1)
missing_identification : int
: (0/1)
: Om person mangler at få identitet bekræftet.
waiting_upload_response : int
: (0/1)
: Om der afventes upload af oplysninger fra person (PAS, kørekort m.m.).
waiting_document_approval : int
: (0/1)
: Om der afventes godkendelse af uploaded information fra person (PAS, kørekort m.m.).
{
"api_data": {
"api_key": "DIN_API_NØGLE"
},
"payload": {
"action": "clients_missing_information"
}
}
{
"response_status": {
"errorcode": 0,
"errormessage": "OK"
},
"response_data": {
"clients_missing_information": [
{
"client_fflow_id": 70103,
"client_inhouse_id": "ABC123",
"client_name": "Firmanavn A"
},
{
"client_fflow_id": 70104,
"client_inhouse_id": "ABC1234",
"client_name": "Firmanavn B"
}
]
}
}
response_data.clients_missing_information : ARRAY
: (null)
: Array indeholder klienter som ikke er færdigbehandlet.
client_fflow_id : int
: (not null)
: FFlow´s interne ID. Kan benyttes som reference til klienten.
client_inhouse_id : string
: (not null)
: Jeres interne ID tilknyttet klienten. Kan benyttes som reference til klienten.
client_name : string
: (not null)
: Klientnavnet.
{
"api_data": {
"api_key": "DIN_API_NØGLE"
},
"payload": {
"action": "peplist_all"
}
}
{
"response_status": {
"errorcode": 0,
"errormessage": "OK"
},
"response_data": {
"peplist_information": {
"peplist_updated": "20210527"
},
"peplist": [
{
"name": "Thomas Danielsen",
"job_position": "Venstre",
"date_birth": "19830624",
"date_pep_added": "20200630",
"date_pep_expire": ""
},
{
"name": "Kathrine Olldag",
"job_position": "Radikale Venstre",
"date_birth": "19721220",
"date_pep_added": "20190625",
"date_pep_expire": ""
},
{
"name": "Linea Søgaard-Lidell",
"job_position": "Venstre",
"date_birth": "19870330",
"date_pep_added": "20201102",
"date_pep_expire": ""
}
]
}
}
response_data.peplist_information.peplist_updated : string
: (not null)
: YYYYMMDD
: Dato for sidst opdateret fra finanstilsynet.
response_data.peplist : ARRAY
: (null)
: Array indeholder PEP personer.
date_birth : string
: (not null)
: YYYYMMDD
: Fødselsdato
date_pep_added : string
: (not null)
: YYYYMMDD
: Dato hvor person blev tilføjet PEPlisten af finanstilsynet.
date_pep_expire : string
: (not null)
: YYYYMMDD
: Udløbsdato. Når en person fjernes fra PEPlisten af finanstilsynet, så er personen stadig aktiv på PEPlisten et år derefter.
{
"api_data": {
"api_key": "DIN_API_NØGLE"
},
"payload": {
"action": "peplist_search",
"search_string": "bente"
}
}
payload.search_string : string
: (not null)
: Søgeord eller fødselsdato. Ved fødselsdato angiv datoen YYYYMMDD
. Nøglen skal indeholde værdi.
{
"response_status": {
"errorcode": 0,
"errormessage": "OK"
},
"response_data": {
"peplist_information": {
"peplist_updated": "20210527"
},
"peplist": [
{
"name": "Bente Holm Villadsen",
"job_position": "Alternativet",
"date_birth": "19621018",
"date_pep_added": "20210104",
"date_pep_expire": ""
},
{
"name": "Bente Overgaard",
"job_position": "Finansiel Stabilitet, bestyrelse",
"date_birth": "19640621",
"date_pep_added": "20171229",
"date_pep_expire": ""
}
]
}
}
response_data.peplist_information.peplist_updated : string
: (not null)
: YYYYMMDD
: Dato for sidst opdateret fra finanstilsynet.
response_data.peplist : ARRAY
: (null)
: Array indeholder PEP personer.
date_birth : string
: (not null)
: YYYYMMDD
: Fødselsdato
date_pep_added : string
: (not null)
: YYYYMMDD
: Dato hvor person blev tilføjet PEPlisten af finanstilsynet.
date_pep_expire : string
: (not null)
: YYYYMMDD
: Udløbsdato. Når en person fjernes fra PEPlisten af finanstilsynet, så er personen stadig aktiv på PEPlisten et år derefter.