Latest commit

History

146 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Partner API

The Partner API enables automation of Europace's user management. The partner management (settings) is used by Europace partners to map their own user and rights structure.

Partners can be users as well as organizations like companies, departments or teams. Each partner is created in the hierarchy tree as Plakette of type Person or Organisation.


advisorloanProvidermortgageLoanconsumerLoan

AuthenticationGitHub release

Pattern

Dokumentation

YAMLYAML

For translation of our german domain-specific-language the glossary will support you.

Quick Start

To help you test our APIs and your use case as quickly as possible, we've put together a Postman Collection for you.

Authentication

Please use Authentication to get access to the API. The OAuth2 client requires the following scopes:

ScopeAPI-Usecase
partner:plakette:anlegenAllows to create new Plaketten
partner:plakette:lesenAllows to read partner data
partner:plakette:schreibenAllows to write partner data
partner:beziehungen:lesenAllows to read relations between partners. Allows to retrieve UebernahmeRecht, Administrierbare, Uebernehmbare and Handelsbeziehungen
partner:beziehungen:schreibenAllows to write relations between partners. Allows to add UebernahmeRecht and update Handelsbeziehungen
partner:rechte:lesenAllows to read partner rights
partner:rechte:schreibenAllows to write partner rights

Use cases of the API

get information

manage partner

Get contact details of a partner

Contact details can be retrieved for all trading partners to support collaboration.

Requirements:

  • the caller has a trading relationship with the partner and/or
  • the caller has an Zugriffsrecht to the partner and/or
  • the caller has a Einstellungsrecht to the partner and/or
  • the caller is above the partner in the hierarchy

Example request:

curl --location --request GET 'https://api.europace.de/v2/partner/ABC12/kontaktdaten' \
--header 'Content-Type: application/json' \
--header 'X-TraceId: {{meineTraceId}}' \
--header 'Authorization: Bearer {{access_token}}'

Example response Person:

{
"person": {
"anrede": "FRAU",
"vorname": "Maxi",
"nachname": "Musterfrau",
"titelFunktion": "Baufi-Beraterin",
"geburtsdatum": "1995-05-05"
},
"firmenName": "Immofin AG",
"telefon": "030-12345-0",
"mobiltelefon": "0151-12345678",
"email": "maxi.musterfrau@immofin.de",
"anschrift": {
"strasse": "Teststr.",
"hausnummer": "69",
"plz": "10557",
"ort": "Berlin"
},
"Paragraph34c": {
"registrierungsNummer": "D-W-7943497238942",
"aufsichtsBehörde": "IHK Berlin, Fasanenstr. 85, 10623 Berlin"
}
}

Example response Organisation:

{
"organisation": {
"organisationsName": "Immofin"
},
"firmenName": "Immofin AG",
"telefon": "030-12345-0",
"fax": "030-12345-678",
"email": "maxi.musterfrau@immofin.de",
"website": "http://www.immofin.de",
"anschrift": {
"strasse": "Teststr.",
"hausnummer": "69",
"plz": "10557",
"ort": "Berlin"
},
"Paragraph34c": {
"registrierungsNummer": "D-W-7943497238942",
"aufsichtsBehörde": "IHK Berlin, Fasanenstr. 85, 10623 Berlin"
}
}

Get partner data

Requirements:

  • OAuth token has scope partner:plakette:lesen.
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

curl --location --request GET 'https://api.europace.de/v2/partner/ABC12' \
--header 'Content-Type: application/json' \
--header 'X-TraceId: {{meineTraceId}}' \
--header 'Authorization: Bearer {{access_token}}'

The inheritance of values of certain attributes along the hierarchy, which is known from the settings, is reflected in the API. Inherited values are therefore delivered.

Example response:

{
"partnerId": "ABC12",
"typ": "PERSON",
"avatarUrl": "https://www.europace2.de/partnermanagement/d71c58aeaed4022384b169f83e0d8842.avatar?anonymousAvatar=BENUTZER",
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde":"Musterbehoerde",
"registrierungsnummer":"987654",
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456",
"taetigFuerProduktanbieter": [
{
"produktAnbieterId": "ONE_CLICK_BAUFI",
"produktAnbieter": "Sofortzusage-Bank"
},
{
"produktAnbieterId": "PILOT",
"produktAnbieter": "Pilotproduktanbieter"
}
]
}

Get partners by externe partner id

Requirements:

  • OAuth token has scope partner:plakette:lesen.
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

GET /v2/partners?externePartnerId=11111Accept: application/jsonAuthorization: Bearer eyJraWQiOiJRM

Example response:

{
"partners": [
{
"partnerId": "EDY92",
"href": "http://localhost:8080/v2/partner/EDY92"
},
{
"partnerId": "YRA59",
"href": "http://localhost:8080/v2/partner/YRA59"
},
{
"partnerId": "CUI17",
"href": "http://localhost:8080/v2/partner/CUI17"
}
],
"total": 3
}

Get license information for a partner

Requirements:

  • OAuth token has scope partner:rechte:lesen

Example request:

GET /v2/partner/ABC12/lizenzenHost: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: request-2020-08-28-07-59

Example response:

{
"EUROPACE_ONE": {
"aktiv": true,
"aktiviertSeit": "2025-02-01"
}
}

Get partner-code

Partnerkennzeichen identify a Vertriebsorganisation on the Produktanbieter-side.

Requirements:

  • OAuth token has scope partner:plakette:lesen
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

GET /v2/partner/ABC12/partnerkennzeichen HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: request-2020-08-28-07-59Accept: application/json

Inherited values are therefore not delivered. The inheritance of values of certain attributes along the hierarchy, which is known from the settings, is not reflected in the API.

Example response: Status: 200 OK

{
"dslSapGeschaeftspartnerNummerFuerRatenkredit": "cdts-dsl-sap-vo",
"dslVertriebsWegSchluesselFuerRatenkredit": "1899026629",
"dkbVertriebsIdFuerRatenkredit": "cdts-dkb-vertrieb",
"kennzeichenIngDiba": {
"vermittlerNummer": "9800002186",
"vermittlerVorname": "wer",
"vermittlerNachname": "wer",
"vermittlerNummerFuerRatenkredit": "cdts-ing-diba-vermittler"
},
"kennzeichenErgo": {},
"kennzeichenBhw": {
"vgeNummer": "6248/205585.0",
"orgaNummer": "ORGA123",
"zurIdentifikationsPruefungLegitimiert": "false"
},
"lbsOstVermittlerNummer": "lbsost-werwer-vermittler",
"lbsShhVermittlerNummer": "lbs-ssh-ldapvermittler",
"lbsSuedwestVermittlerNummer": "lbs-südwest-ldapvermittler",
"lbsWestVermittlerNummer": "lbs-west-ldapvermittler",
"allianzVertreterNummer": "01/012/0123",
"axaGeschaeftsPartnerNummer": "MA 00352",
"dslVermittlerGruppenSchluessel": "1200",
"bshVoNummer": "abcdefghijklmnopqrstuvwxyz",
"bshAkquisitionsWeg": "AW1",
"bshBlzVertriebsbank": "1234567890",
"dzHypVermittlerNummer": "1234",
"alteLeipzigerVerbundVermittlerNummer": "42",
"rundvBankAgenturNummer": "RV_BAN",
"rundvBlzVertriebsbank": "RV_BLZ",
"vertriebsOrganisation": {
"name": "Musterbank",
"firma": "Musterbank AG",
"vertriebsOrganisationsId": "MUSTERBANK_AG",
"partnerId": "TYL29"
}
}

Get user-access

To determine the current Zugang, this can be read out.

Requirements:

  • OAuth token has scope partner:plakette:lesen
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

GET /v2/partner/ABC12/zugang HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json

Example response, for a partner authenticating to the Europace identity provider (Europace password): Status: 200 OK

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"benutzername": "maxi.musterman@example.org",
}

Example response, for a partner authenticating with its own identity provider (e.g. Actice Directory): Status: 200 OK

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"identityProviderBenutzername": "maxi.muster",
"identityProviderConfigURL": "https://auth.deineOrganisation.de/adfs/.well-known/openid-configuration"
}

Get partner-permissions

Requirements for all use cases and examples:

  • OAuth token has scope partner:rechte:lesen
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Get user-permissions

Example request:

GET /v2/partner/ABC12/rechte HTTP/1.1Host: api.europace.deAuthorization: Bearer eyJraWQ

Example response:

{
"partnermanagement": {
"apiClientEinstellungenVornehmen": true,
"einstellungenOeffnen": true,
"baufiSmartEinstellungenVornehmen": true,
"partnerAnlegen": true
},
"baufismart": {
"baufiSmartNutzen": true,
"echtgeschaeft": true,
"vorgaengeUeberOberflaecheAnlegen": true,
"ergebnisListeNutzen": true,
"loeschen": false
},
"kreditsmart": {
"echtgeschaeft": true,
"kreditSmartSichtbar": true,
"versicherungAnbieten": true,
"vorgaengeUeberOberflaecheAnlegen": true
}
}

Get access right

The Zugriffrecht entitles partners to read and write access to all Vorgänge of another partner.

Which partners do I have access to?

Example request:

GET /v2/partner/ABC12/uebernehmbare HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJContent-Type: application/jsonX-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{ "content": [ { "partnerId":"XYZ15" } ]
}

Do I have access to Partner XYZ15?

Example request:

GET /v2/partner/ABC12/uebernahmeRechtFuer/XYZ15 HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOi...Content-Type: application/jsonX-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{
"partner": {
"partnerId": "XYZ15",
"gesperrt": false
},
"uebernehmbar": true
}

Get setting right

Returns all partners for which this partner is allowed to change the data and authorizations or retrieve the reporting.

At least the partner itself is returned, since everyone may at least set itself or retrieve its own reporting.

In order to achieve a better performance, the implicitly administrable partners have been omitted in the partner-api. To determine these, it is necessary to iterate over the subordinates of the result list.

Requirements:

  • OAuth token has scope partner:plakette:lesen.
  • Each partner may make changes to himself or other partners if he has the Einstellungsrecht. This means that partner data or authorizations can be adjusted. Authorizations can only be assigned if the executing partner has them himself.

Which partners can I manage?

Example request:

GET /v2/partner/ABC12/administrierbare HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json

Example response:

{ "content": [ { "partnerId":"XYZ15" } ]
}

Get trade relations

Experimental

This API is experimental and may change or be removed without notice. Do not rely on it for production use yet.

Handelsbeziehungen describe the business relationship between a partner and a Produktanbieter: whether business may be initiated with the product provider (ermittelbar) and whether business may be accepted from it (annehmbar).

The visible effective trade relations are returned. The inheritance of these values along the hierarchy, which is known from the settings, is reflected in the returned effective values.

Requirements:

  • OAuth token has scope partner:beziehungen:lesen.

Get all trade relations of a partner

Example request:

GET /v2/partner/ABC12/handelsbeziehungen HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{
"total": 2,
"handelsbeziehungen": [
{
"produktanbieterId": "ONE_CLICK_BAUFI",
"produktanbieterName": "Sofortzusage-Bank",
"ermittelbar": true,
"annehmbar": false
},
{
"produktanbieterId": "PILOT",
"produktanbieterName": "Pilotproduktanbieter",
"ermittelbar": true,
"annehmbar": true
}
]
}

Get a single trade relation

Example request:

GET /v2/partner/ABC12/handelsbeziehungen/ONE_CLICK_BAUFI HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{
"produktanbieterId": "ONE_CLICK_BAUFI",
"produktanbieterName": "Sofortzusage-Bank",
"ermittelbar": true,
"annehmbar": false
}

Create partner

Creating a new partner is always done below an existing partner: https://api.europace.de/v2/partner/{PartnerId}/untergeordnete

Requirements:

  • OAuth token has scope partner:plakette:anlegen.
  • Caller is a partner of type Person
  • Caller has the may create organizational units permission.
  • Caller has Einstellungsrechte on the partner under which the new partner is to be created

Example request:

POST /v2/partner/ABC12/untergeordnete HTTP/1.1Host: api.europace.deAccept: application/jsonX-Trace-Id: ff-request-2020-08-28-07-55Authorization: Bearer eyJraWQiO...Content-Type: application/json
{
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

The following rules apply to server-side evaluation:

  • unknown attributes are ignored.
  • For organizations, person-specific attributes are ignored.
  • For persons, organization-specific attributes are ignored.
  • Empty attributes for strings ("") are ignored.
  • "partnerId" cannot be set and will be ignored.
  • Rights are set to false for persons if not specified.

The body of the response contains the current master data in JSON format. This can be used for success control. Attributes that are set on the server side or for which there are default values are always included.

The HTTP header "Location" contains the url of the newly created partner.

Example response:

{
"partnerId": "ABC12",
"typ": "PERSON",
"avatarUrl": "https://www.europace2.de/partnermanagement/d71c58aeaed4022384b169f83e0d8842.avatar?anonymousAvatar=BENUTZER",
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde":"Musterbehoerde",
"registrierungsnummer":"987654",
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

Note

For a successful offer acceptance in BaufiSmart it is necessary for the following processes that the following attributes are maintained in the partner management for the account manager of the transaction:

  • anrede
  • vorname
  • nachname
  • anschrift
  • bankverbindung
  • email

Update partner data

Attributes of a partner can be modified using HTTP PATCH. This overwrites only those attributes that are included in the PATCH request. All other attributes are not changed.

To make changes to a partner, the caller needs Einstellungsrechte.

Attributes that can be changed via PATCH

  • anrede
  • anschrift
  • aufsichtsbehoerde (deprecated, use aufsichtsbehoerde34i)
  • aufsichtsbehoerde34i
  • aufsichtsbehoerde34k
  • bankverbindung
  • email
  • externePartnerId
  • faxnummer
  • firmenname
  • firmennameZusatz
  • geburtsdatum
  • kreditsachbearbeiter
  • mobilnummer
  • name
  • vorname
  • nachname
  • registrierungsnummer (deprecated, use registrierungsnummer34i)
  • registrierungsnummer34i
  • registrierungsnummer34k
  • telefonnummer
  • titelFunktion
  • webseite

Note

aufsichtsbehoerde and registrierungsnummer hold the data of the Gewerbeerlaubnis according to § 34i GewO (Immobiliardarlehensvermittlung). They are superseded by the explicit fields aufsichtsbehoerde34i / registrierungsnummer34i, which read and write the same values and remain interchangeable with them. If both a deprecated field and its ...34i counterpart are sent in one request, the ...34i value is applied.

aufsichtsbehoerde34k and registrierungsnummer34k hold the data of the Gewerbeerlaubnis according to § 34k GewO (Allgemeine Verbraucherdarlehensvermittlung). All four fields can be maintained independently of each other.

Example

Requirements:

  • OAuth token has the scope partner:plakette:schreiben.
  • Caller has Einstellungsrechte on the partner

Example request:

PATCH /v2/partner/ABC12 HTTP/1.1Host: api.europace.deAuthorization: Bearer eyJraWQiOiJWRDZZ...Accept: application/jsonX-TraceId: ff-request-2020-08-28Content-Type: application/json
{
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

The following rules apply to server-side evaluation:

  • empty attributes for strings ("") delete the existing value.
  • unknown attributes are ignored.
  • partnerId cannot be changed and will be ignored.
  • type is not changeable and will be ignored.
  • if a field expects an ENUM, a value must be specified (Anrede)

The body of the response contains the current partner data in JSON format. This can be used for success control. Attributes that were already set or for which there are default values are always included.

Example response:

{
"partnerId":"ABC12",
"vorname":"Max",
"nachname":"Mustermann",
"typ":"PERSON",
"email":"max.musterman@exmaple.org",
"avatar":"https://ep2.mtp.rz-hypoport.local/partnermanagement/d71c58aeaed4022384b169f83e0d8842.avatar?anonymousAvatar=BENUTZER",
"gesperrt":false,
"kreditsachbearbeiter":true,
"parent":{
"partnerId":"ABC12"
},
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"anrede":"HERR",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"referenzFeld":"Test Ref",
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051"
},
"aufsichtsbehoerde":"Musterbehoerde",
"registrierungsnummer":"987654",
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

Create or update user-access

A newly created partner needs a Zugang to be able to log in to Europace with username. The Zugang can be created by the settings-frontend (partner management) or the partner-API.

Create user-access

Requirements for all use cases and examples:

  • OAuth token has scope partner:plakette:schreiben
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Use case 1: Create Europace user.

The user with the PartnerId:ABC12 is set up an Zugang with the username "max.musterman@example.org" and an activation email (sendEmail=true) is sent to the username. In the activation email, the user is prompted to set a password.

Note:
The reply address in the activation email is the email or username of the subject in the access-token that created the Zugang. If no email address or username is available, the reply goes to noreply@europace2.de.

Requirement for use case 1:

  • the username is Europace-wide unique
  • the username is an e-mail address

Example request:

POST /v2/partner/ABC12/zugang?sendEmail=true HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"benutzername" : "maxi.musterman@example.org"
}

Example response:

{
"partnerId": "ABC12",
"status": "ZUGANG_UNBESTAETIGT",
"benutzername": "maxi.musterman@example.org",
}

Use case 2: Create user for own identity provider.

This use case is most common with banking partners or direct sales organizations where all employees have a company email with their own domain and the employees work exclusively within this organization.

In this use case, the partner's identity provider is configured and the username is used as the user identifier at Europace and the partner's identity provider.

Don't send an activation email (sendEmail=false), because the user already exists in the partner's Identity Provider.

Requirement for use case 2:

  • the username is Europace-wide unique
  • the username is an e-mail address

Example request:

POST /v2/partner/ABC12/zugang?sendEmail=false HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"benutzername" : "maxi.musterman@deineOrganisation.de"
}

Example response:

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"benutzername": "maxi.musterman@deineOrganisation.de",
"identityProviderConfigURL": "https://idp.deineOrganisation.de/auth/realms/.well-known/openid-configuration"
}

Use case 3: Username is not unique Europace-wide or no email address

A user:in is to be created for the own Identity Provider, but the username is Europace-wide not unique or no e-mail address. In this case the field 'benutzername' is not used at all, but only the field 'identityProviderBenutzername'. The identification of the user on the login mask can only be done via a partnerId. The partnerId can be passed to the login mask with the username parameter in some use cases to improve the user experience.

Since it is an existing user in the identity provider of the partner and the identityProvider username is only used here, no activation email is sent, regardless of the sendEmail parameter.

Requirements for use case 3:

  • No further

Example request:

POST /v2/partner/ABC12/zugang HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"identityProviderBenutzername" : "maxi.mustermann01"
}

Example response: Status: HTTP-Code: 201 created

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"identityProviderBenutzername": "maxi.mustermann01",
"identityProviderConfigURL": "https://idp.deineOrganisation.de/auth/realms/.well-known/openid-configuration"
}

Update user-access for identity providers

The Benutzernamen of external identity providers can be changed with Partner API.

Restriction:

  • the field benutzername cannot be changed

Example request:

PATCH /v2/partner/ABC12/zugang HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"identityProviderBenutzername" : "maxi.muster"
}

Example response: Status: HTTP-Code: 200 okay

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"identityProviderBenutzername": "maxi.muster",
"identityProviderConfigURL": "https://idp.deineOrganisation.de/auth/realms/.well-known/openid-configuration"
}

Update partner-permissions

Set user-permissions

Requirements:

  • OAuth token has the scope partner:rechte:schreiben.
  • Caller has a Einstellungsrecht on the partner

Example request:

POST /v2/partner/ABC12/rechte HTTP/1.1Host: api.europace.deAuthorization: Bearer eyJraWQ...
{
"baufismart": {
"baufiSmartNutzen": true,
"echtgeschaeft": true
}
}

Example response:

{
"partnermanagement": {
"apiClientEinstellungenVornehmen": true,
"einstellungenOeffnen": true,
"baufiSmartEinstellungenVornehmen": true,
"partnerAnlegen": true
},
"baufismart": {
"baufiSmartNutzen": true,
"echtgeschaeft": true,
"vorgaengeUeberOberflaecheAnlegen": true,
"ergebnisListeNutzen": true,
"loeschen": false
},
"kreditsmart": {
"echtgeschaeft": true,
"kreditSmartSichtbar": true,
"versicherungAnbieten": true,
"vorgaengeUeberOberflaecheAnlegen": true
}
}

Add access right

In the example, partner ABC12 is getting the Zugriffsrecht from XYZ56. ABC12 can then access the Vorgänge of XYZ56.

Requirements:

  • OAuth token has scope partner:beziehung:schreiben.
  • Caller has Einstellungsrecht on the partner to which the Zugriffsrecht is added
  • Caller has Einstellungsrecht on the partner to which the access is granted

Example request:

POST /v2/partner/ABC12/uebernahmeRechtFuer/XYZ56 HTTP/1.1Host: api.europace.deX-Trace-Id: My-COLLECTION-8301Authorization: Bearer eyJraWQiOiJFT05...

Example response: Status: HTTP-Code: 201 created

Update trade relation

Experimental

This API is experimental and may change or be removed without notice. Do not rely on it for production use yet.

An existing trade relation for a partner and Produktanbieter can be modified using HTTP PATCH. Only the transmitted fields are updated. All other fields are not changed.

Values for ermittelbar and annehmbar can be true, false, or null. Sending both attributes as null restores the inheritance of the trade relation along the hierarchy (see below).

Requirements:

  • OAuth token has the scope partner:beziehungen:schreiben.

Example request:

PATCH /v2/partner/ABC12/handelsbeziehungen/ONE_CLICK_BAUFI HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"ermittelbar": true,
"annehmbar": false
}

Example response: Status: 200 OK

{
"produktanbieterId": "ONE_CLICK_BAUFI",
"produktanbieterName": "Sofortzusage-Bank",
"ermittelbar": true,
"annehmbar": false
}

To restore the inheritance of the trade relation, send both attributes as null:

{
"ermittelbar": null,
"annehmbar": null
}

Restoring inheritance is only supported when the trade relation currently has values maintained directly on the partner. If the trade relation is already inheriting its values, there is nothing to restore and the request is rejected: Status: 422 Unprocessable Entity

Inheritance can only be restored fully. A request that sets exactly one of ermittelbar and annehmbar to null while the other contains a value, e.g.:

{
"ermittelbar": null,
"annehmbar": true
}

is rejected: Status: 400 Bad Request

Support

If you have any questions or problems, you can contact devsupport@europace2.de.

About

Dokumentation für Partner API

Topics

Resources

Code of conduct

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

146 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Partner API

The Partner API enables automation of Europace's user management. The partner management (settings) is used by Europace partners to map their own user and rights structure.

