ID Mobile API — Formfilling
Verwenden Sie diesen Endpunkt, um beim Betreiber registrierte Nutzerinformationen (Name, Geburtsdatum, E-Mail, Postanschrift) mit Zustimmung des Nutzers abzurufen. Der Vorgang umfasst zwei Schritte: Einleitung der Zustimmungsanfrage und anschließender Abruf der Daten.
Zweistufiger Ablauf - Rufen Sie zuerst /IDMOBILE/ auf, um die Zustimmung des Nutzers anzufordern und die URL der Zustimmungsseite des Betreibers zu erhalten. Sobald die Zustimmung erteilt wurde, rufen Sie /GET/ auf, um die Nutzerdaten abzurufen.
Zugehörige ID-Mobile-Dokumentation:
⬇ OpenAPI-3.0.0-Spezifikation herunterladen (JSON)
Schritt 1 von 2 — Zustimmung anfordern
Leiten Sie die Zustimmungsanfrage ein und erhalten Sie die URL der Zustimmungsseite des Betreibers.
Schritt 1 — Zustimmungsanfrage einleiten
Anfrage
Sowohl GET als auch POST werden unterstützt.
{SERVER_ADDRESS} und {LICENCE_CODE} werden von DQE bei der Kontoerstellung bereitgestellt. Wenden Sie sich an Ihren DQE-Kundenbetreuer, um diese Zugangsdaten zu erhalten.
GET POST
GET https://{SERVER_ADDRESS}/IDMOBILE/?number ={NUM}&token ={TOKEN}&mode ={MODE}&name ={NAME}&code_name ={CODE_NAME}&licence ={LICENCE_CODE}&scope =formfilling&redirect_uri ={URL_REDIRECT}
Codebeispiele
Zustimmung zum Abruf der Nutzerdaten anfordern
cURL JavaScript Python PHP Node.js Java C# Go
curl "https://{SERVER_ADDRESS}/IDMOBILE/?number={NUM}&token={TOKEN}&mode={MODE}&name={NAME}&code_name={CODE_NAME}&licence={LICENCE_CODE}&scope=formfilling&redirect_uri={URL_REDIRECT}"
fetch("https://{SERVER_ADDRESS}/IDMOBILE/?" + new URLSearchParams({
number: "{NUM}",
token: "{TOKEN}",
mode: "{MODE}",
name: "{NAME}",
code_name: "{CODE_NAME}",
licence: "{LICENCE_CODE}",
scope: "formfilling",
redirect_uri: "{URL_REDIRECT}"
}))
.then(r => r.json())
.then(data => console.log(data));
import requests
response = requests.get(
"https://{SERVER_ADDRESS}/IDMOBILE/",
params={
"number": "{NUM}",
"token": "{TOKEN}",
"mode": "{MODE}",
"name": "{NAME}",
"code_name": "{CODE_NAME}",
"licence": "{LICENCE_CODE}",
"scope": "formfilling",
"redirect_uri": "{URL_REDIRECT}",
},
)
print(response.json())
<?php
$params = http_build_query([
'number' => '{NUM}',
'token' => '{TOKEN}',
'mode' => '{MODE}',
'name' => '{NAME}',
'code_name' => '{CODE_NAME}',
'licence' => '{LICENCE_CODE}',
'scope' => 'formfilling',
'redirect_uri' => '{URL_REDIRECT}',
]);
$ch = curl_init("https://{SERVER_ADDRESS}/IDMOBILE/?{$params}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
const axios = require('axios');
axios.get('https://{SERVER_ADDRESS}/IDMOBILE/', {
params: {
number: '{NUM}',
token: '{TOKEN}',
mode: '{MODE}',
name: '{NAME}',
code_name: '{CODE_NAME}',
licence: '{LICENCE_CODE}',
scope: 'formfilling',
redirect_uri: '{URL_REDIRECT}'
}
})
.then(response => console.log(response.data));
HttpClient client = HttpClient.newHttpClient();
String url = "https://{SERVER_ADDRESS}/IDMOBILE/"
+ "?number={NUM}&token={TOKEN}&mode={MODE}&name={NAME}&code_name={CODE_NAME}&licence={LICENCE_CODE}&scope=formfilling&redirect_uri={URL_REDIRECT}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
using var client = new HttpClient();
var url = "https://{SERVER_ADDRESS}/IDMOBILE/" +
"?number={NUM}&token={TOKEN}&mode={MODE}&name={NAME}&code_name={CODE_NAME}&licence={LICENCE_CODE}&scope=formfilling&redirect_uri={URL_REDIRECT}";
var response = await client.GetAsync(url);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
url := "https://{SERVER_ADDRESS}/IDMOBILE/" +
"?number={NUM}&token={TOKEN}&mode={MODE}&name={NAME}&code_name={CODE_NAME}&licence={LICENCE_CODE}&scope=formfilling&redirect_uri={URL_REDIRECT}"
resp, err := http.Get(url)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
POST https://{SERVER_ADDRESS}/IDMOBILE/
Fügen Sie die folgenden Parameter im Anfragetext im Format x-www-form-urlencoded hinzu.
Codebeispiele
Zustimmung zum Abruf der Nutzerdaten anfordern
cURL JavaScript Python PHP Node.js Java C# Go
curl -X POST "https://{SERVER_ADDRESS}/IDMOBILE/" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "licence={LICENCE_CODE}" \
-d "number={NUM}" \
-d "token={TOKEN}" \
-d "mode={MODE}" \
-d "name={NAME}" \
-d "code_name={CODE_NAME}" \
-d "scope=formfilling" \
-d "redirect_uri={URL_REDIRECT}"
fetch("https://{SERVER_ADDRESS}/IDMOBILE/", {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({
licence: "{LICENCE_CODE}",
number: "{NUM}",
token: "{TOKEN}",
mode: "{MODE}",
name: "{NAME}",
code_name: "{CODE_NAME}",
scope: "formfilling",
redirect_uri: "{URL_REDIRECT}"
})
})
.then(r => r.json())
.then(data => console.log(data));
import requests
response = requests.post(
"https://{SERVER_ADDRESS}/IDMOBILE/",
data={
"licence": "{LICENCE_CODE}",
"number": "{NUM}",
"token": "{TOKEN}",
"mode": "{MODE}",
"name": "{NAME}",
"code_name": "{CODE_NAME}",
"scope": "formfilling",
"redirect_uri": "{URL_REDIRECT}",
},
)
print(response.json())
<?php
$ch = curl_init("https://{SERVER_ADDRESS}/IDMOBILE/");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
'licence' => '{LICENCE_CODE}',
'number' => '{NUM}',
'token' => '{TOKEN}',
'mode' => '{MODE}',
'name' => '{NAME}',
'code_name' => '{CODE_NAME}',
'scope' => 'formfilling',
'redirect_uri' => '{URL_REDIRECT}',
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
const axios = require('axios');
const qs = require('querystring');
axios.post('https://{SERVER_ADDRESS}/IDMOBILE/', qs.stringify({
licence: '{LICENCE_CODE}',
number: '{NUM}',
token: '{TOKEN}',
mode: '{MODE}',
name: '{NAME}',
code_name: '{CODE_NAME}',
scope: 'formfilling',
redirect_uri: '{URL_REDIRECT}'
}))
.then(response => console.log(response.data));
HttpClient client = HttpClient.newHttpClient();
String form = "licence={LICENCE_CODE}&number={NUM}&token={TOKEN}&mode={MODE}&name={NAME}&code_name={CODE_NAME}&scope=formfilling&redirect_uri={URL_REDIRECT}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://{SERVER_ADDRESS}/IDMOBILE/"))
.header("Content-Type", "application/x-www-form-urlencoded")
.POST(HttpRequest.BodyPublishers.ofString(form))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
using var client = new HttpClient();
var form = new Dictionary<string, string> {
["licence"] = "{LICENCE_CODE}",
["number"] = "{NUM}",
["token"] = "{TOKEN}",
["mode"] = "{MODE}",
["name"] = "{NAME}",
["code_name"] = "{CODE_NAME}",
["scope"] = "formfilling",
["redirect_uri"] = "{URL_REDIRECT}"
};
var response = await client.PostAsync(
"https://{SERVER_ADDRESS}/IDMOBILE/",
new FormUrlEncodedContent(form));
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
form := url.Values{}
form.Set("licence", "{LICENCE_CODE}")
form.Set("number", "{NUM}")
form.Set("token", "{TOKEN}")
form.Set("mode", "{MODE}")
form.Set("name", "{NAME}")
form.Set("code_name", "{CODE_NAME}")
form.Set("scope", "formfilling")
form.Set("redirect_uri", "{URL_REDIRECT}")
resp, err := http.PostForm("https://{SERVER_ADDRESS}/IDMOBILE/", form)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
Parameters
Parameter
Beschreibung
Pflicht/Opt
SERVER_ADDRESS
Adresse des DQE-Servers, der die Daten verarbeitet.
Pflicht
licence
Ihnen zugewiesene Nummer als Lizenzcode.
Pflicht
number
Telefonnummer.
Pflicht
token
Durch Authentifizierung abgerufenes Token.
Pflicht
mode
2: Authentifizierung per Code.Fester Wert: 2
Pflicht
name
Partnername in der DQE-Software-Datenbank, in der Regel Ihr Firmenname.
Pflicht
code_name
Optionales Feld mit einem Code, der name zugeordnet ist.
Optional
scope
Fester Wert. Muss für diesen Scope formfilling sein.Fester Wert: formfilling
Pflicht
redirect_uri
Weiterleitungs-URL. DQE fügt der Weiterleitung das Sitzungstoken und den Status hinzu.
Optional
Scopes kombinieren — Der Parameter formfilling kann mit billing (beide sind zustimmungsbasiert) in einer einzigen Anfrage kombiniert werden, z. B. scope=formfilling,billing, sowie mit info (Telefonnummern-Intelligenz) in jeder Kombination, z. B. scope=formfilling,info. Siehe die info-Felder unten. Wenden Sie sich an Ihren DQE-Kundenbetreuer für Hinweise zur vollständigen kombinierten Antwortstruktur von formfilling+billing.
info-Zusatzfelder — werden zusätzlich zu den eigenen Feldern dieses Endpunkts zurückgegeben, wenn info im scope enthalten ist:
Feld
Beschreibung
Beispiel
telorigine
Telefonnummer in der Anfrage.
0600000000
tel
Formatierte Telefonnummer.
+33600000000
geolocation
Geografische Lage der Telefonnummer.
FRANCE
operator
Aktueller Betreiber der Telefonnummer, sofern vorhanden.
ORANGE
oldoperator
Vorheriger Betreiber der Telefonnummer.
SFR
ported
Gibt an, ob die Telefonnummer portiert wurde, sofern vorhanden.
Y
type
Art der Telefonnummer.
MOBILE
iderror
Fehlercode der Prüfung (0 oder 1).
1
Response
Bei Erfolg gibt die API ein JSON-Objekt mit den folgenden Schlüsseln zurück.
Schlüssel
Beschreibung
Typ
status
success
STRING
operator
Betreiber.
STRING
url
URL der Betreiber-API.
STRING
Response example
Erfolgreiche Zustimmungsanfrage {
"status" : "success" ,
"operator" : "Orange" ,
"url" : "https://api.operator/openidconnect/fr"
}
Errors
Fehler-ID
Fehlertyp
Beschreibung
01
invalid request
Die Anfrage ist ungültig.
02
invalid licence key
Die Lizenz ist ungültig.
04
invalid scope
Ungültiger Scope.
05
missing or empty parameter (user_infos) for this scope
Für den angeforderten Scope fehlt ein Parameter.
06
bad parameter format (user_infos) is not a valid JSON
Der Parameter user_infos ist kein gültiges JSON.
07
missing mandatory key in user informations (phone)
Der Schlüssel phone ist im Parameter user_infos für diesen Betreiber Pflicht.
09
ineligible phone number
Die Telefonnummer ist für diese Lösung nicht zulässig.
10
invalid phone number
Die Telefonnummer existiert nicht.
11
phone number is empty
Die Telefonnummer ist leer.
12
phone check failed
Die Betreiberprüfung ist fehlgeschlagen.
13
operator [Operator Name] not found
Der Betreiber konnte nicht gefunden werden.
14
operator [Operator Name] not authorized for this licence
Ihre Lizenz ist für diesen Betreiber nicht autorisiert.
15
operator [Operator Name] not supported yet
Die Lösung ist für diesen Betreiber noch nicht verfügbar.
16
operator [Operator Name] unreachable
Der Betreiber konnte nicht kontaktiert werden.
17
scope not supported by this operator [Operator Name] yet
Dieser Scope wird vom Betreiber nicht unterstützt.
30
invalid or expired token
Das Token ist abgelaufen.
API testen
Klicken Sie auf die Schaltfläche unten, um diesen Endpunkt live in Ihrem Browser zu testen.
Konsole öffnen
Schritt 2 von 2 — Nutzerdaten abrufen
Sobald der Nutzer seine Zustimmung erteilt hat, rufen Sie die vom Betreiber zurückgegebenen Daten ab.
Schritt 2 — Nutzerdaten abrufen
Anfrage
Sowohl GET als auch POST werden unterstützt.
{SERVER_ADDRESS} und {LICENCE_CODE} werden von DQE bei der Kontoerstellung bereitgestellt. Wenden Sie sich an Ihren DQE-Kundenbetreuer, um diese Zugangsdaten zu erhalten.
GET POST
GET https://{SERVER_ADDRESS}/GET/?token ={TOKEN}&Licence ={LICENCE_CODE}&scope =formfilling
Codebeispiele
Nutzerdaten nach erteilter Zustimmung abrufen
cURL JavaScript Python PHP Node.js Java C# Go
curl "https://{SERVER_ADDRESS}/GET/?token={TOKEN}&Licence={LICENCE_CODE}&scope=formfilling"
fetch("https://{SERVER_ADDRESS}/GET/?" + new URLSearchParams({
token: "{TOKEN}",
Licence: "{LICENCE_CODE}",
scope: "formfilling"
}))
.then(r => r.json())
.then(data => console.log(data));
import requests
response = requests.get(
"https://{SERVER_ADDRESS}/GET/",
params={
"token": "{TOKEN}",
"Licence": "{LICENCE_CODE}",
"scope": "formfilling",
},
)
print(response.json())
<?php
$params = http_build_query([
'token' => '{TOKEN}',
'Licence' => '{LICENCE_CODE}',
'scope' => 'formfilling',
]);
$ch = curl_init("https://{SERVER_ADDRESS}/GET/?{$params}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
const axios = require('axios');
axios.get('https://{SERVER_ADDRESS}/GET/', {
params: {
token: '{TOKEN}',
Licence: '{LICENCE_CODE}',
scope: 'formfilling'
}
})
.then(response => console.log(response.data));
HttpClient client = HttpClient.newHttpClient();
String url = "https://{SERVER_ADDRESS}/GET/"
+ "?token={TOKEN}&Licence={LICENCE_CODE}&scope=formfilling";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
using var client = new HttpClient();
var url = "https://{SERVER_ADDRESS}/GET/" +
"?token={TOKEN}&Licence={LICENCE_CODE}&scope=formfilling";
var response = await client.GetAsync(url);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
url := "https://{SERVER_ADDRESS}/GET/" +
"?token={TOKEN}&Licence={LICENCE_CODE}&scope=formfilling"
resp, err := http.Get(url)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
POST https://{SERVER_ADDRESS}/GET/
Fügen Sie die folgenden Parameter im Anfragetext im Format x-www-form-urlencoded hinzu.
Codebeispiele
Nutzerdaten nach erteilter Zustimmung abrufen
cURL JavaScript Python PHP Node.js Java C# Go
curl -X POST "https://{SERVER_ADDRESS}/GET/" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "Licence={LICENCE_CODE}" \
-d "token={TOKEN}" \
-d "scope=formfilling"
fetch("https://{SERVER_ADDRESS}/GET/", {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({
Licence: "{LICENCE_CODE}",
token: "{TOKEN}",
scope: "formfilling"
})
})
.then(r => r.json())
.then(data => console.log(data));
import requests
response = requests.post(
"https://{SERVER_ADDRESS}/GET/",
data={
"Licence": "{LICENCE_CODE}",
"token": "{TOKEN}",
"scope": "formfilling",
},
)
print(response.json())
<?php
$ch = curl_init("https://{SERVER_ADDRESS}/GET/");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
'Licence' => '{LICENCE_CODE}',
'token' => '{TOKEN}',
'scope' => 'formfilling',
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
const axios = require('axios');
const qs = require('querystring');
axios.post('https://{SERVER_ADDRESS}/GET/', qs.stringify({
Licence: '{LICENCE_CODE}',
token: '{TOKEN}',
scope: 'formfilling'
}))
.then(response => console.log(response.data));
HttpClient client = HttpClient.newHttpClient();
String form = "Licence={LICENCE_CODE}&token={TOKEN}&scope=formfilling";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://{SERVER_ADDRESS}/GET/"))
.header("Content-Type", "application/x-www-form-urlencoded")
.POST(HttpRequest.BodyPublishers.ofString(form))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
using var client = new HttpClient();
var form = new Dictionary<string, string> {
["Licence"] = "{LICENCE_CODE}",
["token"] = "{TOKEN}",
["scope"] = "formfilling"
};
var response = await client.PostAsync(
"https://{SERVER_ADDRESS}/GET/",
new FormUrlEncodedContent(form));
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
form := url.Values{}
form.Set("Licence", "{LICENCE_CODE}")
form.Set("token", "{TOKEN}")
form.Set("scope", "formfilling")
resp, err := http.PostForm("https://{SERVER_ADDRESS}/GET/", form)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
Parameters
Parameter
Beschreibung
Pflicht/Opt
SERVER_ADDRESS
Adresse des DQE-Servers, der die Daten verarbeitet.
Pflicht
Licence
Ihnen zugewiesene Nummer als Lizenzcode.
Pflicht
token
Durch Authentifizierung abgerufenes Token.
Pflicht
scope
Fester Wert. Muss für diesen Scope formfilling sein.Fester Wert: formfilling
Pflicht
Antwort
Die API gibt ein JSON-Objekt mit den folgenden Schlüsseln zurück:
Schlüssel
Beschreibung
Typ
status
success: Die Informationen wurden erfolgreich abgerufen.
STRING
scope
Enthält den zuvor gesendeten Scope.
STRING
code_name
Enthält den zuvor gesendeten Code-Namen.
STRING
formfilling
Objekt mit den abgerufenen Nutzerdaten. Siehe Schlüsseltabelle unten.
JSON OBJECT
Schlüssel
Beschreibung
Typ
phone_number
Telefonnummer.
STRING(10)
family_name
Nachname.
STRING
name
Vor- und Nachname.
STRING
locale
Muttersprache.
STRING(3)
gender
Geschlecht: M für männlich, F für weiblich.
STRING
updated_at
Datum der letzten Datenaktualisierung.
DATE
birthdate
Geburtsdatum.
DATE
birthplace
Geburts-Département.
STRING
given_name
Vorname.
STRING
address
Postanschrift-Objekt. Schlüssel: country, postal_code, formatted, street_address, number, locality.
JSON OBJECT
email
Vollständige E-Mail-Adresse.
STRING
email_domain
E-Mail-Domain.
STRING
email_account
E-Mail-Benutzername.
STRING
subscriber_msisdn
Für den Vertragsabschluss verwendete Telefonnummer.
STRING(10)
sub
Kundenkennung in der Betreiberdatenbank.
STRING
Ausstehend
Schlüssel
Beschreibung
Typ
status
pending: DQE wartet auf die Antwort des Betreibers.
STRING
scope
Enthält formfilling.
STRING
Response example
Erfolgreicher Abruf {
"status" : "success" ,
"scope" : "formfilling" ,
"code_name" : "" ,
"formfilling" : {
"phone_number" : "" ,
"family_name" : "" ,
"name" : " -" ,
"locale" : "fr-FR" ,
"gender" : "M" ,
"email_domain" : ".com" ,
"updated_at" : "-08-09" ,
"birthdate" : "-08-30" ,
"birthplace" : "-08-30" ,
"given_name" : "" ,
"address" : {
"locality" : "" ,
"country" : "" ,
"number" : "" ,
"formatted" : "" ,
"postal_code" : "" ,
"street_address" : ""
},
"email_account" : "" ,
"email" : "" ,
"subscriber_msisdn" : "" ,
"sub" : ""
}
}
Ausstehend — Warten auf den Betreiber {
"status" : "pending" ,
"scope" : "formfilling"
}
Fehler {
"status" : "error" ,
"error_type" : "internal server error" ,
"error_id" : "99"
}
Errors
Fehler-ID
Fehlertyp
Beschreibung
01
invalid request
Die Anfrage ist ungültig.
02
invalid licence key
Die Lizenz ist ungültig.
04
invalid scope
Ungültiger Scope.
18
failed to retrieve data from operator
Nach der OTP-Validierung wurden keine Daten empfangen.
20
OTP incorrect
Die OTP-Validierung wurde nicht abgeschlossen.
21
access denied
Die OTP-Validierung wurde abgelehnt.
30
invalid or expired token
Das Token ist abgelaufen.
99
internal server error
Serverfehler.
API testen
Klicken Sie auf die Schaltfläche unten, um diesen Endpunkt live in Ihrem Browser zu testen.
Konsole öffnen