Partners can be users as well as organizations like companies, departments or teams. Each partner is created in the hierarchy tree as Plakette of type Person or Organisation.


advisorloanProvidermortgageLoanconsumerLoan

AuthenticationGitHub release

Pattern

Dokumentation

YAMLYAML

For translation of our german domain-specific-language the glossary will support you.

Quick Start

To help you test our APIs and your use case as quickly as possible, we've put together a Postman Collection for you.

Authentication

Please use Authentication to get access to the API. The OAuth2 client requires the following scopes:

ScopeAPI-Usecase
partner:plakette:anlegenAllows to create new Plaketten
partner:plakette:lesenAllows to read partner data
partner:plakette:schreibenAllows to write partner data
partner:beziehungen:lesenAllows to read relations between partners. Allows to retrieve UebernahmeRecht, Administrierbare, Uebernehmbare and Handelsbeziehungen
partner:beziehungen:schreibenAllows to write relations between partners. Allows to add UebernahmeRecht and update Handelsbeziehungen
partner:rechte:lesenAllows to read partner rights
partner:rechte:schreibenAllows to write partner rights

Use cases of the API

get information

manage partner

Get contact details of a partner

Contact details can be retrieved for all trading partners to support collaboration.

Requirements:

  • the caller has a trading relationship with the partner and/or
  • the caller has an Zugriffsrecht to the partner and/or
  • the caller has a Einstellungsrecht to the partner and/or
  • the caller is above the partner in the hierarchy

Example request:

curl --location --request GET 'https://api.europace.de/v2/partner/ABC12/kontaktdaten' \
--header 'Content-Type: application/json' \
--header 'X-TraceId: {{meineTraceId}}' \
--header 'Authorization: Bearer {{access_token}}'

Example response Person:

{
"person": {
"anrede": "FRAU",
"vorname": "Maxi",
"nachname": "Musterfrau",
"titelFunktion": "Baufi-Beraterin",
"geburtsdatum": "1995-05-05"
},
"firmenName": "Immofin AG",
"telefon": "030-12345-0",
"mobiltelefon": "0151-12345678",
"email": "maxi.musterfrau@immofin.de",
"anschrift": {
"strasse": "Teststr.",
"hausnummer": "69",
"plz": "10557",
"ort": "Berlin"
},
"Paragraph34c": {
"registrierungsNummer": "D-W-7943497238942",
"aufsichtsBehörde": "IHK Berlin, Fasanenstr. 85, 10623 Berlin"
}
}

Example response Organisation:

{
"organisation": {
"organisationsName": "Immofin"
},
"firmenName": "Immofin AG",
"telefon": "030-12345-0",
"fax": "030-12345-678",
"email": "maxi.musterfrau@immofin.de",
"website": "http://www.immofin.de",
"anschrift": {
"strasse": "Teststr.",
"hausnummer": "69",
"plz": "10557",
"ort": "Berlin"
},
"Paragraph34c": {
"registrierungsNummer": "D-W-7943497238942",
"aufsichtsBehörde": "IHK Berlin, Fasanenstr. 85, 10623 Berlin"
}
}

Get partner data

Requirements:

  • OAuth token has scope partner:plakette:lesen.
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

curl --location --request GET 'https://api.europace.de/v2/partner/ABC12' \
--header 'Content-Type: application/json' \
--header 'X-TraceId: {{meineTraceId}}' \
--header 'Authorization: Bearer {{access_token}}'

The inheritance of values of certain attributes along the hierarchy, which is known from the settings, is reflected in the API. Inherited values are therefore delivered.

Example response:

{
"partnerId": "ABC12",
"typ": "PERSON",
"avatarUrl": "https://www.europace2.de/partnermanagement/d71c58aeaed4022384b169f83e0d8842.avatar?anonymousAvatar=BENUTZER",
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde":"Musterbehoerde",
"registrierungsnummer":"987654",
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456",
"taetigFuerProduktanbieter": [
{
"produktAnbieterId": "ONE_CLICK_BAUFI",
"produktAnbieter": "Sofortzusage-Bank"
},
{
"produktAnbieterId": "PILOT",
"produktAnbieter": "Pilotproduktanbieter"
}
]
}

Get partners by externe partner id

Requirements:

  • OAuth token has scope partner:plakette:lesen.
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

GET /v2/partners?externePartnerId=11111Accept: application/jsonAuthorization: Bearer eyJraWQiOiJRM

Example response:

{
"partners": [
{
"partnerId": "EDY92",
"href": "http://localhost:8080/v2/partner/EDY92"
},
{
"partnerId": "YRA59",
"href": "http://localhost:8080/v2/partner/YRA59"
},
{
"partnerId": "CUI17",
"href": "http://localhost:8080/v2/partner/CUI17"
}
],
"total": 3
}

Get license information for a partner

Requirements:

  • OAuth token has scope partner:rechte:lesen

Example request:

GET /v2/partner/ABC12/lizenzenHost: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: request-2020-08-28-07-59

Example response:

{
"EUROPACE_ONE": {
"aktiv": true,
"aktiviertSeit": "2025-02-01"
}
}

Get partner-code

Partnerkennzeichen identify a Vertriebsorganisation on the Produktanbieter-side.

Requirements:

  • OAuth token has scope partner:plakette:lesen
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

GET /v2/partner/ABC12/partnerkennzeichen HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: request-2020-08-28-07-59Accept: application/json

Inherited values are therefore not delivered. The inheritance of values of certain attributes along the hierarchy, which is known from the settings, is not reflected in the API.

Example response: Status: 200 OK

{
"dslSapGeschaeftspartnerNummerFuerRatenkredit": "cdts-dsl-sap-vo",
"dslVertriebsWegSchluesselFuerRatenkredit": "1899026629",
"dkbVertriebsIdFuerRatenkredit": "cdts-dkb-vertrieb",
"kennzeichenIngDiba": {
"vermittlerNummer": "9800002186",
"vermittlerVorname": "wer",
"vermittlerNachname": "wer",
"vermittlerNummerFuerRatenkredit": "cdts-ing-diba-vermittler"
},
"kennzeichenErgo": {},
"kennzeichenBhw": {
"vgeNummer": "6248/205585.0",
"orgaNummer": "ORGA123",
"zurIdentifikationsPruefungLegitimiert": "false"
},
"lbsOstVermittlerNummer": "lbsost-werwer-vermittler",
"lbsShhVermittlerNummer": "lbs-ssh-ldapvermittler",
"lbsSuedwestVermittlerNummer": "lbs-südwest-ldapvermittler",
"lbsWestVermittlerNummer": "lbs-west-ldapvermittler",
"allianzVertreterNummer": "01/012/0123",
"axaGeschaeftsPartnerNummer": "MA 00352",
"dslVermittlerGruppenSchluessel": "1200",
"bshVoNummer": "abcdefghijklmnopqrstuvwxyz",
"bshAkquisitionsWeg": "AW1",
"bshBlzVertriebsbank": "1234567890",
"dzHypVermittlerNummer": "1234",
"alteLeipzigerVerbundVermittlerNummer": "42",
"rundvBankAgenturNummer": "RV_BAN",
"rundvBlzVertriebsbank": "RV_BLZ",
"vertriebsOrganisation": {
"name": "Musterbank",
"firma": "Musterbank AG",
"vertriebsOrganisationsId": "MUSTERBANK_AG",
"partnerId": "TYL29"
}
}

Get user-access

To determine the current Zugang, this can be read out.

Requirements:

  • OAuth token has scope partner:plakette:lesen
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

GET /v2/partner/ABC12/zugang HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json

Example response, for a partner authenticating to the Europace identity provider (Europace password): Status: 200 OK

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"benutzername": "maxi.musterman@example.org",
}

Example response, for a partner authenticating with its own identity provider (e.g. Actice Directory): Status: 200 OK

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"identityProviderBenutzername": "maxi.muster",
"identityProviderConfigURL": "https://auth.deineOrganisation.de/adfs/.well-known/openid-configuration"
}

Get partner-permissions

Requirements for all use cases and examples:

  • OAuth token has scope partner:rechte:lesen
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Get user-permissions

Example request:

GET /v2/partner/ABC12/rechte HTTP/1.1Host: api.europace.deAuthorization: Bearer eyJraWQ

Example response:

{
"partnermanagement": {
"apiClientEinstellungenVornehmen": true,
"einstellungenOeffnen": true,
"baufiSmartEinstellungenVornehmen": true,
"partnerAnlegen": true
},
"baufismart": {
"baufiSmartNutzen": true,
"echtgeschaeft": true,
"vorgaengeUeberOberflaecheAnlegen": true,
"ergebnisListeNutzen": true,
"loeschen": false
},
"kreditsmart": {
"echtgeschaeft": true,
"kreditSmartSichtbar": true,
"versicherungAnbieten": true,
"vorgaengeUeberOberflaecheAnlegen": true
}
}

Get access right

The Zugriffrecht entitles partners to read and write access to all Vorgänge of another partner.

Which partners do I have access to?

Example request:

GET /v2/partner/ABC12/uebernehmbare HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJContent-Type: application/jsonX-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{ "content": [ { "partnerId":"XYZ15" } ]
}

Do I have access to Partner XYZ15?

Example request:

GET /v2/partner/ABC12/uebernahmeRechtFuer/XYZ15 HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOi...Content-Type: application/jsonX-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{
"partner": {
"partnerId": "XYZ15",
"gesperrt": false
},
"uebernehmbar": true
}

Get setting right

Returns all partners for which this partner is allowed to change the data and authorizations or retrieve the reporting.

At least the partner itself is returned, since everyone may at least set itself or retrieve its own reporting.

In order to achieve a better performance, the implicitly administrable partners have been omitted in the partner-api. To determine these, it is necessary to iterate over the subordinates of the result list.

Requirements:

  • OAuth token has scope partner:plakette:lesen.
  • Each partner may make changes to himself or other partners if he has the Einstellungsrecht. This means that partner data or authorizations can be adjusted. Authorizations can only be assigned if the executing partner has them himself.

Which partners can I manage?

Example request:

GET /v2/partner/ABC12/administrierbare HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json

Example response:

{ "content": [ { "partnerId":"XYZ15" } ]
}

Get trade relations

Experimental

This API is experimental and may change or be removed without notice. Do not rely on it for production use yet.

Handelsbeziehungen describe the business relationship between a partner and a Produktanbieter: whether business may be initiated with the product provider (ermittelbar) and whether business may be accepted from it (annehmbar).

The visible effective trade relations are returned. The inheritance of these values along the hierarchy, which is known from the settings, is reflected in the returned effective values.

Requirements:

  • OAuth token has scope partner:beziehungen:lesen.

Get all trade relations of a partner

Example request:

GET /v2/partner/ABC12/handelsbeziehungen HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{
"total": 2,
"handelsbeziehungen": [
{
"produktanbieterId": "ONE_CLICK_BAUFI",
"produktanbieterName": "Sofortzusage-Bank",
"ermittelbar": true,
"annehmbar": false
},
{
"produktanbieterId": "PILOT",
"produktanbieterName": "Pilotproduktanbieter",
"ermittelbar": true,
"annehmbar": true
}
]
}

Get a single trade relation

Example request:

GET /v2/partner/ABC12/handelsbeziehungen/ONE_CLICK_BAUFI HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{
"produktanbieterId": "ONE_CLICK_BAUFI",
"produktanbieterName": "Sofortzusage-Bank",
"ermittelbar": true,
"annehmbar": false
}

Create partner

Creating a new partner is always done below an existing partner: https://api.europace.de/v2/partner/{PartnerId}/untergeordnete

Requirements:

  • OAuth token has scope partner:plakette:anlegen.
  • Caller is a partner of type Person
  • Caller has the may create organizational units permission.
  • Caller has Einstellungsrechte on the partner under which the new partner is to be created

Example request:

POST /v2/partner/ABC12/untergeordnete HTTP/1.1Host: api.europace.deAccept: application/jsonX-Trace-Id: ff-request-2020-08-28-07-55Authorization: Bearer eyJraWQiO...Content-Type: application/json
{
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

The following rules apply to server-side evaluation:

  • unknown attributes are ignored.
  • For organizations, person-specific attributes are ignored.
  • For persons, organization-specific attributes are ignored.
  • Empty attributes for strings ("") are ignored.
  • "partnerId" cannot be set and will be ignored.
  • Rights are set to false for persons if not specified.

The body of the response contains the current master data in JSON format. This can be used for success control. Attributes that are set on the server side or for which there are default values are always included.

The HTTP header "Location" contains the url of the newly created partner.

Example response:

{
"partnerId": "ABC12",
"typ": "PERSON",
"avatarUrl": "https://www.europace2.de/partnermanagement/d71c58aeaed4022384b169f83e0d8842.avatar?anonymousAvatar=BENUTZER",
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde":"Musterbehoerde",
"registrierungsnummer":"987654",
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

Note

For a successful offer acceptance in BaufiSmart it is necessary for the following processes that the following attributes are maintained in the partner management for the account manager of the transaction:

  • anrede
  • vorname
  • nachname
  • anschrift
  • bankverbindung
  • email

Update partner data

Attributes of a partner can be modified using HTTP PATCH. This overwrites only those attributes that are included in the PATCH request. All other attributes are not changed.

To make changes to a partner, the caller needs Einstellungsrechte.

Attributes that can be changed via PATCH

  • anrede
  • anschrift
  • aufsichtsbehoerde (deprecated, use aufsichtsbehoerde34i)
  • aufsichtsbehoerde34i
  • aufsichtsbehoerde34k
  • bankverbindung
  • email
  • externePartnerId
  • faxnummer
  • firmenname
  • firmennameZusatz
  • geburtsdatum
  • kreditsachbearbeiter
  • mobilnummer
  • name
  • vorname
  • nachname
  • registrierungsnummer (deprecated, use registrierungsnummer34i)
  • registrierungsnummer34i
  • registrierungsnummer34k
  • telefonnummer
  • titelFunktion
  • webseite

Note

aufsichtsbehoerde and registrierungsnummer hold the data of the Gewerbeerlaubnis according to § 34i GewO (Immobiliardarlehensvermittlung). They are superseded by the explicit fields aufsichtsbehoerde34i / registrierungsnummer34i, which read and write the same values and remain interchangeable with them. If both a deprecated field and its ...34i counterpart are sent in one request, the ...34i value is applied.

aufsichtsbehoerde34k and registrierungsnummer34k hold the data of the Gewerbeerlaubnis according to § 34k GewO (Allgemeine Verbraucherdarlehensvermittlung). All four fields can be maintained independently of each other.

Example

Requirements:

  • OAuth token has the scope partner:plakette:schreiben.
  • Caller has Einstellungsrechte on the partner

Example request:

PATCH /v2/partner/ABC12 HTTP/1.1Host: api.europace.deAuthorization: Bearer eyJraWQiOiJWRDZZ...Accept: application/jsonX-TraceId: ff-request-2020-08-28Content-Type: application/json
{
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

The following rules apply to server-side evaluation:

  • empty attributes for strings ("") delete the existing value.
  • unknown attributes are ignored.
  • partnerId cannot be changed and will be ignored.
  • type is not changeable and will be ignored.
  • if a field expects an ENUM, a value must be specified (Anrede)

The body of the response contains the current partner data in JSON format. This can be used for success control. Attributes that were already set or for which there are default values are always included.

Example response:

{
"partnerId":"ABC12",
"vorname":"Max",
"nachname":"Mustermann",
"typ":"PERSON",
"email":"max.musterman@exmaple.org",
"avatar":"https://ep2.mtp.rz-hypoport.local/partnermanagement/d71c58aeaed4022384b169f83e0d8842.avatar?anonymousAvatar=BENUTZER",
"gesperrt":false,
"kreditsachbearbeiter":true,
"parent":{
"partnerId":"ABC12"
},
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"anrede":"HERR",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"referenzFeld":"Test Ref",
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051"
},
"aufsichtsbehoerde":"Musterbehoerde",
"registrierungsnummer":"987654",
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

Create or update user-access

A newly created partner needs a Zugang to be able to log in to Europace with username. The Zugang can be created by the settings-frontend (partner management) or the partner-API.

Create user-access

Requirements for all use cases and examples:

  • OAuth token has scope partner:plakette:schreiben
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Use case 1: Create Europace user.

The user with the PartnerId:ABC12 is set up an Zugang with the username "max.musterman@example.org" and an activation email (sendEmail=true) is sent to the username. In the activation email, the user is prompted to set a password.

Note:
The reply address in the activation email is the email or username of the subject in the access-token that created the Zugang. If no email address or username is available, the reply goes to noreply@europace2.de.

Requirement for use case 1:

  • the username is Europace-wide unique
  • the username is an e-mail address

Example request:

POST /v2/partner/ABC12/zugang?sendEmail=true HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"benutzername" : "maxi.musterman@example.org"
}

Example response:

{
"partnerId": "ABC12",
"status": "ZUGANG_UNBESTAETIGT",
"benutzername": "maxi.musterman@example.org",
}

Use case 2: Create user for own identity provider.

This use case is most common with banking partners or direct sales organizations where all employees have a company email with their own domain and the employees work exclusively within this organization.

In this use case, the partner's identity provider is configured and the username is used as the user identifier at Europace and the partner's identity provider.

Don't send an activation email (sendEmail=false), because the user already exists in the partner's Identity Provider.

Requirement for use case 2:

  • the username is Europace-wide unique
  • the username is an e-mail address

Example request:

POST /v2/partner/ABC12/zugang?sendEmail=false HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"benutzername" : "maxi.musterman@deineOrganisation.de"
}

Example response:

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"benutzername": "maxi.musterman@deineOrganisation.de",
"identityProviderConfigURL": "https://idp.deineOrganisation.de/auth/realms/.well-known/openid-configuration"
}

Use case 3: Username is not unique Europace-wide or no email address

A user:in is to be created for the own Identity Provider, but the username is Europace-wide not unique or no e-mail address. In this case the field 'benutzername' is not used at all, but only the field 'identityProviderBenutzername'. The identification of the user on the login mask can only be done via a partnerId. The partnerId can be passed to the login mask with the username parameter in some use cases to improve the user experience.

Since it is an existing user in the identity provider of the partner and the identityProvider username is only used here, no activation email is sent, regardless of the sendEmail parameter.

Requirements for use case 3:

  • No further

Example request:

POST /v2/partner/ABC12/zugang HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"identityProviderBenutzername" : "maxi.mustermann01"
}

Example response: Status: HTTP-Code: 201 created

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"identityProviderBenutzername": "maxi.mustermann01",
"identityProviderConfigURL": "https://idp.deineOrganisation.de/auth/realms/.well-known/openid-configuration"
}

Update user-access for identity providers

The Benutzernamen of external identity providers can be changed with Partner API.

Restriction:

  • the field benutzername cannot be changed

Example request:

PATCH /v2/partner/ABC12/zugang HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"identityProviderBenutzername" : "maxi.muster"
}

Example response: Status: HTTP-Code: 200 okay

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"identityProviderBenutzername": "maxi.muster",
"identityProviderConfigURL": "https://idp.deineOrganisation.de/auth/realms/.well-known/openid-configuration"
}

Update partner-permissions

Set user-permissions

Requirements:

  • OAuth token has the scope partner:rechte:schreiben.
  • Caller has a Einstellungsrecht on the partner

Example request:

POST /v2/partner/ABC12/rechte HTTP/1.1Host: api.europace.deAuthorization: Bearer eyJraWQ...
{
"baufismart": {
"baufiSmartNutzen": true,
"echtgeschaeft": true
}
}

Example response:

{
"partnermanagement": {
"apiClientEinstellungenVornehmen": true,
"einstellungenOeffnen": true,
"baufiSmartEinstellungenVornehmen": true,
"partnerAnlegen": true
},
"baufismart": {
"baufiSmartNutzen": true,
"echtgeschaeft": true,
"vorgaengeUeberOberflaecheAnlegen": true,
"ergebnisListeNutzen": true,
"loeschen": false
},
"kreditsmart": {
"echtgeschaeft": true,
"kreditSmartSichtbar": true,
"versicherungAnbieten": true,
"vorgaengeUeberOberflaecheAnlegen": true
}
}

Add access right

In the example, partner ABC12 is getting the Zugriffsrecht from XYZ56. ABC12 can then access the Vorgänge of XYZ56.

Requirements:

  • OAuth token has scope partner:beziehung:schreiben.
  • Caller has Einstellungsrecht on the partner to which the Zugriffsrecht is added
  • Caller has Einstellungsrecht on the partner to which the access is granted

Example request:

POST /v2/partner/ABC12/uebernahmeRechtFuer/XYZ56 HTTP/1.1Host: api.europace.deX-Trace-Id: My-COLLECTION-8301Authorization: Bearer eyJraWQiOiJFT05...

Example response: Status: HTTP-Code: 201 created

Update trade relation

Experimental

This API is experimental and may change or be removed without notice. Do not rely on it for production use yet.

An existing trade relation for a partner and Produktanbieter can be modified using HTTP PATCH. Only the transmitted fields are updated. All other fields are not changed.

Values for ermittelbar and annehmbar can be true, false, or null. Sending both attributes as null restores the inheritance of the trade relation along the hierarchy (see below).

Requirements:

  • OAuth token has the scope partner:beziehungen:schreiben.

Example request:

PATCH /v2/partner/ABC12/handelsbeziehungen/ONE_CLICK_BAUFI HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"ermittelbar": true,
"annehmbar": false
}

Example response: Status: 200 OK

{
"produktanbieterId": "ONE_CLICK_BAUFI",
"produktanbieterName": "Sofortzusage-Bank",
"ermittelbar": true,
"annehmbar": false
}

To restore the inheritance of the trade relation, send both attributes as null:

{
"ermittelbar": null,
"annehmbar": null
}

Restoring inheritance is only supported when the trade relation currently has values maintained directly on the partner. If the trade relation is already inheriting its values, there is nothing to restore and the request is rejected: Status: 422 Unprocessable Entity

Inheritance can only be restored fully. A request that sets exactly one of ermittelbar and annehmbar to null while the other contains a value, e.g.:

{
"ermittelbar": null,
"annehmbar": true
}

is rejected: Status: 400 Bad Request

Support

If you have any questions or problems, you can contact devsupport@europace2.de.

About

Dokumentation für Partner API

Topics

Resources

Code of conduct

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

146 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Partner API

The Partner API enables automation of Europace's user management. The partner management (settings) is used by Europace partners to map their own user and rights structure.

Partners can be users as well as organizations like companies, departments or teams. Each partner is created in the hierarchy tree as Plakette of type Person or Organisation.


advisorloanProvidermortgageLoanconsumerLoan

AuthenticationGitHub release

Pattern

Dokumentation

YAMLYAML

For translation of our german domain-specific-language the glossary will support you.

Quick Start

To help you test our APIs and your use case as quickly as possible, we've put together a Postman Collection for you.

Authentication

Please use Authentication to get access to the API. The OAuth2 client requires the following scopes:

ScopeAPI-Usecase
partner:plakette:anlegenAllows to create new Plaketten
partner:plakette:lesenAllows to read partner data
partner:plakette:schreibenAllows to write partner data
partner:beziehungen:lesenAllows to read relations between partners. Allows to retrieve UebernahmeRecht, Administrierbare, Uebernehmbare and Handelsbeziehungen
partner:beziehungen:schreibenAllows to write relations between partners. Allows to add UebernahmeRecht and update Handelsbeziehungen
partner:rechte:lesenAllows to read partner rights
partner:rechte:schreibenAllows to write partner rights

Use cases of the API

get information

manage partner

Get contact details of a partner

Contact details can be retrieved for all trading partners to support collaboration.

Requirements:

  • the caller has a trading relationship with the partner and/or
  • the caller has an Zugriffsrecht to the partner and/or
  • the caller has a Einstellungsrecht to the partner and/or
  • the caller is above the partner in the hierarchy

Example request:

curl --location --request GET 'https://api.europace.de/v2/partner/ABC12/kontaktdaten' \
--header 'Content-Type: application/json' \
--header 'X-TraceId: {{meineTraceId}}' \
--header 'Authorization: Bearer {{access_token}}'

Example response Person:

{
"person": {
"anrede": "FRAU",
"vorname": "Maxi",
"nachname": "Musterfrau",
"titelFunktion": "Baufi-Beraterin",
"geburtsdatum": "1995-05-05"
},
"firmenName": "Immofin AG",
"telefon": "030-12345-0",
"mobiltelefon": "0151-12345678",
"email": "maxi.musterfrau@immofin.de",
"anschrift": {
"strasse": "Teststr.",
"hausnummer": "69",
"plz": "10557",
"ort": "Berlin"
},
"Paragraph34c": {
"registrierungsNummer": "D-W-7943497238942",
"aufsichtsBehörde": "IHK Berlin, Fasanenstr. 85, 10623 Berlin"
}
}

Example response Organisation:

{
"organisation": {
"organisationsName": "Immofin"
},
"firmenName": "Immofin AG",
"telefon": "030-12345-0",
"fax": "030-12345-678",
"email": "maxi.musterfrau@immofin.de",
"website": "http://www.immofin.de",
"anschrift": {
"strasse": "Teststr.",
"hausnummer": "69",
"plz": "10557",
"ort": "Berlin"
},
"Paragraph34c": {
"registrierungsNummer": "D-W-7943497238942",
"aufsichtsBehörde": "IHK Berlin, Fasanenstr. 85, 10623 Berlin"
}
}

Get partner data

Requirements:

  • OAuth token has scope partner:plakette:lesen.
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

curl --location --request GET 'https://api.europace.de/v2/partner/ABC12' \
--header 'Content-Type: application/json' \
--header 'X-TraceId: {{meineTraceId}}' \
--header 'Authorization: Bearer {{access_token}}'

The inheritance of values of certain attributes along the hierarchy, which is known from the settings, is reflected in the API. Inherited values are therefore delivered.

Example response:

{
"partnerId": "ABC12",
"typ": "PERSON",
"avatarUrl": "https://www.europace2.de/partnermanagement/d71c58aeaed4022384b169f83e0d8842.avatar?anonymousAvatar=BENUTZER",
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde":"Musterbehoerde",
"registrierungsnummer":"987654",
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456",
"taetigFuerProduktanbieter": [
{
"produktAnbieterId": "ONE_CLICK_BAUFI",
"produktAnbieter": "Sofortzusage-Bank"
},
{
"produktAnbieterId": "PILOT",
"produktAnbieter": "Pilotproduktanbieter"
}
]
}

Get partners by externe partner id

Requirements:

  • OAuth token has scope partner:plakette:lesen.
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

GET /v2/partners?externePartnerId=11111Accept: application/jsonAuthorization: Bearer eyJraWQiOiJRM

Example response:

{
"partners": [
{
"partnerId": "EDY92",
"href": "http://localhost:8080/v2/partner/EDY92"
},
{
"partnerId": "YRA59",
"href": "http://localhost:8080/v2/partner/YRA59"
},
{
"partnerId": "CUI17",
"href": "http://localhost:8080/v2/partner/CUI17"
}
],
"total": 3
}

Get license information for a partner

Requirements:

  • OAuth token has scope partner:rechte:lesen

Example request:

GET /v2/partner/ABC12/lizenzenHost: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: request-2020-08-28-07-59

Example response:

{
"EUROPACE_ONE": {
"aktiv": true,
"aktiviertSeit": "2025-02-01"
}
}

Get partner-code

Partnerkennzeichen identify a Vertriebsorganisation on the Produktanbieter-side.

Requirements:

  • OAuth token has scope partner:plakette:lesen
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

GET /v2/partner/ABC12/partnerkennzeichen HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: request-2020-08-28-07-59Accept: application/json

Inherited values are therefore not delivered. The inheritance of values of certain attributes along the hierarchy, which is known from the settings, is not reflected in the API.

Example response: Status: 200 OK

{
"dslSapGeschaeftspartnerNummerFuerRatenkredit": "cdts-dsl-sap-vo",
"dslVertriebsWegSchluesselFuerRatenkredit": "1899026629",
"dkbVertriebsIdFuerRatenkredit": "cdts-dkb-vertrieb",
"kennzeichenIngDiba": {
"vermittlerNummer": "9800002186",
"vermittlerVorname": "wer",
"vermittlerNachname": "wer",
"vermittlerNummerFuerRatenkredit": "cdts-ing-diba-vermittler"
},
"kennzeichenErgo": {},
"kennzeichenBhw": {
"vgeNummer": "6248/205585.0",
"orgaNummer": "ORGA123",
"zurIdentifikationsPruefungLegitimiert": "false"
},
"lbsOstVermittlerNummer": "lbsost-werwer-vermittler",
"lbsShhVermittlerNummer": "lbs-ssh-ldapvermittler",
"lbsSuedwestVermittlerNummer": "lbs-südwest-ldapvermittler",
"lbsWestVermittlerNummer": "lbs-west-ldapvermittler",
"allianzVertreterNummer": "01/012/0123",
"axaGeschaeftsPartnerNummer": "MA 00352",
"dslVermittlerGruppenSchluessel": "1200",
"bshVoNummer": "abcdefghijklmnopqrstuvwxyz",
"bshAkquisitionsWeg": "AW1",
"bshBlzVertriebsbank": "1234567890",
"dzHypVermittlerNummer": "1234",
"alteLeipzigerVerbundVermittlerNummer": "42",
"rundvBankAgenturNummer": "RV_BAN",
"rundvBlzVertriebsbank": "RV_BLZ",
"vertriebsOrganisation": {
"name": "Musterbank",
"firma": "Musterbank AG",
"vertriebsOrganisationsId": "MUSTERBANK_AG",
"partnerId": "TYL29"
}
}

Get user-access

To determine the current Zugang, this can be read out.

Requirements:

  • OAuth token has scope partner:plakette:lesen
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

GET /v2/partner/ABC12/zugang HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json

Example response, for a partner authenticating to the Europace identity provider (Europace password): Status: 200 OK

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"benutzername": "maxi.musterman@example.org",
}

Example response, for a partner authenticating with its own identity provider (e.g. Actice Directory): Status: 200 OK

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"identityProviderBenutzername": "maxi.muster",
"identityProviderConfigURL": "https://auth.deineOrganisation.de/adfs/.well-known/openid-configuration"
}

Get partner-permissions

Requirements for all use cases and examples:

  • OAuth token has scope partner:rechte:lesen
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Get user-permissions

Example request:

GET /v2/partner/ABC12/rechte HTTP/1.1Host: api.europace.deAuthorization: Bearer eyJraWQ

Example response:

{
"partnermanagement": {
"apiClientEinstellungenVornehmen": true,
"einstellungenOeffnen": true,
"baufiSmartEinstellungenVornehmen": true,
"partnerAnlegen": true
},
"baufismart": {
"baufiSmartNutzen": true,
"echtgeschaeft": true,
"vorgaengeUeberOberflaecheAnlegen": true,
"ergebnisListeNutzen": true,
"loeschen": false
},
"kreditsmart": {
"echtgeschaeft": true,
"kreditSmartSichtbar": true,
"versicherungAnbieten": true,
"vorgaengeUeberOberflaecheAnlegen": true
}
}

Get access right

The Zugriffrecht entitles partners to read and write access to all Vorgänge of another partner.

Which partners do I have access to?

Example request:

GET /v2/partner/ABC12/uebernehmbare HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJContent-Type: application/jsonX-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{ "content": [ { "partnerId":"XYZ15" } ]
}

Do I have access to Partner XYZ15?

Example request:

GET /v2/partner/ABC12/uebernahmeRechtFuer/XYZ15 HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOi...Content-Type: application/jsonX-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{
"partner": {
"partnerId": "XYZ15",
"gesperrt": false
},
"uebernehmbar": true
}

Get setting right

Returns all partners for which this partner is allowed to change the data and authorizations or retrieve the reporting.

At least the partner itself is returned, since everyone may at least set itself or retrieve its own reporting.

In order to achieve a better performance, the implicitly administrable partners have been omitted in the partner-api. To determine these, it is necessary to iterate over the subordinates of the result list.

Requirements:

  • OAuth token has scope partner:plakette:lesen.
  • Each partner may make changes to himself or other partners if he has the Einstellungsrecht. This means that partner data or authorizations can be adjusted. Authorizations can only be assigned if the executing partner has them himself.

Which partners can I manage?

Example request:

GET /v2/partner/ABC12/administrierbare HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json

Example response:

{ "content": [ { "partnerId":"XYZ15" } ]
}

Get trade relations

Experimental

This API is experimental and may change or be removed without notice. Do not rely on it for production use yet.

Handelsbeziehungen describe the business relationship between a partner and a Produktanbieter: whether business may be initiated with the product provider (ermittelbar) and whether business may be accepted from it (annehmbar).

The visible effective trade relations are returned. The inheritance of these values along the hierarchy, which is known from the settings, is reflected in the returned effective values.

Requirements:

  • OAuth token has scope partner:beziehungen:lesen.

Get all trade relations of a partner

Example request:

GET /v2/partner/ABC12/handelsbeziehungen HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{
"total": 2,
"handelsbeziehungen": [
{
"produktanbieterId": "ONE_CLICK_BAUFI",
"produktanbieterName": "Sofortzusage-Bank",
"ermittelbar": true,
"annehmbar": false
},
{
"produktanbieterId": "PILOT",
"produktanbieterName": "Pilotproduktanbieter",
"ermittelbar": true,
"annehmbar": true
}
]
}

Get a single trade relation

Example request:

GET /v2/partner/ABC12/handelsbeziehungen/ONE_CLICK_BAUFI HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{
"produktanbieterId": "ONE_CLICK_BAUFI",
"produktanbieterName": "Sofortzusage-Bank",
"ermittelbar": true,
"annehmbar": false
}

Create partner

Creating a new partner is always done below an existing partner: https://api.europace.de/v2/partner/{PartnerId}/untergeordnete

Requirements:

  • OAuth token has scope partner:plakette:anlegen.
  • Caller is a partner of type Person
  • Caller has the may create organizational units permission.
  • Caller has Einstellungsrechte on the partner under which the new partner is to be created

Example request:

POST /v2/partner/ABC12/untergeordnete HTTP/1.1Host: api.europace.deAccept: application/jsonX-Trace-Id: ff-request-2020-08-28-07-55Authorization: Bearer eyJraWQiO...Content-Type: application/json
{
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

The following rules apply to server-side evaluation:

  • unknown attributes are ignored.
  • For organizations, person-specific attributes are ignored.
  • For persons, organization-specific attributes are ignored.
  • Empty attributes for strings ("") are ignored.
  • "partnerId" cannot be set and will be ignored.
  • Rights are set to false for persons if not specified.

The body of the response contains the current master data in JSON format. This can be used for success control. Attributes that are set on the server side or for which there are default values are always included.

The HTTP header "Location" contains the url of the newly created partner.

Example response:

{
"partnerId": "ABC12",
"typ": "PERSON",
"avatarUrl": "https://www.europace2.de/partnermanagement/d71c58aeaed4022384b169f83e0d8842.avatar?anonymousAvatar=BENUTZER",
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde":"Musterbehoerde",
"registrierungsnummer":"987654",
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

Note

For a successful offer acceptance in BaufiSmart it is necessary for the following processes that the following attributes are maintained in the partner management for the account manager of the transaction:

  • anrede
  • vorname
  • nachname
  • anschrift
  • bankverbindung
  • email

Update partner data

Attributes of a partner can be modified using HTTP PATCH. This overwrites only those attributes that are included in the PATCH request. All other attributes are not changed.

To make changes to a partner, the caller needs Einstellungsrechte.

Attributes that can be changed via PATCH

  • anrede
  • anschrift
  • aufsichtsbehoerde (deprecated, use aufsichtsbehoerde34i)
  • aufsichtsbehoerde34i
  • aufsichtsbehoerde34k
  • bankverbindung
  • email
  • externePartnerId
  • faxnummer
  • firmenname
  • firmennameZusatz
  • geburtsdatum
  • kreditsachbearbeiter
  • mobilnummer
  • name
  • vorname
  • nachname
  • registrierungsnummer (deprecated, use registrierungsnummer34i)
  • registrierungsnummer34i
  • registrierungsnummer34k
  • telefonnummer
  • titelFunktion
  • webseite

Note

aufsichtsbehoerde and registrierungsnummer hold the data of the Gewerbeerlaubnis according to § 34i GewO (Immobiliardarlehensvermittlung). They are superseded by the explicit fields aufsichtsbehoerde34i / registrierungsnummer34i, which read and write the same values and remain interchangeable with them. If both a deprecated field and its ...34i counterpart are sent in one request, the ...34i value is applied.

aufsichtsbehoerde34k and registrierungsnummer34k hold the data of the Gewerbeerlaubnis according to § 34k GewO (Allgemeine Verbraucherdarlehensvermittlung). All four fields can be maintained independently of each other.

Example

Requirements:

  • OAuth token has the scope partner:plakette:schreiben.
  • Caller has Einstellungsrechte on the partner

Example request:

PATCH /v2/partner/ABC12 HTTP/1.1Host: api.europace.deAuthorization: Bearer eyJraWQiOiJWRDZZ...Accept: application/jsonX-TraceId: ff-request-2020-08-28Content-Type: application/json
{
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

The following rules apply to server-side evaluation:

  • empty attributes for strings ("") delete the existing value.
  • unknown attributes are ignored.
  • partnerId cannot be changed and will be ignored.
  • type is not changeable and will be ignored.
  • if a field expects an ENUM, a value must be specified (Anrede)

The body of the response contains the current partner data in JSON format. This can be used for success control. Attributes that were already set or for which there are default values are always included.

Example response:

{
"partnerId":"ABC12",
"vorname":"Max",
"nachname":"Mustermann",
"typ":"PERSON",
"email":"max.musterman@exmaple.org",
"avatar":"https://ep2.mtp.rz-hypoport.local/partnermanagement/d71c58aeaed4022384b169f83e0d8842.avatar?anonymousAvatar=BENUTZER",
"gesperrt":false,
"kreditsachbearbeiter":true,
"parent":{
"partnerId":"ABC12"
},
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"anrede":"HERR",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"referenzFeld":"Test Ref",
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051"
},
"aufsichtsbehoerde":"Musterbehoerde",
"registrierungsnummer":"987654",
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

Create or update user-access

A newly created partner needs a Zugang to be able to log in to Europace with username. The Zugang can be created by the settings-frontend (partner management) or the partner-API.

Create user-access

Requirements for all use cases and examples:

  • OAuth token has scope partner:plakette:schreiben
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Use case 1: Create Europace user.

The user with the PartnerId:ABC12 is set up an Zugang with the username "max.musterman@example.org" and an activation email (sendEmail=true) is sent to the username. In the activation email, the user is prompted to set a password.

Note:
The reply address in the activation email is the email or username of the subject in the access-token that created the Zugang. If no email address or username is available, the reply goes to noreply@europace2.de.

Requirement for use case 1:

  • the username is Europace-wide unique
  • the username is an e-mail address

Example request:

POST /v2/partner/ABC12/zugang?sendEmail=true HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"benutzername" : "maxi.musterman@example.org"
}

Example response:

{
"partnerId": "ABC12",
"status": "ZUGANG_UNBESTAETIGT",
"benutzername": "maxi.musterman@example.org",
}

Use case 2: Create user for own identity provider.

This use case is most common with banking partners or direct sales organizations where all employees have a company email with their own domain and the employees work exclusively within this organization.

In this use case, the partner's identity provider is configured and the username is used as the user identifier at Europace and the partner's identity provider.

Don't send an activation email (sendEmail=false), because the user already exists in the partner's Identity Provider.

Requirement for use case 2:

  • the username is Europace-wide unique
  • the username is an e-mail address

Example request:

POST /v2/partner/ABC12/zugang?sendEmail=false HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"benutzername" : "maxi.musterman@deineOrganisation.de"
}

Example response:

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"benutzername": "maxi.musterman@deineOrganisation.de",
"identityProviderConfigURL": "https://idp.deineOrganisation.de/auth/realms/.well-known/openid-configuration"
}

Use case 3: Username is not unique Europace-wide or no email address

A user:in is to be created for the own Identity Provider, but the username is Europace-wide not unique or no e-mail address. In this case the field 'benutzername' is not used at all, but only the field 'identityProviderBenutzername'. The identification of the user on the login mask can only be done via a partnerId. The partnerId can be passed to the login mask with the username parameter in some use cases to improve the user experience.

Since it is an existing user in the identity provider of the partner and the identityProvider username is only used here, no activation email is sent, regardless of the sendEmail parameter.

Requirements for use case 3:

  • No further

Example request:

POST /v2/partner/ABC12/zugang HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"identityProviderBenutzername" : "maxi.mustermann01"
}

Example response: Status: HTTP-Code: 201 created

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"identityProviderBenutzername": "maxi.mustermann01",
"identityProviderConfigURL": "https://idp.deineOrganisation.de/auth/realms/.well-known/openid-configuration"
}

Update user-access for identity providers

The Benutzernamen of external identity providers can be changed with Partner API.

Restriction:

  • the field benutzername cannot be changed

Example request:

PATCH /v2/partner/ABC12/zugang HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"identityProviderBenutzername" : "maxi.muster"
}

Example response: Status: HTTP-Code: 200 okay

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"identityProviderBenutzername": "maxi.muster",
"identityProviderConfigURL": "https://idp.deineOrganisation.de/auth/realms/.well-known/openid-configuration"
}

Update partner-permissions

Set user-permissions

Requirements:

  • OAuth token has the scope partner:rechte:schreiben.
  • Caller has a Einstellungsrecht on the partner

Example request:

POST /v2/partner/ABC12/rechte HTTP/1.1Host: api.europace.deAuthorization: Bearer eyJraWQ...
{
"baufismart": {
"baufiSmartNutzen": true,
"echtgeschaeft": true
}
}

Example response:

{
"partnermanagement": {
"apiClientEinstellungenVornehmen": true,
"einstellungenOeffnen": true,
"baufiSmartEinstellungenVornehmen": true,
"partnerAnlegen": true
},
"baufismart": {
"baufiSmartNutzen": true,
"echtgeschaeft": true,
"vorgaengeUeberOberflaecheAnlegen": true,
"ergebnisListeNutzen": true,
"loeschen": false
},
"kreditsmart": {
"echtgeschaeft": true,
"kreditSmartSichtbar": true,
"versicherungAnbieten": true,
"vorgaengeUeberOberflaecheAnlegen": true
}
}

Add access right

In the example, partner ABC12 is getting the Zugriffsrecht from XYZ56. ABC12 can then access the Vorgänge of XYZ56.

Requirements:

  • OAuth token has scope partner:beziehung:schreiben.
  • Caller has Einstellungsrecht on the partner to which the Zugriffsrecht is added
  • Caller has Einstellungsrecht on the partner to which the access is granted

Example request:

POST /v2/partner/ABC12/uebernahmeRechtFuer/XYZ56 HTTP/1.1Host: api.europace.deX-Trace-Id: My-COLLECTION-8301Authorization: Bearer eyJraWQiOiJFT05...

Example response: Status: HTTP-Code: 201 created

Update trade relation

Experimental

This API is experimental and may change or be removed without notice. Do not rely on it for production use yet.

An existing trade relation for a partner and Produktanbieter can be modified using HTTP PATCH. Only the transmitted fields are updated. All other fields are not changed.

Values for ermittelbar and annehmbar can be true, false, or null. Sending both attributes as null restores the inheritance of the trade relation along the hierarchy (see below).

Requirements:

  • OAuth token has the scope partner:beziehungen:schreiben.

Example request:

PATCH /v2/partner/ABC12/handelsbeziehungen/ONE_CLICK_BAUFI HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"ermittelbar": true,
"annehmbar": false
}

Example response: Status: 200 OK

{
"produktanbieterId": "ONE_CLICK_BAUFI",
"produktanbieterName": "Sofortzusage-Bank",
"ermittelbar": true,
"annehmbar": false
}

To restore the inheritance of the trade relation, send both attributes as null:

{
"ermittelbar": null,
"annehmbar": null
}

Restoring inheritance is only supported when the trade relation currently has values maintained directly on the partner. If the trade relation is already inheriting its values, there is nothing to restore and the request is rejected: Status: 422 Unprocessable Entity

Inheritance can only be restored fully. A request that sets exactly one of ermittelbar and annehmbar to null while the other contains a value, e.g.:

{
"ermittelbar": null,
"annehmbar": true
}

is rejected: Status: 400 Bad Request

Support

If you have any questions or problems, you can contact devsupport@europace2.de.

About

Dokumentation für Partner API

Topics

Resources

Code of conduct

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

146 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Partner API

The Partner API enables automation of Europace's user management. The partner management (settings) is used by Europace partners to map their own user and rights structure.

Partners can be users as well as organizations like companies, departments or teams. Each partner is created in the hierarchy tree as Plakette of type Person or Organisation.


advisorloanProvidermortgageLoanconsumerLoan

AuthenticationGitHub release

Pattern

Dokumentation

YAMLYAML

For translation of our german domain-specific-language the glossary will support you.

Quick Start

To help you test our APIs and your use case as quickly as possible, we've put together a Postman Collection for you.

Authentication

Please use Authentication to get access to the API. The OAuth2 client requires the following scopes:

ScopeAPI-Usecase
partner:plakette:anlegenAllows to create new Plaketten
partner:plakette:lesenAllows to read partner data
partner:plakette:schreibenAllows to write partner data
partner:beziehungen:lesenAllows to read relations between partners. Allows to retrieve UebernahmeRecht, Administrierbare, Uebernehmbare and Handelsbeziehungen
partner:beziehungen:schreibenAllows to write relations between partners. Allows to add UebernahmeRecht and update Handelsbeziehungen
partner:rechte:lesenAllows to read partner rights
partner:rechte:schreibenAllows to write partner rights

Use cases of the API

get information

manage partner

Get contact details of a partner

Contact details can be retrieved for all trading partners to support collaboration.

Requirements:

  • the caller has a trading relationship with the partner and/or
  • the caller has an Zugriffsrecht to the partner and/or
  • the caller has a Einstellungsrecht to the partner and/or
  • the caller is above the partner in the hierarchy

Example request:

curl --location --request GET 'https://api.europace.de/v2/partner/ABC12/kontaktdaten' \
--header 'Content-Type: application/json' \
--header 'X-TraceId: {{meineTraceId}}' \
--header 'Authorization: Bearer {{access_token}}'

Example response Person:

{
"person": {
"anrede": "FRAU",
"vorname": "Maxi",
"nachname": "Musterfrau",
"titelFunktion": "Baufi-Beraterin",
"geburtsdatum": "1995-05-05"
},
"firmenName": "Immofin AG",
"telefon": "030-12345-0",
"mobiltelefon": "0151-12345678",
"email": "maxi.musterfrau@immofin.de",
"anschrift": {
"strasse": "Teststr.",
"hausnummer": "69",
"plz": "10557",
"ort": "Berlin"
},
"Paragraph34c": {
"registrierungsNummer": "D-W-7943497238942",
"aufsichtsBehörde": "IHK Berlin, Fasanenstr. 85, 10623 Berlin"
}
}

Example response Organisation:

{
"organisation": {
"organisationsName": "Immofin"
},
"firmenName": "Immofin AG",
"telefon": "030-12345-0",
"fax": "030-12345-678",
"email": "maxi.musterfrau@immofin.de",
"website": "http://www.immofin.de",
"anschrift": {
"strasse": "Teststr.",
"hausnummer": "69",
"plz": "10557",
"ort": "Berlin"
},
"Paragraph34c": {
"registrierungsNummer": "D-W-7943497238942",
"aufsichtsBehörde": "IHK Berlin, Fasanenstr. 85, 10623 Berlin"
}
}

Get partner data

Requirements:

  • OAuth token has scope partner:plakette:lesen.
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

curl --location --request GET 'https://api.europace.de/v2/partner/ABC12' \
--header 'Content-Type: application/json' \
--header 'X-TraceId: {{meineTraceId}}' \
--header 'Authorization: Bearer {{access_token}}'

The inheritance of values of certain attributes along the hierarchy, which is known from the settings, is reflected in the API. Inherited values are therefore delivered.

Example response:

{
"partnerId": "ABC12",
"typ": "PERSON",
"avatarUrl": "https://www.europace2.de/partnermanagement/d71c58aeaed4022384b169f83e0d8842.avatar?anonymousAvatar=BENUTZER",
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde":"Musterbehoerde",
"registrierungsnummer":"987654",
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456",
"taetigFuerProduktanbieter": [
{
"produktAnbieterId": "ONE_CLICK_BAUFI",
"produktAnbieter": "Sofortzusage-Bank"
},
{
"produktAnbieterId": "PILOT",
"produktAnbieter": "Pilotproduktanbieter"
}
]
}

Get partners by externe partner id

Requirements:

  • OAuth token has scope partner:plakette:lesen.
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

GET /v2/partners?externePartnerId=11111Accept: application/jsonAuthorization: Bearer eyJraWQiOiJRM

Example response:

{
"partners": [
{
"partnerId": "EDY92",
"href": "http://localhost:8080/v2/partner/EDY92"
},
{
"partnerId": "YRA59",
"href": "http://localhost:8080/v2/partner/YRA59"
},
{
"partnerId": "CUI17",
"href": "http://localhost:8080/v2/partner/CUI17"
}
],
"total": 3
}

Get license information for a partner

Requirements:

  • OAuth token has scope partner:rechte:lesen

Example request:

GET /v2/partner/ABC12/lizenzenHost: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: request-2020-08-28-07-59

Example response:

{
"EUROPACE_ONE": {
"aktiv": true,
"aktiviertSeit": "2025-02-01"
}
}

Get partner-code

Partnerkennzeichen identify a Vertriebsorganisation on the Produktanbieter-side.

Requirements:

  • OAuth token has scope partner:plakette:lesen
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

GET /v2/partner/ABC12/partnerkennzeichen HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: request-2020-08-28-07-59Accept: application/json

Inherited values are therefore not delivered. The inheritance of values of certain attributes along the hierarchy, which is known from the settings, is not reflected in the API.

Example response: Status: 200 OK

{
"dslSapGeschaeftspartnerNummerFuerRatenkredit": "cdts-dsl-sap-vo",
"dslVertriebsWegSchluesselFuerRatenkredit": "1899026629",
"dkbVertriebsIdFuerRatenkredit": "cdts-dkb-vertrieb",
"kennzeichenIngDiba": {
"vermittlerNummer": "9800002186",
"vermittlerVorname": "wer",
"vermittlerNachname": "wer",
"vermittlerNummerFuerRatenkredit": "cdts-ing-diba-vermittler"
},
"kennzeichenErgo": {},
"kennzeichenBhw": {
"vgeNummer": "6248/205585.0",
"orgaNummer": "ORGA123",
"zurIdentifikationsPruefungLegitimiert": "false"
},
"lbsOstVermittlerNummer": "lbsost-werwer-vermittler",
"lbsShhVermittlerNummer": "lbs-ssh-ldapvermittler",
"lbsSuedwestVermittlerNummer": "lbs-südwest-ldapvermittler",
"lbsWestVermittlerNummer": "lbs-west-ldapvermittler",
"allianzVertreterNummer": "01/012/0123",
"axaGeschaeftsPartnerNummer": "MA 00352",
"dslVermittlerGruppenSchluessel": "1200",
"bshVoNummer": "abcdefghijklmnopqrstuvwxyz",
"bshAkquisitionsWeg": "AW1",
"bshBlzVertriebsbank": "1234567890",
"dzHypVermittlerNummer": "1234",
"alteLeipzigerVerbundVermittlerNummer": "42",
"rundvBankAgenturNummer": "RV_BAN",
"rundvBlzVertriebsbank": "RV_BLZ",
"vertriebsOrganisation": {
"name": "Musterbank",
"firma": "Musterbank AG",
"vertriebsOrganisationsId": "MUSTERBANK_AG",
"partnerId": "TYL29"
}
}

Get user-access

To determine the current Zugang, this can be read out.

Requirements:

  • OAuth token has scope partner:plakette:lesen
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

GET /v2/partner/ABC12/zugang HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json

Example response, for a partner authenticating to the Europace identity provider (Europace password): Status: 200 OK

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"benutzername": "maxi.musterman@example.org",
}

Example response, for a partner authenticating with its own identity provider (e.g. Actice Directory): Status: 200 OK

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"identityProviderBenutzername": "maxi.muster",
"identityProviderConfigURL": "https://auth.deineOrganisation.de/adfs/.well-known/openid-configuration"
}

Get partner-permissions

Requirements for all use cases and examples:

  • OAuth token has scope partner:rechte:lesen
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Get user-permissions

Example request:

GET /v2/partner/ABC12/rechte HTTP/1.1Host: api.europace.deAuthorization: Bearer eyJraWQ

Example response:

{
"partnermanagement": {
"apiClientEinstellungenVornehmen": true,
"einstellungenOeffnen": true,
"baufiSmartEinstellungenVornehmen": true,
"partnerAnlegen": true
},
"baufismart": {
"baufiSmartNutzen": true,
"echtgeschaeft": true,
"vorgaengeUeberOberflaecheAnlegen": true,
"ergebnisListeNutzen": true,
"loeschen": false
},
"kreditsmart": {
"echtgeschaeft": true,
"kreditSmartSichtbar": true,
"versicherungAnbieten": true,
"vorgaengeUeberOberflaecheAnlegen": true
}
}

Get access right

The Zugriffrecht entitles partners to read and write access to all Vorgänge of another partner.

Which partners do I have access to?

Example request:

GET /v2/partner/ABC12/uebernehmbare HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJContent-Type: application/jsonX-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{ "content": [ { "partnerId":"XYZ15" } ]
}

Do I have access to Partner XYZ15?

Example request:

GET /v2/partner/ABC12/uebernahmeRechtFuer/XYZ15 HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOi...Content-Type: application/jsonX-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{
"partner": {
"partnerId": "XYZ15",
"gesperrt": false
},
"uebernehmbar": true
}

Get setting right

Returns all partners for which this partner is allowed to change the data and authorizations or retrieve the reporting.

At least the partner itself is returned, since everyone may at least set itself or retrieve its own reporting.

In order to achieve a better performance, the implicitly administrable partners have been omitted in the partner-api. To determine these, it is necessary to iterate over the subordinates of the result list.

Requirements:

  • OAuth token has scope partner:plakette:lesen.
  • Each partner may make changes to himself or other partners if he has the Einstellungsrecht. This means that partner data or authorizations can be adjusted. Authorizations can only be assigned if the executing partner has them himself.

Which partners can I manage?

Example request:

GET /v2/partner/ABC12/administrierbare HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json

Example response:

{ "content": [ { "partnerId":"XYZ15" } ]
}

Get trade relations

Experimental

This API is experimental and may change or be removed without notice. Do not rely on it for production use yet.

Handelsbeziehungen describe the business relationship between a partner and a Produktanbieter: whether business may be initiated with the product provider (ermittelbar) and whether business may be accepted from it (annehmbar).

The visible effective trade relations are returned. The inheritance of these values along the hierarchy, which is known from the settings, is reflected in the returned effective values.

Requirements:

  • OAuth token has scope partner:beziehungen:lesen.

Get all trade relations of a partner

Example request:

GET /v2/partner/ABC12/handelsbeziehungen HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{
"total": 2,
"handelsbeziehungen": [
{
"produktanbieterId": "ONE_CLICK_BAUFI",
"produktanbieterName": "Sofortzusage-Bank",
"ermittelbar": true,
"annehmbar": false
},
{
"produktanbieterId": "PILOT",
"produktanbieterName": "Pilotproduktanbieter",
"ermittelbar": true,
"annehmbar": true
}
]
}

Get a single trade relation

Example request:

GET /v2/partner/ABC12/handelsbeziehungen/ONE_CLICK_BAUFI HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{
"produktanbieterId": "ONE_CLICK_BAUFI",
"produktanbieterName": "Sofortzusage-Bank",
"ermittelbar": true,
"annehmbar": false
}

Create partner

Creating a new partner is always done below an existing partner: https://api.europace.de/v2/partner/{PartnerId}/untergeordnete

Requirements:

  • OAuth token has scope partner:plakette:anlegen.
  • Caller is a partner of type Person
  • Caller has the may create organizational units permission.
  • Caller has Einstellungsrechte on the partner under which the new partner is to be created

Example request:

POST /v2/partner/ABC12/untergeordnete HTTP/1.1Host: api.europace.deAccept: application/jsonX-Trace-Id: ff-request-2020-08-28-07-55Authorization: Bearer eyJraWQiO...Content-Type: application/json
{
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

The following rules apply to server-side evaluation:

  • unknown attributes are ignored.
  • For organizations, person-specific attributes are ignored.
  • For persons, organization-specific attributes are ignored.
  • Empty attributes for strings ("") are ignored.
  • "partnerId" cannot be set and will be ignored.
  • Rights are set to false for persons if not specified.

The body of the response contains the current master data in JSON format. This can be used for success control. Attributes that are set on the server side or for which there are default values are always included.

The HTTP header "Location" contains the url of the newly created partner.

Example response:

{
"partnerId": "ABC12",
"typ": "PERSON",
"avatarUrl": "https://www.europace2.de/partnermanagement/d71c58aeaed4022384b169f83e0d8842.avatar?anonymousAvatar=BENUTZER",
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde":"Musterbehoerde",
"registrierungsnummer":"987654",
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

Note

For a successful offer acceptance in BaufiSmart it is necessary for the following processes that the following attributes are maintained in the partner management for the account manager of the transaction:

  • anrede
  • vorname
  • nachname
  • anschrift
  • bankverbindung
  • email

Update partner data

Attributes of a partner can be modified using HTTP PATCH. This overwrites only those attributes that are included in the PATCH request. All other attributes are not changed.

To make changes to a partner, the caller needs Einstellungsrechte.

Attributes that can be changed via PATCH

  • anrede
  • anschrift
  • aufsichtsbehoerde (deprecated, use aufsichtsbehoerde34i)
  • aufsichtsbehoerde34i
  • aufsichtsbehoerde34k
  • bankverbindung
  • email
  • externePartnerId
  • faxnummer
  • firmenname
  • firmennameZusatz
  • geburtsdatum
  • kreditsachbearbeiter
  • mobilnummer
  • name
  • vorname
  • nachname
  • registrierungsnummer (deprecated, use registrierungsnummer34i)
  • registrierungsnummer34i
  • registrierungsnummer34k
  • telefonnummer
  • titelFunktion
  • webseite

Note

aufsichtsbehoerde and registrierungsnummer hold the data of the Gewerbeerlaubnis according to § 34i GewO (Immobiliardarlehensvermittlung). They are superseded by the explicit fields aufsichtsbehoerde34i / registrierungsnummer34i, which read and write the same values and remain interchangeable with them. If both a deprecated field and its ...34i counterpart are sent in one request, the ...34i value is applied.

aufsichtsbehoerde34k and registrierungsnummer34k hold the data of the Gewerbeerlaubnis according to § 34k GewO (Allgemeine Verbraucherdarlehensvermittlung). All four fields can be maintained independently of each other.

Example

Requirements:

  • OAuth token has the scope partner:plakette:schreiben.
  • Caller has Einstellungsrechte on the partner

Example request:

PATCH /v2/partner/ABC12 HTTP/1.1Host: api.europace.deAuthorization: Bearer eyJraWQiOiJWRDZZ...Accept: application/jsonX-TraceId: ff-request-2020-08-28Content-Type: application/json
{
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

The following rules apply to server-side evaluation:

  • empty attributes for strings ("") delete the existing value.
  • unknown attributes are ignored.
  • partnerId cannot be changed and will be ignored.
  • type is not changeable and will be ignored.
  • if a field expects an ENUM, a value must be specified (Anrede)

The body of the response contains the current partner data in JSON format. This can be used for success control. Attributes that were already set or for which there are default values are always included.

Example response:

{
"partnerId":"ABC12",
"vorname":"Max",
"nachname":"Mustermann",
"typ":"PERSON",
"email":"max.musterman@exmaple.org",
"avatar":"https://ep2.mtp.rz-hypoport.local/partnermanagement/d71c58aeaed4022384b169f83e0d8842.avatar?anonymousAvatar=BENUTZER",
"gesperrt":false,
"kreditsachbearbeiter":true,
"parent":{
"partnerId":"ABC12"
},
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"anrede":"HERR",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"referenzFeld":"Test Ref",
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051"
},
"aufsichtsbehoerde":"Musterbehoerde",
"registrierungsnummer":"987654",
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

Create or update user-access

A newly created partner needs a Zugang to be able to log in to Europace with username. The Zugang can be created by the settings-frontend (partner management) or the partner-API.

Create user-access

Requirements for all use cases and examples:

  • OAuth token has scope partner:plakette:schreiben
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Use case 1: Create Europace user.

The user with the PartnerId:ABC12 is set up an Zugang with the username "max.musterman@example.org" and an activation email (sendEmail=true) is sent to the username. In the activation email, the user is prompted to set a password.

Note:
The reply address in the activation email is the email or username of the subject in the access-token that created the Zugang. If no email address or username is available, the reply goes to noreply@europace2.de.

Requirement for use case 1:

  • the username is Europace-wide unique
  • the username is an e-mail address

Example request:

POST /v2/partner/ABC12/zugang?sendEmail=true HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"benutzername" : "maxi.musterman@example.org"
}

Example response:

{
"partnerId": "ABC12",
"status": "ZUGANG_UNBESTAETIGT",
"benutzername": "maxi.musterman@example.org",
}

Use case 2: Create user for own identity provider.

This use case is most common with banking partners or direct sales organizations where all employees have a company email with their own domain and the employees work exclusively within this organization.

In this use case, the partner's identity provider is configured and the username is used as the user identifier at Europace and the partner's identity provider.

Don't send an activation email (sendEmail=false), because the user already exists in the partner's Identity Provider.

Requirement for use case 2:

  • the username is Europace-wide unique
  • the username is an e-mail address

Example request:

POST /v2/partner/ABC12/zugang?sendEmail=false HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"benutzername" : "maxi.musterman@deineOrganisation.de"
}

Example response:

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"benutzername": "maxi.musterman@deineOrganisation.de",
"identityProviderConfigURL": "https://idp.deineOrganisation.de/auth/realms/.well-known/openid-configuration"
}

Use case 3: Username is not unique Europace-wide or no email address

A user:in is to be created for the own Identity Provider, but the username is Europace-wide not unique or no e-mail address. In this case the field 'benutzername' is not used at all, but only the field 'identityProviderBenutzername'. The identification of the user on the login mask can only be done via a partnerId. The partnerId can be passed to the login mask with the username parameter in some use cases to improve the user experience.

Since it is an existing user in the identity provider of the partner and the identityProvider username is only used here, no activation email is sent, regardless of the sendEmail parameter.

Requirements for use case 3:

  • No further

Example request:

POST /v2/partner/ABC12/zugang HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"identityProviderBenutzername" : "maxi.mustermann01"
}

Example response: Status: HTTP-Code: 201 created

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"identityProviderBenutzername": "maxi.mustermann01",
"identityProviderConfigURL": "https://idp.deineOrganisation.de/auth/realms/.well-known/openid-configuration"
}

Update user-access for identity providers

The Benutzernamen of external identity providers can be changed with Partner API.

Restriction:

  • the field benutzername cannot be changed

Example request:

PATCH /v2/partner/ABC12/zugang HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"identityProviderBenutzername" : "maxi.muster"
}

Example response: Status: HTTP-Code: 200 okay

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"identityProviderBenutzername": "maxi.muster",
"identityProviderConfigURL": "https://idp.deineOrganisation.de/auth/realms/.well-known/openid-configuration"
}

Update partner-permissions

Set user-permissions

Requirements:

  • OAuth token has the scope partner:rechte:schreiben.
  • Caller has a Einstellungsrecht on the partner

Example request:

POST /v2/partner/ABC12/rechte HTTP/1.1Host: api.europace.deAuthorization: Bearer eyJraWQ...
{
"baufismart": {
"baufiSmartNutzen": true,
"echtgeschaeft": true
}
}

Example response:

{
"partnermanagement": {
"apiClientEinstellungenVornehmen": true,
"einstellungenOeffnen": true,
"baufiSmartEinstellungenVornehmen": true,
"partnerAnlegen": true
},
"baufismart": {
"baufiSmartNutzen": true,
"echtgeschaeft": true,
"vorgaengeUeberOberflaecheAnlegen": true,
"ergebnisListeNutzen": true,
"loeschen": false
},
"kreditsmart": {
"echtgeschaeft": true,
"kreditSmartSichtbar": true,
"versicherungAnbieten": true,
"vorgaengeUeberOberflaecheAnlegen": true
}
}

Add access right

In the example, partner ABC12 is getting the Zugriffsrecht from XYZ56. ABC12 can then access the Vorgänge of XYZ56.

Requirements:

  • OAuth token has scope partner:beziehung:schreiben.
  • Caller has Einstellungsrecht on the partner to which the Zugriffsrecht is added
  • Caller has Einstellungsrecht on the partner to which the access is granted

Example request:

POST /v2/partner/ABC12/uebernahmeRechtFuer/XYZ56 HTTP/1.1Host: api.europace.deX-Trace-Id: My-COLLECTION-8301Authorization: Bearer eyJraWQiOiJFT05...

Example response: Status: HTTP-Code: 201 created

Update trade relation

Experimental

This API is experimental and may change or be removed without notice. Do not rely on it for production use yet.

An existing trade relation for a partner and Produktanbieter can be modified using HTTP PATCH. Only the transmitted fields are updated. All other fields are not changed.

Values for ermittelbar and annehmbar can be true, false, or null. Sending both attributes as null restores the inheritance of the trade relation along the hierarchy (see below).

Requirements:

  • OAuth token has the scope partner:beziehungen:schreiben.

Example request:

PATCH /v2/partner/ABC12/handelsbeziehungen/ONE_CLICK_BAUFI HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"ermittelbar": true,
"annehmbar": false
}

Example response: Status: 200 OK

{
"produktanbieterId": "ONE_CLICK_BAUFI",
"produktanbieterName": "Sofortzusage-Bank",
"ermittelbar": true,
"annehmbar": false
}

To restore the inheritance of the trade relation, send both attributes as null:

{
"ermittelbar": null,
"annehmbar": null
}

Restoring inheritance is only supported when the trade relation currently has values maintained directly on the partner. If the trade relation is already inheriting its values, there is nothing to restore and the request is rejected: Status: 422 Unprocessable Entity

Inheritance can only be restored fully. A request that sets exactly one of ermittelbar and annehmbar to null while the other contains a value, e.g.:

{
"ermittelbar": null,
"annehmbar": true
}

is rejected: Status: 400 Bad Request

Support

If you have any questions or problems, you can contact devsupport@europace2.de.

About

Dokumentation für Partner API

Topics

Resources

Code of conduct

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

146 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Partner API

The Partner API enables automation of Europace's user management. The partner management (settings) is used by Europace partners to map their own user and rights structure.

Partners can be users as well as organizations like companies, departments or teams. Each partner is created in the hierarchy tree as Plakette of type Person or Organisation.


advisorloanProvidermortgageLoanconsumerLoan

AuthenticationGitHub release

Pattern

Dokumentation

YAMLYAML

For translation of our german domain-specific-language the glossary will support you.

Quick Start

To help you test our APIs and your use case as quickly as possible, we've put together a Postman Collection for you.

Authentication

Please use Authentication to get access to the API. The OAuth2 client requires the following scopes:

ScopeAPI-Usecase
partner:plakette:anlegenAllows to create new Plaketten
partner:plakette:lesenAllows to read partner data
partner:plakette:schreibenAllows to write partner data
partner:beziehungen:lesenAllows to read relations between partners. Allows to retrieve UebernahmeRecht, Administrierbare, Uebernehmbare and Handelsbeziehungen
partner:beziehungen:schreibenAllows to write relations between partners. Allows to add UebernahmeRecht and update Handelsbeziehungen
partner:rechte:lesenAllows to read partner rights
partner:rechte:schreibenAllows to write partner rights

Use cases of the API

get information

manage partner

Get contact details of a partner

Contact details can be retrieved for all trading partners to support collaboration.

Requirements:

  • the caller has a trading relationship with the partner and/or
  • the caller has an Zugriffsrecht to the partner and/or
  • the caller has a Einstellungsrecht to the partner and/or
  • the caller is above the partner in the hierarchy

Example request:

curl --location --request GET 'https://api.europace.de/v2/partner/ABC12/kontaktdaten' \
--header 'Content-Type: application/json' \
--header 'X-TraceId: {{meineTraceId}}' \
--header 'Authorization: Bearer {{access_token}}'

Example response Person:

{
"person": {
"anrede": "FRAU",
"vorname": "Maxi",
"nachname": "Musterfrau",
"titelFunktion": "Baufi-Beraterin",
"geburtsdatum": "1995-05-05"
},
"firmenName": "Immofin AG",
"telefon": "030-12345-0",
"mobiltelefon": "0151-12345678",
"email": "maxi.musterfrau@immofin.de",
"anschrift": {
"strasse": "Teststr.",
"hausnummer": "69",
"plz": "10557",
"ort": "Berlin"
},
"Paragraph34c": {
"registrierungsNummer": "D-W-7943497238942",
"aufsichtsBehörde": "IHK Berlin, Fasanenstr. 85, 10623 Berlin"
}
}

Example response Organisation:

{
"organisation": {
"organisationsName": "Immofin"
},
"firmenName": "Immofin AG",
"telefon": "030-12345-0",
"fax": "030-12345-678",
"email": "maxi.musterfrau@immofin.de",
"website": "http://www.immofin.de",
"anschrift": {
"strasse": "Teststr.",
"hausnummer": "69",
"plz": "10557",
"ort": "Berlin"
},
"Paragraph34c": {
"registrierungsNummer": "D-W-7943497238942",
"aufsichtsBehörde": "IHK Berlin, Fasanenstr. 85, 10623 Berlin"
}
}

Get partner data

Requirements:

  • OAuth token has scope partner:plakette:lesen.
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

curl --location --request GET 'https://api.europace.de/v2/partner/ABC12' \
--header 'Content-Type: application/json' \
--header 'X-TraceId: {{meineTraceId}}' \
--header 'Authorization: Bearer {{access_token}}'

The inheritance of values of certain attributes along the hierarchy, which is known from the settings, is reflected in the API. Inherited values are therefore delivered.

Example response:

{
"partnerId": "ABC12",
"typ": "PERSON",
"avatarUrl": "https://www.europace2.de/partnermanagement/d71c58aeaed4022384b169f83e0d8842.avatar?anonymousAvatar=BENUTZER",
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde":"Musterbehoerde",
"registrierungsnummer":"987654",
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456",
"taetigFuerProduktanbieter": [
{
"produktAnbieterId": "ONE_CLICK_BAUFI",
"produktAnbieter": "Sofortzusage-Bank"
},
{
"produktAnbieterId": "PILOT",
"produktAnbieter": "Pilotproduktanbieter"
}
]
}

Get partners by externe partner id

Requirements:

  • OAuth token has scope partner:plakette:lesen.
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

GET /v2/partners?externePartnerId=11111Accept: application/jsonAuthorization: Bearer eyJraWQiOiJRM

Example response:

{
"partners": [
{
"partnerId": "EDY92",
"href": "http://localhost:8080/v2/partner/EDY92"
},
{
"partnerId": "YRA59",
"href": "http://localhost:8080/v2/partner/YRA59"
},
{
"partnerId": "CUI17",
"href": "http://localhost:8080/v2/partner/CUI17"
}
],
"total": 3
}

Get license information for a partner

Requirements:

  • OAuth token has scope partner:rechte:lesen

Example request:

GET /v2/partner/ABC12/lizenzenHost: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: request-2020-08-28-07-59

Example response:

{
"EUROPACE_ONE": {
"aktiv": true,
"aktiviertSeit": "2025-02-01"
}
}

Get partner-code

Partnerkennzeichen identify a Vertriebsorganisation on the Produktanbieter-side.

Requirements:

  • OAuth token has scope partner:plakette:lesen
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

GET /v2/partner/ABC12/partnerkennzeichen HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: request-2020-08-28-07-59Accept: application/json

Inherited values are therefore not delivered. The inheritance of values of certain attributes along the hierarchy, which is known from the settings, is not reflected in the API.

Example response: Status: 200 OK

{
"dslSapGeschaeftspartnerNummerFuerRatenkredit": "cdts-dsl-sap-vo",
"dslVertriebsWegSchluesselFuerRatenkredit": "1899026629",
"dkbVertriebsIdFuerRatenkredit": "cdts-dkb-vertrieb",
"kennzeichenIngDiba": {
"vermittlerNummer": "9800002186",
"vermittlerVorname": "wer",
"vermittlerNachname": "wer",
"vermittlerNummerFuerRatenkredit": "cdts-ing-diba-vermittler"
},
"kennzeichenErgo": {},
"kennzeichenBhw": {
"vgeNummer": "6248/205585.0",
"orgaNummer": "ORGA123",
"zurIdentifikationsPruefungLegitimiert": "false"
},
"lbsOstVermittlerNummer": "lbsost-werwer-vermittler",
"lbsShhVermittlerNummer": "lbs-ssh-ldapvermittler",
"lbsSuedwestVermittlerNummer": "lbs-südwest-ldapvermittler",
"lbsWestVermittlerNummer": "lbs-west-ldapvermittler",
"allianzVertreterNummer": "01/012/0123",
"axaGeschaeftsPartnerNummer": "MA 00352",
"dslVermittlerGruppenSchluessel": "1200",
"bshVoNummer": "abcdefghijklmnopqrstuvwxyz",
"bshAkquisitionsWeg": "AW1",
"bshBlzVertriebsbank": "1234567890",
"dzHypVermittlerNummer": "1234",
"alteLeipzigerVerbundVermittlerNummer": "42",
"rundvBankAgenturNummer": "RV_BAN",
"rundvBlzVertriebsbank": "RV_BLZ",
"vertriebsOrganisation": {
"name": "Musterbank",
"firma": "Musterbank AG",
"vertriebsOrganisationsId": "MUSTERBANK_AG",
"partnerId": "TYL29"
}
}

Get user-access

To determine the current Zugang, this can be read out.

Requirements:

  • OAuth token has scope partner:plakette:lesen
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

GET /v2/partner/ABC12/zugang HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json

Example response, for a partner authenticating to the Europace identity provider (Europace password): Status: 200 OK

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"benutzername": "maxi.musterman@example.org",
}

Example response, for a partner authenticating with its own identity provider (e.g. Actice Directory): Status: 200 OK

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"identityProviderBenutzername": "maxi.muster",
"identityProviderConfigURL": "https://auth.deineOrganisation.de/adfs/.well-known/openid-configuration"
}

Get partner-permissions

Requirements for all use cases and examples:

  • OAuth token has scope partner:rechte:lesen
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Get user-permissions

Example request:

GET /v2/partner/ABC12/rechte HTTP/1.1Host: api.europace.deAuthorization: Bearer eyJraWQ

Example response:

{
"partnermanagement": {
"apiClientEinstellungenVornehmen": true,
"einstellungenOeffnen": true,
"baufiSmartEinstellungenVornehmen": true,
"partnerAnlegen": true
},
"baufismart": {
"baufiSmartNutzen": true,
"echtgeschaeft": true,
"vorgaengeUeberOberflaecheAnlegen": true,
"ergebnisListeNutzen": true,
"loeschen": false
},
"kreditsmart": {
"echtgeschaeft": true,
"kreditSmartSichtbar": true,
"versicherungAnbieten": true,
"vorgaengeUeberOberflaecheAnlegen": true
}
}

Get access right

The Zugriffrecht entitles partners to read and write access to all Vorgänge of another partner.

Which partners do I have access to?

Example request:

GET /v2/partner/ABC12/uebernehmbare HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJContent-Type: application/jsonX-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{ "content": [ { "partnerId":"XYZ15" } ]
}

Do I have access to Partner XYZ15?

Example request:

GET /v2/partner/ABC12/uebernahmeRechtFuer/XYZ15 HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOi...Content-Type: application/jsonX-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{
"partner": {
"partnerId": "XYZ15",
"gesperrt": false
},
"uebernehmbar": true
}

Get setting right

Returns all partners for which this partner is allowed to change the data and authorizations or retrieve the reporting.

At least the partner itself is returned, since everyone may at least set itself or retrieve its own reporting.

In order to achieve a better performance, the implicitly administrable partners have been omitted in the partner-api. To determine these, it is necessary to iterate over the subordinates of the result list.

Requirements:

  • OAuth token has scope partner:plakette:lesen.
  • Each partner may make changes to himself or other partners if he has the Einstellungsrecht. This means that partner data or authorizations can be adjusted. Authorizations can only be assigned if the executing partner has them himself.

Which partners can I manage?

Example request:

GET /v2/partner/ABC12/administrierbare HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json

Example response:

{ "content": [ { "partnerId":"XYZ15" } ]
}

Get trade relations

Experimental

This API is experimental and may change or be removed without notice. Do not rely on it for production use yet.

Handelsbeziehungen describe the business relationship between a partner and a Produktanbieter: whether business may be initiated with the product provider (ermittelbar) and whether business may be accepted from it (annehmbar).

The visible effective trade relations are returned. The inheritance of these values along the hierarchy, which is known from the settings, is reflected in the returned effective values.

Requirements:

  • OAuth token has scope partner:beziehungen:lesen.

Get all trade relations of a partner

Example request:

GET /v2/partner/ABC12/handelsbeziehungen HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{
"total": 2,
"handelsbeziehungen": [
{
"produktanbieterId": "ONE_CLICK_BAUFI",
"produktanbieterName": "Sofortzusage-Bank",
"ermittelbar": true,
"annehmbar": false
},
{
"produktanbieterId": "PILOT",
"produktanbieterName": "Pilotproduktanbieter",
"ermittelbar": true,
"annehmbar": true
}
]
}

Get a single trade relation

Example request:

GET /v2/partner/ABC12/handelsbeziehungen/ONE_CLICK_BAUFI HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{
"produktanbieterId": "ONE_CLICK_BAUFI",
"produktanbieterName": "Sofortzusage-Bank",
"ermittelbar": true,
"annehmbar": false
}

Create partner

Creating a new partner is always done below an existing partner: https://api.europace.de/v2/partner/{PartnerId}/untergeordnete

Requirements:

  • OAuth token has scope partner:plakette:anlegen.
  • Caller is a partner of type Person
  • Caller has the may create organizational units permission.
  • Caller has Einstellungsrechte on the partner under which the new partner is to be created

Example request:

POST /v2/partner/ABC12/untergeordnete HTTP/1.1Host: api.europace.deAccept: application/jsonX-Trace-Id: ff-request-2020-08-28-07-55Authorization: Bearer eyJraWQiO...Content-Type: application/json
{
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

The following rules apply to server-side evaluation:

  • unknown attributes are ignored.
  • For organizations, person-specific attributes are ignored.
  • For persons, organization-specific attributes are ignored.
  • Empty attributes for strings ("") are ignored.
  • "partnerId" cannot be set and will be ignored.
  • Rights are set to false for persons if not specified.

The body of the response contains the current master data in JSON format. This can be used for success control. Attributes that are set on the server side or for which there are default values are always included.

The HTTP header "Location" contains the url of the newly created partner.

Example response:

{
"partnerId": "ABC12",
"typ": "PERSON",
"avatarUrl": "https://www.europace2.de/partnermanagement/d71c58aeaed4022384b169f83e0d8842.avatar?anonymousAvatar=BENUTZER",
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde":"Musterbehoerde",
"registrierungsnummer":"987654",
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

Note

For a successful offer acceptance in BaufiSmart it is necessary for the following processes that the following attributes are maintained in the partner management for the account manager of the transaction:

  • anrede
  • vorname
  • nachname
  • anschrift
  • bankverbindung
  • email

Update partner data

Attributes of a partner can be modified using HTTP PATCH. This overwrites only those attributes that are included in the PATCH request. All other attributes are not changed.

To make changes to a partner, the caller needs Einstellungsrechte.

Attributes that can be changed via PATCH

  • anrede
  • anschrift
  • aufsichtsbehoerde (deprecated, use aufsichtsbehoerde34i)
  • aufsichtsbehoerde34i
  • aufsichtsbehoerde34k
  • bankverbindung
  • email
  • externePartnerId
  • faxnummer
  • firmenname
  • firmennameZusatz
  • geburtsdatum
  • kreditsachbearbeiter
  • mobilnummer
  • name
  • vorname
  • nachname
  • registrierungsnummer (deprecated, use registrierungsnummer34i)
  • registrierungsnummer34i
  • registrierungsnummer34k
  • telefonnummer
  • titelFunktion
  • webseite

Note

aufsichtsbehoerde and registrierungsnummer hold the data of the Gewerbeerlaubnis according to § 34i GewO (Immobiliardarlehensvermittlung). They are superseded by the explicit fields aufsichtsbehoerde34i / registrierungsnummer34i, which read and write the same values and remain interchangeable with them. If both a deprecated field and its ...34i counterpart are sent in one request, the ...34i value is applied.

aufsichtsbehoerde34k and registrierungsnummer34k hold the data of the Gewerbeerlaubnis according to § 34k GewO (Allgemeine Verbraucherdarlehensvermittlung). All four fields can be maintained independently of each other.

Example

Requirements:

  • OAuth token has the scope partner:plakette:schreiben.
  • Caller has Einstellungsrechte on the partner

Example request:

PATCH /v2/partner/ABC12 HTTP/1.1Host: api.europace.deAuthorization: Bearer eyJraWQiOiJWRDZZ...Accept: application/jsonX-TraceId: ff-request-2020-08-28Content-Type: application/json
{
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

The following rules apply to server-side evaluation:

  • empty attributes for strings ("") delete the existing value.
  • unknown attributes are ignored.
  • partnerId cannot be changed and will be ignored.
  • type is not changeable and will be ignored.
  • if a field expects an ENUM, a value must be specified (Anrede)

The body of the response contains the current partner data in JSON format. This can be used for success control. Attributes that were already set or for which there are default values are always included.

Example response:

{
"partnerId":"ABC12",
"vorname":"Max",
"nachname":"Mustermann",
"typ":"PERSON",
"email":"max.musterman@exmaple.org",
"avatar":"https://ep2.mtp.rz-hypoport.local/partnermanagement/d71c58aeaed4022384b169f83e0d8842.avatar?anonymousAvatar=BENUTZER",
"gesperrt":false,
"kreditsachbearbeiter":true,
"parent":{
"partnerId":"ABC12"
},
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"anrede":"HERR",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"referenzFeld":"Test Ref",
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051"
},
"aufsichtsbehoerde":"Musterbehoerde",
"registrierungsnummer":"987654",
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

Create or update user-access

A newly created partner needs a Zugang to be able to log in to Europace with username. The Zugang can be created by the settings-frontend (partner management) or the partner-API.

Create user-access

Requirements for all use cases and examples:

  • OAuth token has scope partner:plakette:schreiben
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Use case 1: Create Europace user.

The user with the PartnerId:ABC12 is set up an Zugang with the username "max.musterman@example.org" and an activation email (sendEmail=true) is sent to the username. In the activation email, the user is prompted to set a password.

Note:
The reply address in the activation email is the email or username of the subject in the access-token that created the Zugang. If no email address or username is available, the reply goes to noreply@europace2.de.

Requirement for use case 1:

  • the username is Europace-wide unique
  • the username is an e-mail address

Example request:

POST /v2/partner/ABC12/zugang?sendEmail=true HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"benutzername" : "maxi.musterman@example.org"
}

Example response:

{
"partnerId": "ABC12",
"status": "ZUGANG_UNBESTAETIGT",
"benutzername": "maxi.musterman@example.org",
}

Use case 2: Create user for own identity provider.

This use case is most common with banking partners or direct sales organizations where all employees have a company email with their own domain and the employees work exclusively within this organization.

In this use case, the partner's identity provider is configured and the username is used as the user identifier at Europace and the partner's identity provider.

Don't send an activation email (sendEmail=false), because the user already exists in the partner's Identity Provider.

Requirement for use case 2:

  • the username is Europace-wide unique
  • the username is an e-mail address

Example request:

POST /v2/partner/ABC12/zugang?sendEmail=false HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"benutzername" : "maxi.musterman@deineOrganisation.de"
}

Example response:

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"benutzername": "maxi.musterman@deineOrganisation.de",
"identityProviderConfigURL": "https://idp.deineOrganisation.de/auth/realms/.well-known/openid-configuration"
}

Use case 3: Username is not unique Europace-wide or no email address

A user:in is to be created for the own Identity Provider, but the username is Europace-wide not unique or no e-mail address. In this case the field 'benutzername' is not used at all, but only the field 'identityProviderBenutzername'. The identification of the user on the login mask can only be done via a partnerId. The partnerId can be passed to the login mask with the username parameter in some use cases to improve the user experience.

Since it is an existing user in the identity provider of the partner and the identityProvider username is only used here, no activation email is sent, regardless of the sendEmail parameter.

Requirements for use case 3:

  • No further

Example request:

POST /v2/partner/ABC12/zugang HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"identityProviderBenutzername" : "maxi.mustermann01"
}

Example response: Status: HTTP-Code: 201 created

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"identityProviderBenutzername": "maxi.mustermann01",
"identityProviderConfigURL": "https://idp.deineOrganisation.de/auth/realms/.well-known/openid-configuration"
}

Update user-access for identity providers

The Benutzernamen of external identity providers can be changed with Partner API.

Restriction:

  • the field benutzername cannot be changed

Example request:

PATCH /v2/partner/ABC12/zugang HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"identityProviderBenutzername" : "maxi.muster"
}

Example response: Status: HTTP-Code: 200 okay

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"identityProviderBenutzername": "maxi.muster",
"identityProviderConfigURL": "https://idp.deineOrganisation.de/auth/realms/.well-known/openid-configuration"
}

Update partner-permissions

Set user-permissions

Requirements:

  • OAuth token has the scope partner:rechte:schreiben.
  • Caller has a Einstellungsrecht on the partner

Example request:

POST /v2/partner/ABC12/rechte HTTP/1.1Host: api.europace.deAuthorization: Bearer eyJraWQ...
{
"baufismart": {
"baufiSmartNutzen": true,
"echtgeschaeft": true
}
}

Example response:

{
"partnermanagement": {
"apiClientEinstellungenVornehmen": true,
"einstellungenOeffnen": true,
"baufiSmartEinstellungenVornehmen": true,
"partnerAnlegen": true
},
"baufismart": {
"baufiSmartNutzen": true,
"echtgeschaeft": true,
"vorgaengeUeberOberflaecheAnlegen": true,
"ergebnisListeNutzen": true,
"loeschen": false
},
"kreditsmart": {
"echtgeschaeft": true,
"kreditSmartSichtbar": true,
"versicherungAnbieten": true,
"vorgaengeUeberOberflaecheAnlegen": true
}
}

Add access right

In the example, partner ABC12 is getting the Zugriffsrecht from XYZ56. ABC12 can then access the Vorgänge of XYZ56.

Requirements:

  • OAuth token has scope partner:beziehung:schreiben.
  • Caller has Einstellungsrecht on the partner to which the Zugriffsrecht is added
  • Caller has Einstellungsrecht on the partner to which the access is granted

Example request:

POST /v2/partner/ABC12/uebernahmeRechtFuer/XYZ56 HTTP/1.1Host: api.europace.deX-Trace-Id: My-COLLECTION-8301Authorization: Bearer eyJraWQiOiJFT05...

Example response: Status: HTTP-Code: 201 created

Update trade relation

Experimental

This API is experimental and may change or be removed without notice. Do not rely on it for production use yet.

An existing trade relation for a partner and Produktanbieter can be modified using HTTP PATCH. Only the transmitted fields are updated. All other fields are not changed.

Values for ermittelbar and annehmbar can be true, false, or null. Sending both attributes as null restores the inheritance of the trade relation along the hierarchy (see below).

Requirements:

  • OAuth token has the scope partner:beziehungen:schreiben.

Example request:

PATCH /v2/partner/ABC12/handelsbeziehungen/ONE_CLICK_BAUFI HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"ermittelbar": true,
"annehmbar": false
}

Example response: Status: 200 OK

{
"produktanbieterId": "ONE_CLICK_BAUFI",
"produktanbieterName": "Sofortzusage-Bank",
"ermittelbar": true,
"annehmbar": false
}

To restore the inheritance of the trade relation, send both attributes as null:

{
"ermittelbar": null,
"annehmbar": null
}

Restoring inheritance is only supported when the trade relation currently has values maintained directly on the partner. If the trade relation is already inheriting its values, there is nothing to restore and the request is rejected: Status: 422 Unprocessable Entity

Inheritance can only be restored fully. A request that sets exactly one of ermittelbar and annehmbar to null while the other contains a value, e.g.:

{
"ermittelbar": null,
"annehmbar": true
}

is rejected: Status: 400 Bad Request

Support

If you have any questions or problems, you can contact devsupport@europace2.de.

About

Dokumentation für Partner API

Topics

Resources

Code of conduct

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

146 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Partner API

The Partner API enables automation of Europace's user management. The partner management (settings) is used by Europace partners to map their own user and rights structure.

Partners can be users as well as organizations like companies, departments or teams. Each partner is created in the hierarchy tree as Plakette of type Person or Organisation.


advisorloanProvidermortgageLoanconsumerLoan

AuthenticationGitHub release

Pattern

Dokumentation

YAMLYAML

For translation of our german domain-specific-language the glossary will support you.

Quick Start

To help you test our APIs and your use case as quickly as possible, we've put together a Postman Collection for you.

Authentication

Please use Authentication to get access to the API. The OAuth2 client requires the following scopes:

ScopeAPI-Usecase
partner:plakette:anlegenAllows to create new Plaketten
partner:plakette:lesenAllows to read partner data
partner:plakette:schreibenAllows to write partner data
partner:beziehungen:lesenAllows to read relations between partners. Allows to retrieve UebernahmeRecht, Administrierbare, Uebernehmbare and Handelsbeziehungen
partner:beziehungen:schreibenAllows to write relations between partners. Allows to add UebernahmeRecht and update Handelsbeziehungen
partner:rechte:lesenAllows to read partner rights
partner:rechte:schreibenAllows to write partner rights

Use cases of the API

get information

manage partner

Get contact details of a partner

Contact details can be retrieved for all trading partners to support collaboration.

Requirements:

  • the caller has a trading relationship with the partner and/or
  • the caller has an Zugriffsrecht to the partner and/or
  • the caller has a Einstellungsrecht to the partner and/or
  • the caller is above the partner in the hierarchy

Example request:

curl --location --request GET 'https://api.europace.de/v2/partner/ABC12/kontaktdaten' \
--header 'Content-Type: application/json' \
--header 'X-TraceId: {{meineTraceId}}' \
--header 'Authorization: Bearer {{access_token}}'

Example response Person:

{
"person": {
"anrede": "FRAU",
"vorname": "Maxi",
"nachname": "Musterfrau",
"titelFunktion": "Baufi-Beraterin",
"geburtsdatum": "1995-05-05"
},
"firmenName": "Immofin AG",
"telefon": "030-12345-0",
"mobiltelefon": "0151-12345678",
"email": "maxi.musterfrau@immofin.de",
"anschrift": {
"strasse": "Teststr.",
"hausnummer": "69",
"plz": "10557",
"ort": "Berlin"
},
"Paragraph34c": {
"registrierungsNummer": "D-W-7943497238942",
"aufsichtsBehörde": "IHK Berlin, Fasanenstr. 85, 10623 Berlin"
}
}

Example response Organisation:

{
"organisation": {
"organisationsName": "Immofin"
},
"firmenName": "Immofin AG",
"telefon": "030-12345-0",
"fax": "030-12345-678",
"email": "maxi.musterfrau@immofin.de",
"website": "http://www.immofin.de",
"anschrift": {
"strasse": "Teststr.",
"hausnummer": "69",
"plz": "10557",
"ort": "Berlin"
},
"Paragraph34c": {
"registrierungsNummer": "D-W-7943497238942",
"aufsichtsBehörde": "IHK Berlin, Fasanenstr. 85, 10623 Berlin"
}
}

Get partner data

Requirements:

  • OAuth token has scope partner:plakette:lesen.
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

curl --location --request GET 'https://api.europace.de/v2/partner/ABC12' \
--header 'Content-Type: application/json' \
--header 'X-TraceId: {{meineTraceId}}' \
--header 'Authorization: Bearer {{access_token}}'

The inheritance of values of certain attributes along the hierarchy, which is known from the settings, is reflected in the API. Inherited values are therefore delivered.

Example response:

{
"partnerId": "ABC12",
"typ": "PERSON",
"avatarUrl": "https://www.europace2.de/partnermanagement/d71c58aeaed4022384b169f83e0d8842.avatar?anonymousAvatar=BENUTZER",
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde":"Musterbehoerde",
"registrierungsnummer":"987654",
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456",
"taetigFuerProduktanbieter": [
{
"produktAnbieterId": "ONE_CLICK_BAUFI",
"produktAnbieter": "Sofortzusage-Bank"
},
{
"produktAnbieterId": "PILOT",
"produktAnbieter": "Pilotproduktanbieter"
}
]
}

Get partners by externe partner id

Requirements:

  • OAuth token has scope partner:plakette:lesen.
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

GET /v2/partners?externePartnerId=11111Accept: application/jsonAuthorization: Bearer eyJraWQiOiJRM

Example response:

{
"partners": [
{
"partnerId": "EDY92",
"href": "http://localhost:8080/v2/partner/EDY92"
},
{
"partnerId": "YRA59",
"href": "http://localhost:8080/v2/partner/YRA59"
},
{
"partnerId": "CUI17",
"href": "http://localhost:8080/v2/partner/CUI17"
}
],
"total": 3
}

Get license information for a partner

Requirements:

  • OAuth token has scope partner:rechte:lesen

Example request:

GET /v2/partner/ABC12/lizenzenHost: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: request-2020-08-28-07-59

Example response:

{
"EUROPACE_ONE": {
"aktiv": true,
"aktiviertSeit": "2025-02-01"
}
}

Get partner-code

Partnerkennzeichen identify a Vertriebsorganisation on the Produktanbieter-side.

Requirements:

  • OAuth token has scope partner:plakette:lesen
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

GET /v2/partner/ABC12/partnerkennzeichen HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: request-2020-08-28-07-59Accept: application/json

Inherited values are therefore not delivered. The inheritance of values of certain attributes along the hierarchy, which is known from the settings, is not reflected in the API.

Example response: Status: 200 OK

{
"dslSapGeschaeftspartnerNummerFuerRatenkredit": "cdts-dsl-sap-vo",
"dslVertriebsWegSchluesselFuerRatenkredit": "1899026629",
"dkbVertriebsIdFuerRatenkredit": "cdts-dkb-vertrieb",
"kennzeichenIngDiba": {
"vermittlerNummer": "9800002186",
"vermittlerVorname": "wer",
"vermittlerNachname": "wer",
"vermittlerNummerFuerRatenkredit": "cdts-ing-diba-vermittler"
},
"kennzeichenErgo": {},
"kennzeichenBhw": {
"vgeNummer": "6248/205585.0",
"orgaNummer": "ORGA123",
"zurIdentifikationsPruefungLegitimiert": "false"
},
"lbsOstVermittlerNummer": "lbsost-werwer-vermittler",
"lbsShhVermittlerNummer": "lbs-ssh-ldapvermittler",
"lbsSuedwestVermittlerNummer": "lbs-südwest-ldapvermittler",
"lbsWestVermittlerNummer": "lbs-west-ldapvermittler",
"allianzVertreterNummer": "01/012/0123",
"axaGeschaeftsPartnerNummer": "MA 00352",
"dslVermittlerGruppenSchluessel": "1200",
"bshVoNummer": "abcdefghijklmnopqrstuvwxyz",
"bshAkquisitionsWeg": "AW1",
"bshBlzVertriebsbank": "1234567890",
"dzHypVermittlerNummer": "1234",
"alteLeipzigerVerbundVermittlerNummer": "42",
"rundvBankAgenturNummer": "RV_BAN",
"rundvBlzVertriebsbank": "RV_BLZ",
"vertriebsOrganisation": {
"name": "Musterbank",
"firma": "Musterbank AG",
"vertriebsOrganisationsId": "MUSTERBANK_AG",
"partnerId": "TYL29"
}
}

Get user-access

To determine the current Zugang, this can be read out.

Requirements:

  • OAuth token has scope partner:plakette:lesen
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

GET /v2/partner/ABC12/zugang HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json

Example response, for a partner authenticating to the Europace identity provider (Europace password): Status: 200 OK

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"benutzername": "maxi.musterman@example.org",
}

Example response, for a partner authenticating with its own identity provider (e.g. Actice Directory): Status: 200 OK

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"identityProviderBenutzername": "maxi.muster",
"identityProviderConfigURL": "https://auth.deineOrganisation.de/adfs/.well-known/openid-configuration"
}

Get partner-permissions

Requirements for all use cases and examples:

  • OAuth token has scope partner:rechte:lesen
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Get user-permissions

Example request:

GET /v2/partner/ABC12/rechte HTTP/1.1Host: api.europace.deAuthorization: Bearer eyJraWQ

Example response:

{
"partnermanagement": {
"apiClientEinstellungenVornehmen": true,
"einstellungenOeffnen": true,
"baufiSmartEinstellungenVornehmen": true,
"partnerAnlegen": true
},
"baufismart": {
"baufiSmartNutzen": true,
"echtgeschaeft": true,
"vorgaengeUeberOberflaecheAnlegen": true,
"ergebnisListeNutzen": true,
"loeschen": false
},
"kreditsmart": {
"echtgeschaeft": true,
"kreditSmartSichtbar": true,
"versicherungAnbieten": true,
"vorgaengeUeberOberflaecheAnlegen": true
}
}

Get access right

The Zugriffrecht entitles partners to read and write access to all Vorgänge of another partner.

Which partners do I have access to?

Example request:

GET /v2/partner/ABC12/uebernehmbare HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJContent-Type: application/jsonX-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{ "content": [ { "partnerId":"XYZ15" } ]
}

Do I have access to Partner XYZ15?

Example request:

GET /v2/partner/ABC12/uebernahmeRechtFuer/XYZ15 HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOi...Content-Type: application/jsonX-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{
"partner": {
"partnerId": "XYZ15",
"gesperrt": false
},
"uebernehmbar": true
}

Get setting right

Returns all partners for which this partner is allowed to change the data and authorizations or retrieve the reporting.

At least the partner itself is returned, since everyone may at least set itself or retrieve its own reporting.

In order to achieve a better performance, the implicitly administrable partners have been omitted in the partner-api. To determine these, it is necessary to iterate over the subordinates of the result list.

Requirements:

  • OAuth token has scope partner:plakette:lesen.
  • Each partner may make changes to himself or other partners if he has the Einstellungsrecht. This means that partner data or authorizations can be adjusted. Authorizations can only be assigned if the executing partner has them himself.

Which partners can I manage?

Example request:

GET /v2/partner/ABC12/administrierbare HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json

Example response:

{ "content": [ { "partnerId":"XYZ15" } ]
}

Get trade relations

Experimental

This API is experimental and may change or be removed without notice. Do not rely on it for production use yet.

Handelsbeziehungen describe the business relationship between a partner and a Produktanbieter: whether business may be initiated with the product provider (ermittelbar) and whether business may be accepted from it (annehmbar).

The visible effective trade relations are returned. The inheritance of these values along the hierarchy, which is known from the settings, is reflected in the returned effective values.

Requirements:

  • OAuth token has scope partner:beziehungen:lesen.

Get all trade relations of a partner

Example request:

GET /v2/partner/ABC12/handelsbeziehungen HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{
"total": 2,
"handelsbeziehungen": [
{
"produktanbieterId": "ONE_CLICK_BAUFI",
"produktanbieterName": "Sofortzusage-Bank",
"ermittelbar": true,
"annehmbar": false
},
{
"produktanbieterId": "PILOT",
"produktanbieterName": "Pilotproduktanbieter",
"ermittelbar": true,
"annehmbar": true
}
]
}

Get a single trade relation

Example request:

GET /v2/partner/ABC12/handelsbeziehungen/ONE_CLICK_BAUFI HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{
"produktanbieterId": "ONE_CLICK_BAUFI",
"produktanbieterName": "Sofortzusage-Bank",
"ermittelbar": true,
"annehmbar": false
}

Create partner

Creating a new partner is always done below an existing partner: https://api.europace.de/v2/partner/{PartnerId}/untergeordnete

Requirements:

  • OAuth token has scope partner:plakette:anlegen.
  • Caller is a partner of type Person
  • Caller has the may create organizational units permission.
  • Caller has Einstellungsrechte on the partner under which the new partner is to be created

Example request:

POST /v2/partner/ABC12/untergeordnete HTTP/1.1Host: api.europace.deAccept: application/jsonX-Trace-Id: ff-request-2020-08-28-07-55Authorization: Bearer eyJraWQiO...Content-Type: application/json
{
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

The following rules apply to server-side evaluation:

  • unknown attributes are ignored.
  • For organizations, person-specific attributes are ignored.
  • For persons, organization-specific attributes are ignored.
  • Empty attributes for strings ("") are ignored.
  • "partnerId" cannot be set and will be ignored.
  • Rights are set to false for persons if not specified.

The body of the response contains the current master data in JSON format. This can be used for success control. Attributes that are set on the server side or for which there are default values are always included.

The HTTP header "Location" contains the url of the newly created partner.

Example response:

{
"partnerId": "ABC12",
"typ": "PERSON",
"avatarUrl": "https://www.europace2.de/partnermanagement/d71c58aeaed4022384b169f83e0d8842.avatar?anonymousAvatar=BENUTZER",
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde":"Musterbehoerde",
"registrierungsnummer":"987654",
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

Note

For a successful offer acceptance in BaufiSmart it is necessary for the following processes that the following attributes are maintained in the partner management for the account manager of the transaction:

  • anrede
  • vorname
  • nachname
  • anschrift
  • bankverbindung
  • email

Update partner data

Attributes of a partner can be modified using HTTP PATCH. This overwrites only those attributes that are included in the PATCH request. All other attributes are not changed.

To make changes to a partner, the caller needs Einstellungsrechte.

Attributes that can be changed via PATCH

  • anrede
  • anschrift
  • aufsichtsbehoerde (deprecated, use aufsichtsbehoerde34i)
  • aufsichtsbehoerde34i
  • aufsichtsbehoerde34k
  • bankverbindung
  • email
  • externePartnerId
  • faxnummer
  • firmenname
  • firmennameZusatz
  • geburtsdatum
  • kreditsachbearbeiter
  • mobilnummer
  • name
  • vorname
  • nachname
  • registrierungsnummer (deprecated, use registrierungsnummer34i)
  • registrierungsnummer34i
  • registrierungsnummer34k
  • telefonnummer
  • titelFunktion
  • webseite

Note

aufsichtsbehoerde and registrierungsnummer hold the data of the Gewerbeerlaubnis according to § 34i GewO (Immobiliardarlehensvermittlung). They are superseded by the explicit fields aufsichtsbehoerde34i / registrierungsnummer34i, which read and write the same values and remain interchangeable with them. If both a deprecated field and its ...34i counterpart are sent in one request, the ...34i value is applied.

aufsichtsbehoerde34k and registrierungsnummer34k hold the data of the Gewerbeerlaubnis according to § 34k GewO (Allgemeine Verbraucherdarlehensvermittlung). All four fields can be maintained independently of each other.

Example

Requirements:

  • OAuth token has the scope partner:plakette:schreiben.
  • Caller has Einstellungsrechte on the partner

Example request:

PATCH /v2/partner/ABC12 HTTP/1.1Host: api.europace.deAuthorization: Bearer eyJraWQiOiJWRDZZ...Accept: application/jsonX-TraceId: ff-request-2020-08-28Content-Type: application/json
{
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

The following rules apply to server-side evaluation:

  • empty attributes for strings ("") delete the existing value.
  • unknown attributes are ignored.
  • partnerId cannot be changed and will be ignored.
  • type is not changeable and will be ignored.
  • if a field expects an ENUM, a value must be specified (Anrede)

The body of the response contains the current partner data in JSON format. This can be used for success control. Attributes that were already set or for which there are default values are always included.

Example response:

{
"partnerId":"ABC12",
"vorname":"Max",
"nachname":"Mustermann",
"typ":"PERSON",
"email":"max.musterman@exmaple.org",
"avatar":"https://ep2.mtp.rz-hypoport.local/partnermanagement/d71c58aeaed4022384b169f83e0d8842.avatar?anonymousAvatar=BENUTZER",
"gesperrt":false,
"kreditsachbearbeiter":true,
"parent":{
"partnerId":"ABC12"
},
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"anrede":"HERR",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"referenzFeld":"Test Ref",
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051"
},
"aufsichtsbehoerde":"Musterbehoerde",
"registrierungsnummer":"987654",
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

Create or update user-access

A newly created partner needs a Zugang to be able to log in to Europace with username. The Zugang can be created by the settings-frontend (partner management) or the partner-API.

Create user-access

Requirements for all use cases and examples:

  • OAuth token has scope partner:plakette:schreiben
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Use case 1: Create Europace user.

The user with the PartnerId:ABC12 is set up an Zugang with the username "max.musterman@example.org" and an activation email (sendEmail=true) is sent to the username. In the activation email, the user is prompted to set a password.

Note:
The reply address in the activation email is the email or username of the subject in the access-token that created the Zugang. If no email address or username is available, the reply goes to noreply@europace2.de.

Requirement for use case 1:

  • the username is Europace-wide unique
  • the username is an e-mail address

Example request:

POST /v2/partner/ABC12/zugang?sendEmail=true HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"benutzername" : "maxi.musterman@example.org"
}

Example response:

{
"partnerId": "ABC12",
"status": "ZUGANG_UNBESTAETIGT",
"benutzername": "maxi.musterman@example.org",
}

Use case 2: Create user for own identity provider.

This use case is most common with banking partners or direct sales organizations where all employees have a company email with their own domain and the employees work exclusively within this organization.

In this use case, the partner's identity provider is configured and the username is used as the user identifier at Europace and the partner's identity provider.

Don't send an activation email (sendEmail=false), because the user already exists in the partner's Identity Provider.

Requirement for use case 2:

  • the username is Europace-wide unique
  • the username is an e-mail address

Example request:

POST /v2/partner/ABC12/zugang?sendEmail=false HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"benutzername" : "maxi.musterman@deineOrganisation.de"
}

Example response:

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"benutzername": "maxi.musterman@deineOrganisation.de",
"identityProviderConfigURL": "https://idp.deineOrganisation.de/auth/realms/.well-known/openid-configuration"
}

Use case 3: Username is not unique Europace-wide or no email address

A user:in is to be created for the own Identity Provider, but the username is Europace-wide not unique or no e-mail address. In this case the field 'benutzername' is not used at all, but only the field 'identityProviderBenutzername'. The identification of the user on the login mask can only be done via a partnerId. The partnerId can be passed to the login mask with the username parameter in some use cases to improve the user experience.

Since it is an existing user in the identity provider of the partner and the identityProvider username is only used here, no activation email is sent, regardless of the sendEmail parameter.

Requirements for use case 3:

  • No further

Example request:

POST /v2/partner/ABC12/zugang HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"identityProviderBenutzername" : "maxi.mustermann01"
}

Example response: Status: HTTP-Code: 201 created

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"identityProviderBenutzername": "maxi.mustermann01",
"identityProviderConfigURL": "https://idp.deineOrganisation.de/auth/realms/.well-known/openid-configuration"
}

Update user-access for identity providers

The Benutzernamen of external identity providers can be changed with Partner API.

Restriction:

  • the field benutzername cannot be changed

Example request:

PATCH /v2/partner/ABC12/zugang HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"identityProviderBenutzername" : "maxi.muster"
}

Example response: Status: HTTP-Code: 200 okay

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"identityProviderBenutzername": "maxi.muster",
"identityProviderConfigURL": "https://idp.deineOrganisation.de/auth/realms/.well-known/openid-configuration"
}

Update partner-permissions

Set user-permissions

Requirements:

  • OAuth token has the scope partner:rechte:schreiben.
  • Caller has a Einstellungsrecht on the partner

Example request:

POST /v2/partner/ABC12/rechte HTTP/1.1Host: api.europace.deAuthorization: Bearer eyJraWQ...
{
"baufismart": {
"baufiSmartNutzen": true,
"echtgeschaeft": true
}
}

Example response:

{
"partnermanagement": {
"apiClientEinstellungenVornehmen": true,
"einstellungenOeffnen": true,
"baufiSmartEinstellungenVornehmen": true,
"partnerAnlegen": true
},
"baufismart": {
"baufiSmartNutzen": true,
"echtgeschaeft": true,
"vorgaengeUeberOberflaecheAnlegen": true,
"ergebnisListeNutzen": true,
"loeschen": false
},
"kreditsmart": {
"echtgeschaeft": true,
"kreditSmartSichtbar": true,
"versicherungAnbieten": true,
"vorgaengeUeberOberflaecheAnlegen": true
}
}

Add access right

In the example, partner ABC12 is getting the Zugriffsrecht from XYZ56. ABC12 can then access the Vorgänge of XYZ56.

Requirements:

  • OAuth token has scope partner:beziehung:schreiben.
  • Caller has Einstellungsrecht on the partner to which the Zugriffsrecht is added
  • Caller has Einstellungsrecht on the partner to which the access is granted

Example request:

POST /v2/partner/ABC12/uebernahmeRechtFuer/XYZ56 HTTP/1.1Host: api.europace.deX-Trace-Id: My-COLLECTION-8301Authorization: Bearer eyJraWQiOiJFT05...

Example response: Status: HTTP-Code: 201 created

Update trade relation

Experimental

This API is experimental and may change or be removed without notice. Do not rely on it for production use yet.

An existing trade relation for a partner and Produktanbieter can be modified using HTTP PATCH. Only the transmitted fields are updated. All other fields are not changed.

Values for ermittelbar and annehmbar can be true, false, or null. Sending both attributes as null restores the inheritance of the trade relation along the hierarchy (see below).

Requirements:

  • OAuth token has the scope partner:beziehungen:schreiben.

Example request:

PATCH /v2/partner/ABC12/handelsbeziehungen/ONE_CLICK_BAUFI HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"ermittelbar": true,
"annehmbar": false
}

Example response: Status: 200 OK

{
"produktanbieterId": "ONE_CLICK_BAUFI",
"produktanbieterName": "Sofortzusage-Bank",
"ermittelbar": true,
"annehmbar": false
}

To restore the inheritance of the trade relation, send both attributes as null:

{
"ermittelbar": null,
"annehmbar": null
}

Restoring inheritance is only supported when the trade relation currently has values maintained directly on the partner. If the trade relation is already inheriting its values, there is nothing to restore and the request is rejected: Status: 422 Unprocessable Entity

Inheritance can only be restored fully. A request that sets exactly one of ermittelbar and annehmbar to null while the other contains a value, e.g.:

{
"ermittelbar": null,
"annehmbar": true
}

is rejected: Status: 400 Bad Request

Support

If you have any questions or problems, you can contact devsupport@europace2.de.

About

Dokumentation für Partner API

Topics

Resources

Code of conduct

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

146 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Partner API

The Partner API enables automation of Europace's user management. The partner management (settings) is used by Europace partners to map their own user and rights structure.

Partners can be users as well as organizations like companies, departments or teams. Each partner is created in the hierarchy tree as Plakette of type Person or Organisation.


advisorloanProvidermortgageLoanconsumerLoan

AuthenticationGitHub release

Pattern

Dokumentation

YAMLYAML

For translation of our german domain-specific-language the glossary will support you.

Quick Start

To help you test our APIs and your use case as quickly as possible, we've put together a Postman Collection for you.

Authentication

Please use Authentication to get access to the API. The OAuth2 client requires the following scopes:

ScopeAPI-Usecase
partner:plakette:anlegenAllows to create new Plaketten
partner:plakette:lesenAllows to read partner data
partner:plakette:schreibenAllows to write partner data
partner:beziehungen:lesenAllows to read relations between partners. Allows to retrieve UebernahmeRecht, Administrierbare, Uebernehmbare and Handelsbeziehungen
partner:beziehungen:schreibenAllows to write relations between partners. Allows to add UebernahmeRecht and update Handelsbeziehungen
partner:rechte:lesenAllows to read partner rights
partner:rechte:schreibenAllows to write partner rights

Use cases of the API

get information

manage partner

Get contact details of a partner

Contact details can be retrieved for all trading partners to support collaboration.

Requirements:

  • the caller has a trading relationship with the partner and/or
  • the caller has an Zugriffsrecht to the partner and/or
  • the caller has a Einstellungsrecht to the partner and/or
  • the caller is above the partner in the hierarchy

Example request:

curl --location --request GET 'https://api.europace.de/v2/partner/ABC12/kontaktdaten' \
--header 'Content-Type: application/json' \
--header 'X-TraceId: {{meineTraceId}}' \
--header 'Authorization: Bearer {{access_token}}'

Example response Person:

{
"person": {
"anrede": "FRAU",
"vorname": "Maxi",
"nachname": "Musterfrau",
"titelFunktion": "Baufi-Beraterin",
"geburtsdatum": "1995-05-05"
},
"firmenName": "Immofin AG",
"telefon": "030-12345-0",
"mobiltelefon": "0151-12345678",
"email": "maxi.musterfrau@immofin.de",
"anschrift": {
"strasse": "Teststr.",
"hausnummer": "69",
"plz": "10557",
"ort": "Berlin"
},
"Paragraph34c": {
"registrierungsNummer": "D-W-7943497238942",
"aufsichtsBehörde": "IHK Berlin, Fasanenstr. 85, 10623 Berlin"
}
}

Example response Organisation:

{
"organisation": {
"organisationsName": "Immofin"
},
"firmenName": "Immofin AG",
"telefon": "030-12345-0",
"fax": "030-12345-678",
"email": "maxi.musterfrau@immofin.de",
"website": "http://www.immofin.de",
"anschrift": {
"strasse": "Teststr.",
"hausnummer": "69",
"plz": "10557",
"ort": "Berlin"
},
"Paragraph34c": {
"registrierungsNummer": "D-W-7943497238942",
"aufsichtsBehörde": "IHK Berlin, Fasanenstr. 85, 10623 Berlin"
}
}

Get partner data

Requirements:

  • OAuth token has scope partner:plakette:lesen.
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

curl --location --request GET 'https://api.europace.de/v2/partner/ABC12' \
--header 'Content-Type: application/json' \
--header 'X-TraceId: {{meineTraceId}}' \
--header 'Authorization: Bearer {{access_token}}'

The inheritance of values of certain attributes along the hierarchy, which is known from the settings, is reflected in the API. Inherited values are therefore delivered.

Example response:

{
"partnerId": "ABC12",
"typ": "PERSON",
"avatarUrl": "https://www.europace2.de/partnermanagement/d71c58aeaed4022384b169f83e0d8842.avatar?anonymousAvatar=BENUTZER",
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde":"Musterbehoerde",
"registrierungsnummer":"987654",
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456",
"taetigFuerProduktanbieter": [
{
"produktAnbieterId": "ONE_CLICK_BAUFI",
"produktAnbieter": "Sofortzusage-Bank"
},
{
"produktAnbieterId": "PILOT",
"produktAnbieter": "Pilotproduktanbieter"
}
]
}

Get partners by externe partner id

Requirements:

  • OAuth token has scope partner:plakette:lesen.
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

GET /v2/partners?externePartnerId=11111Accept: application/jsonAuthorization: Bearer eyJraWQiOiJRM

Example response:

{
"partners": [
{
"partnerId": "EDY92",
"href": "http://localhost:8080/v2/partner/EDY92"
},
{
"partnerId": "YRA59",
"href": "http://localhost:8080/v2/partner/YRA59"
},
{
"partnerId": "CUI17",
"href": "http://localhost:8080/v2/partner/CUI17"
}
],
"total": 3
}

Get license information for a partner

Requirements:

  • OAuth token has scope partner:rechte:lesen

Example request:

GET /v2/partner/ABC12/lizenzenHost: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: request-2020-08-28-07-59

Example response:

{
"EUROPACE_ONE": {
"aktiv": true,
"aktiviertSeit": "2025-02-01"
}
}

Get partner-code

Partnerkennzeichen identify a Vertriebsorganisation on the Produktanbieter-side.

Requirements:

  • OAuth token has scope partner:plakette:lesen
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

GET /v2/partner/ABC12/partnerkennzeichen HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: request-2020-08-28-07-59Accept: application/json

Inherited values are therefore not delivered. The inheritance of values of certain attributes along the hierarchy, which is known from the settings, is not reflected in the API.

Example response: Status: 200 OK

{
"dslSapGeschaeftspartnerNummerFuerRatenkredit": "cdts-dsl-sap-vo",
"dslVertriebsWegSchluesselFuerRatenkredit": "1899026629",
"dkbVertriebsIdFuerRatenkredit": "cdts-dkb-vertrieb",
"kennzeichenIngDiba": {
"vermittlerNummer": "9800002186",
"vermittlerVorname": "wer",
"vermittlerNachname": "wer",
"vermittlerNummerFuerRatenkredit": "cdts-ing-diba-vermittler"
},
"kennzeichenErgo": {},
"kennzeichenBhw": {
"vgeNummer": "6248/205585.0",
"orgaNummer": "ORGA123",
"zurIdentifikationsPruefungLegitimiert": "false"
},
"lbsOstVermittlerNummer": "lbsost-werwer-vermittler",
"lbsShhVermittlerNummer": "lbs-ssh-ldapvermittler",
"lbsSuedwestVermittlerNummer": "lbs-südwest-ldapvermittler",
"lbsWestVermittlerNummer": "lbs-west-ldapvermittler",
"allianzVertreterNummer": "01/012/0123",
"axaGeschaeftsPartnerNummer": "MA 00352",
"dslVermittlerGruppenSchluessel": "1200",
"bshVoNummer": "abcdefghijklmnopqrstuvwxyz",
"bshAkquisitionsWeg": "AW1",
"bshBlzVertriebsbank": "1234567890",
"dzHypVermittlerNummer": "1234",
"alteLeipzigerVerbundVermittlerNummer": "42",
"rundvBankAgenturNummer": "RV_BAN",
"rundvBlzVertriebsbank": "RV_BLZ",
"vertriebsOrganisation": {
"name": "Musterbank",
"firma": "Musterbank AG",
"vertriebsOrganisationsId": "MUSTERBANK_AG",
"partnerId": "TYL29"
}
}

Get user-access

To determine the current Zugang, this can be read out.

Requirements:

  • OAuth token has scope partner:plakette:lesen
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

GET /v2/partner/ABC12/zugang HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json

Example response, for a partner authenticating to the Europace identity provider (Europace password): Status: 200 OK

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"benutzername": "maxi.musterman@example.org",
}

Example response, for a partner authenticating with its own identity provider (e.g. Actice Directory): Status: 200 OK

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"identityProviderBenutzername": "maxi.muster",
"identityProviderConfigURL": "https://auth.deineOrganisation.de/adfs/.well-known/openid-configuration"
}

Get partner-permissions

Requirements for all use cases and examples:

  • OAuth token has scope partner:rechte:lesen
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Get user-permissions

Example request:

GET /v2/partner/ABC12/rechte HTTP/1.1Host: api.europace.deAuthorization: Bearer eyJraWQ

Example response:

{
"partnermanagement": {
"apiClientEinstellungenVornehmen": true,
"einstellungenOeffnen": true,
"baufiSmartEinstellungenVornehmen": true,
"partnerAnlegen": true
},
"baufismart": {
"baufiSmartNutzen": true,
"echtgeschaeft": true,
"vorgaengeUeberOberflaecheAnlegen": true,
"ergebnisListeNutzen": true,
"loeschen": false
},
"kreditsmart": {
"echtgeschaeft": true,
"kreditSmartSichtbar": true,
"versicherungAnbieten": true,
"vorgaengeUeberOberflaecheAnlegen": true
}
}

Get access right

The Zugriffrecht entitles partners to read and write access to all Vorgänge of another partner.

Which partners do I have access to?

Example request:

GET /v2/partner/ABC12/uebernehmbare HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJContent-Type: application/jsonX-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{ "content": [ { "partnerId":"XYZ15" } ]
}

Do I have access to Partner XYZ15?

Example request:

GET /v2/partner/ABC12/uebernahmeRechtFuer/XYZ15 HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOi...Content-Type: application/jsonX-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{
"partner": {
"partnerId": "XYZ15",
"gesperrt": false
},
"uebernehmbar": true
}

Get setting right

Returns all partners for which this partner is allowed to change the data and authorizations or retrieve the reporting.

At least the partner itself is returned, since everyone may at least set itself or retrieve its own reporting.

In order to achieve a better performance, the implicitly administrable partners have been omitted in the partner-api. To determine these, it is necessary to iterate over the subordinates of the result list.

Requirements:

  • OAuth token has scope partner:plakette:lesen.
  • Each partner may make changes to himself or other partners if he has the Einstellungsrecht. This means that partner data or authorizations can be adjusted. Authorizations can only be assigned if the executing partner has them himself.

Which partners can I manage?

Example request:

GET /v2/partner/ABC12/administrierbare HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json

Example response:

{ "content": [ { "partnerId":"XYZ15" } ]
}

Get trade relations

Experimental

This API is experimental and may change or be removed without notice. Do not rely on it for production use yet.

Handelsbeziehungen describe the business relationship between a partner and a Produktanbieter: whether business may be initiated with the product provider (ermittelbar) and whether business may be accepted from it (annehmbar).

The visible effective trade relations are returned. The inheritance of these values along the hierarchy, which is known from the settings, is reflected in the returned effective values.

Requirements:

  • OAuth token has scope partner:beziehungen:lesen.

Get all trade relations of a partner

Example request:

GET /v2/partner/ABC12/handelsbeziehungen HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{
"total": 2,
"handelsbeziehungen": [
{
"produktanbieterId": "ONE_CLICK_BAUFI",
"produktanbieterName": "Sofortzusage-Bank",
"ermittelbar": true,
"annehmbar": false
},
{
"produktanbieterId": "PILOT",
"produktanbieterName": "Pilotproduktanbieter",
"ermittelbar": true,
"annehmbar": true
}
]
}

Get a single trade relation

Example request:

GET /v2/partner/ABC12/handelsbeziehungen/ONE_CLICK_BAUFI HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{
"produktanbieterId": "ONE_CLICK_BAUFI",
"produktanbieterName": "Sofortzusage-Bank",
"ermittelbar": true,
"annehmbar": false
}

Create partner

Creating a new partner is always done below an existing partner: https://api.europace.de/v2/partner/{PartnerId}/untergeordnete

Requirements:

  • OAuth token has scope partner:plakette:anlegen.
  • Caller is a partner of type Person
  • Caller has the may create organizational units permission.
  • Caller has Einstellungsrechte on the partner under which the new partner is to be created

Example request:

POST /v2/partner/ABC12/untergeordnete HTTP/1.1Host: api.europace.deAccept: application/jsonX-Trace-Id: ff-request-2020-08-28-07-55Authorization: Bearer eyJraWQiO...Content-Type: application/json
{
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

The following rules apply to server-side evaluation:

  • unknown attributes are ignored.
  • For organizations, person-specific attributes are ignored.
  • For persons, organization-specific attributes are ignored.
  • Empty attributes for strings ("") are ignored.
  • "partnerId" cannot be set and will be ignored.
  • Rights are set to false for persons if not specified.

The body of the response contains the current master data in JSON format. This can be used for success control. Attributes that are set on the server side or for which there are default values are always included.

The HTTP header "Location" contains the url of the newly created partner.

Example response:

{
"partnerId": "ABC12",
"typ": "PERSON",
"avatarUrl": "https://www.europace2.de/partnermanagement/d71c58aeaed4022384b169f83e0d8842.avatar?anonymousAvatar=BENUTZER",
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde":"Musterbehoerde",
"registrierungsnummer":"987654",
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

Note

For a successful offer acceptance in BaufiSmart it is necessary for the following processes that the following attributes are maintained in the partner management for the account manager of the transaction:

  • anrede
  • vorname
  • nachname
  • anschrift
  • bankverbindung
  • email

Update partner data

Attributes of a partner can be modified using HTTP PATCH. This overwrites only those attributes that are included in the PATCH request. All other attributes are not changed.

To make changes to a partner, the caller needs Einstellungsrechte.

Attributes that can be changed via PATCH

  • anrede
  • anschrift
  • aufsichtsbehoerde (deprecated, use aufsichtsbehoerde34i)
  • aufsichtsbehoerde34i
  • aufsichtsbehoerde34k
  • bankverbindung
  • email
  • externePartnerId
  • faxnummer
  • firmenname
  • firmennameZusatz
  • geburtsdatum
  • kreditsachbearbeiter
  • mobilnummer
  • name
  • vorname
  • nachname
  • registrierungsnummer (deprecated, use registrierungsnummer34i)
  • registrierungsnummer34i
  • registrierungsnummer34k
  • telefonnummer
  • titelFunktion
  • webseite

Note

aufsichtsbehoerde and registrierungsnummer hold the data of the Gewerbeerlaubnis according to § 34i GewO (Immobiliardarlehensvermittlung). They are superseded by the explicit fields aufsichtsbehoerde34i / registrierungsnummer34i, which read and write the same values and remain interchangeable with them. If both a deprecated field and its ...34i counterpart are sent in one request, the ...34i value is applied.

aufsichtsbehoerde34k and registrierungsnummer34k hold the data of the Gewerbeerlaubnis according to § 34k GewO (Allgemeine Verbraucherdarlehensvermittlung). All four fields can be maintained independently of each other.

Example

Requirements:

  • OAuth token has the scope partner:plakette:schreiben.
  • Caller has Einstellungsrechte on the partner

Example request:

PATCH /v2/partner/ABC12 HTTP/1.1Host: api.europace.deAuthorization: Bearer eyJraWQiOiJWRDZZ...Accept: application/jsonX-TraceId: ff-request-2020-08-28Content-Type: application/json
{
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

The following rules apply to server-side evaluation:

  • empty attributes for strings ("") delete the existing value.
  • unknown attributes are ignored.
  • partnerId cannot be changed and will be ignored.
  • type is not changeable and will be ignored.
  • if a field expects an ENUM, a value must be specified (Anrede)

The body of the response contains the current partner data in JSON format. This can be used for success control. Attributes that were already set or for which there are default values are always included.

Example response:

{
"partnerId":"ABC12",
"vorname":"Max",
"nachname":"Mustermann",
"typ":"PERSON",
"email":"max.musterman@exmaple.org",
"avatar":"https://ep2.mtp.rz-hypoport.local/partnermanagement/d71c58aeaed4022384b169f83e0d8842.avatar?anonymousAvatar=BENUTZER",
"gesperrt":false,
"kreditsachbearbeiter":true,
"parent":{
"partnerId":"ABC12"
},
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"anrede":"HERR",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"referenzFeld":"Test Ref",
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051"
},
"aufsichtsbehoerde":"Musterbehoerde",
"registrierungsnummer":"987654",
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

Create or update user-access

A newly created partner needs a Zugang to be able to log in to Europace with username. The Zugang can be created by the settings-frontend (partner management) or the partner-API.

Create user-access

Requirements for all use cases and examples:

  • OAuth token has scope partner:plakette:schreiben
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Use case 1: Create Europace user.

The user with the PartnerId:ABC12 is set up an Zugang with the username "max.musterman@example.org" and an activation email (sendEmail=true) is sent to the username. In the activation email, the user is prompted to set a password.

Note:
The reply address in the activation email is the email or username of the subject in the access-token that created the Zugang. If no email address or username is available, the reply goes to noreply@europace2.de.

Requirement for use case 1:

  • the username is Europace-wide unique
  • the username is an e-mail address

Example request:

POST /v2/partner/ABC12/zugang?sendEmail=true HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"benutzername" : "maxi.musterman@example.org"
}

Example response:

{
"partnerId": "ABC12",
"status": "ZUGANG_UNBESTAETIGT",
"benutzername": "maxi.musterman@example.org",
}

Use case 2: Create user for own identity provider.

This use case is most common with banking partners or direct sales organizations where all employees have a company email with their own domain and the employees work exclusively within this organization.

In this use case, the partner's identity provider is configured and the username is used as the user identifier at Europace and the partner's identity provider.

Don't send an activation email (sendEmail=false), because the user already exists in the partner's Identity Provider.

Requirement for use case 2:

  • the username is Europace-wide unique
  • the username is an e-mail address

Example request:

POST /v2/partner/ABC12/zugang?sendEmail=false HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"benutzername" : "maxi.musterman@deineOrganisation.de"
}

Example response:

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"benutzername": "maxi.musterman@deineOrganisation.de",
"identityProviderConfigURL": "https://idp.deineOrganisation.de/auth/realms/.well-known/openid-configuration"
}

Use case 3: Username is not unique Europace-wide or no email address

A user:in is to be created for the own Identity Provider, but the username is Europace-wide not unique or no e-mail address. In this case the field 'benutzername' is not used at all, but only the field 'identityProviderBenutzername'. The identification of the user on the login mask can only be done via a partnerId. The partnerId can be passed to the login mask with the username parameter in some use cases to improve the user experience.

Since it is an existing user in the identity provider of the partner and the identityProvider username is only used here, no activation email is sent, regardless of the sendEmail parameter.

Requirements for use case 3:

  • No further

Example request:

POST /v2/partner/ABC12/zugang HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"identityProviderBenutzername" : "maxi.mustermann01"
}

Example response: Status: HTTP-Code: 201 created

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"identityProviderBenutzername": "maxi.mustermann01",
"identityProviderConfigURL": "https://idp.deineOrganisation.de/auth/realms/.well-known/openid-configuration"
}

Update user-access for identity providers

The Benutzernamen of external identity providers can be changed with Partner API.

Restriction:

  • the field benutzername cannot be changed

Example request:

PATCH /v2/partner/ABC12/zugang HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"identityProviderBenutzername" : "maxi.muster"
}

Example response: Status: HTTP-Code: 200 okay

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"identityProviderBenutzername": "maxi.muster",
"identityProviderConfigURL": "https://idp.deineOrganisation.de/auth/realms/.well-known/openid-configuration"
}

Update partner-permissions

Set user-permissions

Requirements:

  • OAuth token has the scope partner:rechte:schreiben.
  • Caller has a Einstellungsrecht on the partner

Example request:

POST /v2/partner/ABC12/rechte HTTP/1.1Host: api.europace.deAuthorization: Bearer eyJraWQ...
{
"baufismart": {
"baufiSmartNutzen": true,
"echtgeschaeft": true
}
}

Example response:

{
"partnermanagement": {
"apiClientEinstellungenVornehmen": true,
"einstellungenOeffnen": true,
"baufiSmartEinstellungenVornehmen": true,
"partnerAnlegen": true
},
"baufismart": {
"baufiSmartNutzen": true,
"echtgeschaeft": true,
"vorgaengeUeberOberflaecheAnlegen": true,
"ergebnisListeNutzen": true,
"loeschen": false
},
"kreditsmart": {
"echtgeschaeft": true,
"kreditSmartSichtbar": true,
"versicherungAnbieten": true,
"vorgaengeUeberOberflaecheAnlegen": true
}
}

Add access right

In the example, partner ABC12 is getting the Zugriffsrecht from XYZ56. ABC12 can then access the Vorgänge of XYZ56.

Requirements:

  • OAuth token has scope partner:beziehung:schreiben.
  • Caller has Einstellungsrecht on the partner to which the Zugriffsrecht is added
  • Caller has Einstellungsrecht on the partner to which the access is granted

Example request:

POST /v2/partner/ABC12/uebernahmeRechtFuer/XYZ56 HTTP/1.1Host: api.europace.deX-Trace-Id: My-COLLECTION-8301Authorization: Bearer eyJraWQiOiJFT05...

Example response: Status: HTTP-Code: 201 created

Update trade relation

Experimental

This API is experimental and may change or be removed without notice. Do not rely on it for production use yet.

An existing trade relation for a partner and Produktanbieter can be modified using HTTP PATCH. Only the transmitted fields are updated. All other fields are not changed.

Values for ermittelbar and annehmbar can be true, false, or null. Sending both attributes as null restores the inheritance of the trade relation along the hierarchy (see below).

Requirements:

  • OAuth token has the scope partner:beziehungen:schreiben.

Example request:

PATCH /v2/partner/ABC12/handelsbeziehungen/ONE_CLICK_BAUFI HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"ermittelbar": true,
"annehmbar": false
}

Example response: Status: 200 OK

{
"produktanbieterId": "ONE_CLICK_BAUFI",
"produktanbieterName": "Sofortzusage-Bank",
"ermittelbar": true,
"annehmbar": false
}

To restore the inheritance of the trade relation, send both attributes as null:

{
"ermittelbar": null,
"annehmbar": null
}

Restoring inheritance is only supported when the trade relation currently has values maintained directly on the partner. If the trade relation is already inheriting its values, there is nothing to restore and the request is rejected: Status: 422 Unprocessable Entity

Inheritance can only be restored fully. A request that sets exactly one of ermittelbar and annehmbar to null while the other contains a value, e.g.:

{
"ermittelbar": null,
"annehmbar": true
}

is rejected: Status: 400 Bad Request

Support

If you have any questions or problems, you can contact devsupport@europace2.de.

About

Dokumentation für Partner API

Topics

Resources

Code of conduct

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

146 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Partner API

The Partner API enables automation of Europace's user management. The partner management (settings) is used by Europace partners to map their own user and rights structure.

Partners can be users as well as organizations like companies, departments or teams. Each partner is created in the hierarchy tree as Plakette of type Person or Organisation.


advisorloanProvidermortgageLoanconsumerLoan

AuthenticationGitHub release

Pattern

Dokumentation

YAMLYAML

For translation of our german domain-specific-language the glossary will support you.

Quick Start

To help you test our APIs and your use case as quickly as possible, we've put together a Postman Collection for you.

Authentication

Please use Authentication to get access to the API. The OAuth2 client requires the following scopes:

ScopeAPI-Usecase
partner:plakette:anlegenAllows to create new Plaketten
partner:plakette:lesenAllows to read partner data
partner:plakette:schreibenAllows to write partner data
partner:beziehungen:lesenAllows to read relations between partners. Allows to retrieve UebernahmeRecht, Administrierbare, Uebernehmbare and Handelsbeziehungen
partner:beziehungen:schreibenAllows to write relations between partners. Allows to add UebernahmeRecht and update Handelsbeziehungen
partner:rechte:lesenAllows to read partner rights
partner:rechte:schreibenAllows to write partner rights

Use cases of the API

get information

manage partner

Get contact details of a partner

Contact details can be retrieved for all trading partners to support collaboration.

Requirements:

  • the caller has a trading relationship with the partner and/or
  • the caller has an Zugriffsrecht to the partner and/or
  • the caller has a Einstellungsrecht to the partner and/or
  • the caller is above the partner in the hierarchy

Example request:

curl --location --request GET 'https://api.europace.de/v2/partner/ABC12/kontaktdaten' \
--header 'Content-Type: application/json' \
--header 'X-TraceId: {{meineTraceId}}' \
--header 'Authorization: Bearer {{access_token}}'

Example response Person:

{
"person": {
"anrede": "FRAU",
"vorname": "Maxi",
"nachname": "Musterfrau",
"titelFunktion": "Baufi-Beraterin",
"geburtsdatum": "1995-05-05"
},
"firmenName": "Immofin AG",
"telefon": "030-12345-0",
"mobiltelefon": "0151-12345678",
"email": "maxi.musterfrau@immofin.de",
"anschrift": {
"strasse": "Teststr.",
"hausnummer": "69",
"plz": "10557",
"ort": "Berlin"
},
"Paragraph34c": {
"registrierungsNummer": "D-W-7943497238942",
"aufsichtsBehörde": "IHK Berlin, Fasanenstr. 85, 10623 Berlin"
}
}

Example response Organisation:

{
"organisation": {
"organisationsName": "Immofin"
},
"firmenName": "Immofin AG",
"telefon": "030-12345-0",
"fax": "030-12345-678",
"email": "maxi.musterfrau@immofin.de",
"website": "http://www.immofin.de",
"anschrift": {
"strasse": "Teststr.",
"hausnummer": "69",
"plz": "10557",
"ort": "Berlin"
},
"Paragraph34c": {
"registrierungsNummer": "D-W-7943497238942",
"aufsichtsBehörde": "IHK Berlin, Fasanenstr. 85, 10623 Berlin"
}
}

Get partner data

Requirements:

  • OAuth token has scope partner:plakette:lesen.
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

curl --location --request GET 'https://api.europace.de/v2/partner/ABC12' \
--header 'Content-Type: application/json' \
--header 'X-TraceId: {{meineTraceId}}' \
--header 'Authorization: Bearer {{access_token}}'

The inheritance of values of certain attributes along the hierarchy, which is known from the settings, is reflected in the API. Inherited values are therefore delivered.

Example response:

{
"partnerId": "ABC12",
"typ": "PERSON",
"avatarUrl": "https://www.europace2.de/partnermanagement/d71c58aeaed4022384b169f83e0d8842.avatar?anonymousAvatar=BENUTZER",
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde":"Musterbehoerde",
"registrierungsnummer":"987654",
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456",
"taetigFuerProduktanbieter": [
{
"produktAnbieterId": "ONE_CLICK_BAUFI",
"produktAnbieter": "Sofortzusage-Bank"
},
{
"produktAnbieterId": "PILOT",
"produktAnbieter": "Pilotproduktanbieter"
}
]
}

Get partners by externe partner id

Requirements:

  • OAuth token has scope partner:plakette:lesen.
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

GET /v2/partners?externePartnerId=11111Accept: application/jsonAuthorization: Bearer eyJraWQiOiJRM

Example response:

{
"partners": [
{
"partnerId": "EDY92",
"href": "http://localhost:8080/v2/partner/EDY92"
},
{
"partnerId": "YRA59",
"href": "http://localhost:8080/v2/partner/YRA59"
},
{
"partnerId": "CUI17",
"href": "http://localhost:8080/v2/partner/CUI17"
}
],
"total": 3
}

Get license information for a partner

Requirements:

  • OAuth token has scope partner:rechte:lesen

Example request:

GET /v2/partner/ABC12/lizenzenHost: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: request-2020-08-28-07-59

Example response:

{
"EUROPACE_ONE": {
"aktiv": true,
"aktiviertSeit": "2025-02-01"
}
}

Get partner-code

Partnerkennzeichen identify a Vertriebsorganisation on the Produktanbieter-side.

Requirements:

  • OAuth token has scope partner:plakette:lesen
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

GET /v2/partner/ABC12/partnerkennzeichen HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: request-2020-08-28-07-59Accept: application/json

Inherited values are therefore not delivered. The inheritance of values of certain attributes along the hierarchy, which is known from the settings, is not reflected in the API.

Example response: Status: 200 OK

{
"dslSapGeschaeftspartnerNummerFuerRatenkredit": "cdts-dsl-sap-vo",
"dslVertriebsWegSchluesselFuerRatenkredit": "1899026629",
"dkbVertriebsIdFuerRatenkredit": "cdts-dkb-vertrieb",
"kennzeichenIngDiba": {
"vermittlerNummer": "9800002186",
"vermittlerVorname": "wer",
"vermittlerNachname": "wer",
"vermittlerNummerFuerRatenkredit": "cdts-ing-diba-vermittler"
},
"kennzeichenErgo": {},
"kennzeichenBhw": {
"vgeNummer": "6248/205585.0",
"orgaNummer": "ORGA123",
"zurIdentifikationsPruefungLegitimiert": "false"
},
"lbsOstVermittlerNummer": "lbsost-werwer-vermittler",
"lbsShhVermittlerNummer": "lbs-ssh-ldapvermittler",
"lbsSuedwestVermittlerNummer": "lbs-südwest-ldapvermittler",
"lbsWestVermittlerNummer": "lbs-west-ldapvermittler",
"allianzVertreterNummer": "01/012/0123",
"axaGeschaeftsPartnerNummer": "MA 00352",
"dslVermittlerGruppenSchluessel": "1200",
"bshVoNummer": "abcdefghijklmnopqrstuvwxyz",
"bshAkquisitionsWeg": "AW1",
"bshBlzVertriebsbank": "1234567890",
"dzHypVermittlerNummer": "1234",
"alteLeipzigerVerbundVermittlerNummer": "42",
"rundvBankAgenturNummer": "RV_BAN",
"rundvBlzVertriebsbank": "RV_BLZ",
"vertriebsOrganisation": {
"name": "Musterbank",
"firma": "Musterbank AG",
"vertriebsOrganisationsId": "MUSTERBANK_AG",
"partnerId": "TYL29"
}
}

Get user-access

To determine the current Zugang, this can be read out.

Requirements:

  • OAuth token has scope partner:plakette:lesen
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Example request:

GET /v2/partner/ABC12/zugang HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json

Example response, for a partner authenticating to the Europace identity provider (Europace password): Status: 200 OK

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"benutzername": "maxi.musterman@example.org",
}

Example response, for a partner authenticating with its own identity provider (e.g. Actice Directory): Status: 200 OK

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"identityProviderBenutzername": "maxi.muster",
"identityProviderConfigURL": "https://auth.deineOrganisation.de/adfs/.well-known/openid-configuration"
}

Get partner-permissions

Requirements for all use cases and examples:

  • OAuth token has scope partner:rechte:lesen
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Get user-permissions

Example request:

GET /v2/partner/ABC12/rechte HTTP/1.1Host: api.europace.deAuthorization: Bearer eyJraWQ

Example response:

{
"partnermanagement": {
"apiClientEinstellungenVornehmen": true,
"einstellungenOeffnen": true,
"baufiSmartEinstellungenVornehmen": true,
"partnerAnlegen": true
},
"baufismart": {
"baufiSmartNutzen": true,
"echtgeschaeft": true,
"vorgaengeUeberOberflaecheAnlegen": true,
"ergebnisListeNutzen": true,
"loeschen": false
},
"kreditsmart": {
"echtgeschaeft": true,
"kreditSmartSichtbar": true,
"versicherungAnbieten": true,
"vorgaengeUeberOberflaecheAnlegen": true
}
}

Get access right

The Zugriffrecht entitles partners to read and write access to all Vorgänge of another partner.

Which partners do I have access to?

Example request:

GET /v2/partner/ABC12/uebernehmbare HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJContent-Type: application/jsonX-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{ "content": [ { "partnerId":"XYZ15" } ]
}

Do I have access to Partner XYZ15?

Example request:

GET /v2/partner/ABC12/uebernahmeRechtFuer/XYZ15 HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOi...Content-Type: application/jsonX-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{
"partner": {
"partnerId": "XYZ15",
"gesperrt": false
},
"uebernehmbar": true
}

Get setting right

Returns all partners for which this partner is allowed to change the data and authorizations or retrieve the reporting.

At least the partner itself is returned, since everyone may at least set itself or retrieve its own reporting.

In order to achieve a better performance, the implicitly administrable partners have been omitted in the partner-api. To determine these, it is necessary to iterate over the subordinates of the result list.

Requirements:

  • OAuth token has scope partner:plakette:lesen.
  • Each partner may make changes to himself or other partners if he has the Einstellungsrecht. This means that partner data or authorizations can be adjusted. Authorizations can only be assigned if the executing partner has them himself.

Which partners can I manage?

Example request:

GET /v2/partner/ABC12/administrierbare HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json

Example response:

{ "content": [ { "partnerId":"XYZ15" } ]
}

Get trade relations

Experimental

This API is experimental and may change or be removed without notice. Do not rely on it for production use yet.

Handelsbeziehungen describe the business relationship between a partner and a Produktanbieter: whether business may be initiated with the product provider (ermittelbar) and whether business may be accepted from it (annehmbar).

The visible effective trade relations are returned. The inheritance of these values along the hierarchy, which is known from the settings, is reflected in the returned effective values.

Requirements:

  • OAuth token has scope partner:beziehungen:lesen.

Get all trade relations of a partner

Example request:

GET /v2/partner/ABC12/handelsbeziehungen HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{
"total": 2,
"handelsbeziehungen": [
{
"produktanbieterId": "ONE_CLICK_BAUFI",
"produktanbieterName": "Sofortzusage-Bank",
"ermittelbar": true,
"annehmbar": false
},
{
"produktanbieterId": "PILOT",
"produktanbieterName": "Pilotproduktanbieter",
"ermittelbar": true,
"annehmbar": true
}
]
}

Get a single trade relation

Example request:

GET /v2/partner/ABC12/handelsbeziehungen/ONE_CLICK_BAUFI HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: ff-request-2020-08-28-07-59

Example response: Status: 200 OK

{
"produktanbieterId": "ONE_CLICK_BAUFI",
"produktanbieterName": "Sofortzusage-Bank",
"ermittelbar": true,
"annehmbar": false
}

Create partner

Creating a new partner is always done below an existing partner: https://api.europace.de/v2/partner/{PartnerId}/untergeordnete

Requirements:

  • OAuth token has scope partner:plakette:anlegen.
  • Caller is a partner of type Person
  • Caller has the may create organizational units permission.
  • Caller has Einstellungsrechte on the partner under which the new partner is to be created

Example request:

POST /v2/partner/ABC12/untergeordnete HTTP/1.1Host: api.europace.deAccept: application/jsonX-Trace-Id: ff-request-2020-08-28-07-55Authorization: Bearer eyJraWQiO...Content-Type: application/json
{
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

The following rules apply to server-side evaluation:

  • unknown attributes are ignored.
  • For organizations, person-specific attributes are ignored.
  • For persons, organization-specific attributes are ignored.
  • Empty attributes for strings ("") are ignored.
  • "partnerId" cannot be set and will be ignored.
  • Rights are set to false for persons if not specified.

The body of the response contains the current master data in JSON format. This can be used for success control. Attributes that are set on the server side or for which there are default values are always included.

The HTTP header "Location" contains the url of the newly created partner.

Example response:

{
"partnerId": "ABC12",
"typ": "PERSON",
"avatarUrl": "https://www.europace2.de/partnermanagement/d71c58aeaed4022384b169f83e0d8842.avatar?anonymousAvatar=BENUTZER",
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde":"Musterbehoerde",
"registrierungsnummer":"987654",
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

Note

For a successful offer acceptance in BaufiSmart it is necessary for the following processes that the following attributes are maintained in the partner management for the account manager of the transaction:

  • anrede
  • vorname
  • nachname
  • anschrift
  • bankverbindung
  • email

Update partner data

Attributes of a partner can be modified using HTTP PATCH. This overwrites only those attributes that are included in the PATCH request. All other attributes are not changed.

To make changes to a partner, the caller needs Einstellungsrechte.

Attributes that can be changed via PATCH

  • anrede
  • anschrift
  • aufsichtsbehoerde (deprecated, use aufsichtsbehoerde34i)
  • aufsichtsbehoerde34i
  • aufsichtsbehoerde34k
  • bankverbindung
  • email
  • externePartnerId
  • faxnummer
  • firmenname
  • firmennameZusatz
  • geburtsdatum
  • kreditsachbearbeiter
  • mobilnummer
  • name
  • vorname
  • nachname
  • registrierungsnummer (deprecated, use registrierungsnummer34i)
  • registrierungsnummer34i
  • registrierungsnummer34k
  • telefonnummer
  • titelFunktion
  • webseite

Note

aufsichtsbehoerde and registrierungsnummer hold the data of the Gewerbeerlaubnis according to § 34i GewO (Immobiliardarlehensvermittlung). They are superseded by the explicit fields aufsichtsbehoerde34i / registrierungsnummer34i, which read and write the same values and remain interchangeable with them. If both a deprecated field and its ...34i counterpart are sent in one request, the ...34i value is applied.

aufsichtsbehoerde34k and registrierungsnummer34k hold the data of the Gewerbeerlaubnis according to § 34k GewO (Allgemeine Verbraucherdarlehensvermittlung). All four fields can be maintained independently of each other.

Example

Requirements:

  • OAuth token has the scope partner:plakette:schreiben.
  • Caller has Einstellungsrechte on the partner

Example request:

PATCH /v2/partner/ABC12 HTTP/1.1Host: api.europace.deAuthorization: Bearer eyJraWQiOiJWRDZZ...Accept: application/jsonX-TraceId: ff-request-2020-08-28Content-Type: application/json
{
"anrede":"HERR",
"vorname":"Max",
"nachname":"Mustermann",
"email":"max.musterman@exmaple.org",
"gesperrt":false,
"kreditsachbearbeiter":true,
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051",
"referenzFeld":"Test Ref"
},
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

The following rules apply to server-side evaluation:

  • empty attributes for strings ("") delete the existing value.
  • unknown attributes are ignored.
  • partnerId cannot be changed and will be ignored.
  • type is not changeable and will be ignored.
  • if a field expects an ENUM, a value must be specified (Anrede)

The body of the response contains the current partner data in JSON format. This can be used for success control. Attributes that were already set or for which there are default values are always included.

Example response:

{
"partnerId":"ABC12",
"vorname":"Max",
"nachname":"Mustermann",
"typ":"PERSON",
"email":"max.musterman@exmaple.org",
"avatar":"https://ep2.mtp.rz-hypoport.local/partnermanagement/d71c58aeaed4022384b169f83e0d8842.avatar?anonymousAvatar=BENUTZER",
"gesperrt":false,
"kreditsachbearbeiter":true,
"parent":{
"partnerId":"ABC12"
},
"externePartnerId":"123456",
"titelFunktion":"Softwareentwickler",
"anrede":"HERR",
"geburtsdatum":"1970-01-01",
"telefonnummer":"030 123456",
"mobilnummer":"030 123456",
"faxnummer":"030 123456",
"firmenname":"Europace AG",
"firmennameZusatz":"Aktiengesellschaft",
"webseite":"https://github.com/europace/partner-api",
"anschrift":{
"strasse":"Musterstraße",
"hausnummer":"5",
"plz":"12345",
"ort":"Musterstadt"
},
"bankverbindung":{
"referenzFeld":"Test Ref",
"kontoinhaber":"Max Musterman",
"bic":"BYLADEM1001",
"iban":"DE02120300000000202051"
},
"aufsichtsbehoerde":"Musterbehoerde",
"registrierungsnummer":"987654",
"aufsichtsbehoerde34i":"Musterbehoerde",
"registrierungsnummer34i":"987654",
"aufsichtsbehoerde34k":"Musterbehoerde 34k",
"registrierungsnummer34k":"123456"
}

Create or update user-access

A newly created partner needs a Zugang to be able to log in to Europace with username. The Zugang can be created by the settings-frontend (partner management) or the partner-API.

Create user-access

Requirements for all use cases and examples:

  • OAuth token has scope partner:plakette:schreiben
  • To access a partner, the caller basically needs permission to see it. This right exists if the retrieved partner is below the authenticated partner in the hierarchy or the Einstellungsrecht is assigned to the authenticated partner.

Use case 1: Create Europace user.

The user with the PartnerId:ABC12 is set up an Zugang with the username "max.musterman@example.org" and an activation email (sendEmail=true) is sent to the username. In the activation email, the user is prompted to set a password.

Note:
The reply address in the activation email is the email or username of the subject in the access-token that created the Zugang. If no email address or username is available, the reply goes to noreply@europace2.de.

Requirement for use case 1:

  • the username is Europace-wide unique
  • the username is an e-mail address

Example request:

POST /v2/partner/ABC12/zugang?sendEmail=true HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"benutzername" : "maxi.musterman@example.org"
}

Example response:

{
"partnerId": "ABC12",
"status": "ZUGANG_UNBESTAETIGT",
"benutzername": "maxi.musterman@example.org",
}

Use case 2: Create user for own identity provider.

This use case is most common with banking partners or direct sales organizations where all employees have a company email with their own domain and the employees work exclusively within this organization.

In this use case, the partner's identity provider is configured and the username is used as the user identifier at Europace and the partner's identity provider.

Don't send an activation email (sendEmail=false), because the user already exists in the partner's Identity Provider.

Requirement for use case 2:

  • the username is Europace-wide unique
  • the username is an e-mail address

Example request:

POST /v2/partner/ABC12/zugang?sendEmail=false HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"benutzername" : "maxi.musterman@deineOrganisation.de"
}

Example response:

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"benutzername": "maxi.musterman@deineOrganisation.de",
"identityProviderConfigURL": "https://idp.deineOrganisation.de/auth/realms/.well-known/openid-configuration"
}

Use case 3: Username is not unique Europace-wide or no email address

A user:in is to be created for the own Identity Provider, but the username is Europace-wide not unique or no e-mail address. In this case the field 'benutzername' is not used at all, but only the field 'identityProviderBenutzername'. The identification of the user on the login mask can only be done via a partnerId. The partnerId can be passed to the login mask with the username parameter in some use cases to improve the user experience.

Since it is an existing user in the identity provider of the partner and the identityProvider username is only used here, no activation email is sent, regardless of the sendEmail parameter.

Requirements for use case 3:

  • No further

Example request:

POST /v2/partner/ABC12/zugang HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"identityProviderBenutzername" : "maxi.mustermann01"
}

Example response: Status: HTTP-Code: 201 created

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"identityProviderBenutzername": "maxi.mustermann01",
"identityProviderConfigURL": "https://idp.deineOrganisation.de/auth/realms/.well-known/openid-configuration"
}

Update user-access for identity providers

The Benutzernamen of external identity providers can be changed with Partner API.

Restriction:

  • the field benutzername cannot be changed

Example request:

PATCH /v2/partner/ABC12/zugang HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJWRDZZTk...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"identityProviderBenutzername" : "maxi.muster"
}

Example response: Status: HTTP-Code: 200 okay

{
"partnerId": "ABC12",
"status": "ZUGANG_REGISTRIERT",
"identityProviderBenutzername": "maxi.muster",
"identityProviderConfigURL": "https://idp.deineOrganisation.de/auth/realms/.well-known/openid-configuration"
}

Update partner-permissions

Set user-permissions

Requirements:

  • OAuth token has the scope partner:rechte:schreiben.
  • Caller has a Einstellungsrecht on the partner

Example request:

POST /v2/partner/ABC12/rechte HTTP/1.1Host: api.europace.deAuthorization: Bearer eyJraWQ...
{
"baufismart": {
"baufiSmartNutzen": true,
"echtgeschaeft": true
}
}

Example response:

{
"partnermanagement": {
"apiClientEinstellungenVornehmen": true,
"einstellungenOeffnen": true,
"baufiSmartEinstellungenVornehmen": true,
"partnerAnlegen": true
},
"baufismart": {
"baufiSmartNutzen": true,
"echtgeschaeft": true,
"vorgaengeUeberOberflaecheAnlegen": true,
"ergebnisListeNutzen": true,
"loeschen": false
},
"kreditsmart": {
"echtgeschaeft": true,
"kreditSmartSichtbar": true,
"versicherungAnbieten": true,
"vorgaengeUeberOberflaecheAnlegen": true
}
}

Add access right

In the example, partner ABC12 is getting the Zugriffsrecht from XYZ56. ABC12 can then access the Vorgänge of XYZ56.

Requirements:

  • OAuth token has scope partner:beziehung:schreiben.
  • Caller has Einstellungsrecht on the partner to which the Zugriffsrecht is added
  • Caller has Einstellungsrecht on the partner to which the access is granted

Example request:

POST /v2/partner/ABC12/uebernahmeRechtFuer/XYZ56 HTTP/1.1Host: api.europace.deX-Trace-Id: My-COLLECTION-8301Authorization: Bearer eyJraWQiOiJFT05...

Example response: Status: HTTP-Code: 201 created

Update trade relation

Experimental

This API is experimental and may change or be removed without notice. Do not rely on it for production use yet.

An existing trade relation for a partner and Produktanbieter can be modified using HTTP PATCH. Only the transmitted fields are updated. All other fields are not changed.

Values for ermittelbar and annehmbar can be true, false, or null. Sending both attributes as null restores the inheritance of the trade relation along the hierarchy (see below).

Requirements:

  • OAuth token has the scope partner:beziehungen:schreiben.

Example request:

PATCH /v2/partner/ABC12/handelsbeziehungen/ONE_CLICK_BAUFI HTTP/1.1Host: api.europace.deAccept: application/jsonAuthorization: Bearer eyJraWQiOiJ...X-TraceId: ff-request-2020-08-28-07-59Content-Type: application/json
{
"ermittelbar": true,
"annehmbar": false
}

Example response: Status: 200 OK

{
"produktanbieterId": "ONE_CLICK_BAUFI",
"produktanbieterName": "Sofortzusage-Bank",
"ermittelbar": true,
"annehmbar": false
}

To restore the inheritance of the trade relation, send both attributes as null:

{
"ermittelbar": null,
"annehmbar": null
}

Restoring inheritance is only supported when the trade relation currently has values maintained directly on the partner. If the trade relation is already inheriting its values, there is nothing to restore and the request is rejected: Status: 422 Unprocessable Entity

Inheritance can only be restored fully. A request that sets exactly one of ermittelbar and annehmbar to null while the other contains a value, e.g.:

{
"ermittelbar": null,
"annehmbar": true
}

is rejected: Status: 400 Bad Request

Support

If you have any questions or problems, you can contact devsupport@europace2.de.

About

Dokumentation für Partner API

Topics

Resources

Code of conduct

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors