Documentation/Developers
Back
  • Getting started
    • Frontends and app types
    • Environments and endpoints
  • OAuth clients
    • Client ID and secret
    • Redirect URIs and start URL
    • Secret rotation
  • Login with appsolut
    • Authorization code flow
    • Tokens and claims
    • Frontend role
    • Sign-out
    • Revocation and issued tokens
    • Token endpoint errors
  • Frontend keys
    • Issue and store a key
    • Send a key
    • Rotate and revoke
  • Members API
    • Eligibility from a backend
    • The signed-in member
    • Results, rate limits and errors
    • Is an applicant an eligible member?
    • The signed-in frontend user's membership
  • appsolut register API
    • Implement the API
    • Connect and test
    • Verify a member with their challenge code
    • List every member
    • The status of several members
    • The status of one member
    • The person data of several members
    • The person data of one member
    • The claims of several members
    • The claims of one member
    • Health check

Verify a member with their challenge code

POST /members/verify

The Studio calls it at onboarding when the register's connection has "Challenge code required" switched on, with the member code as the person typed it, the birth date they entered and their challenge code (memberSecret).

Answer verified: true with the member's status and person data when the three belong together, and verified: false otherwise, also for an unknown member code: this operation never answers 404. The Studio then compares the first name, last name and birth date in params with what the person entered, so a verified member must carry all three; without them the Studio treats the register as unavailable.

Authentication

  • appsolut_m2m (sent in the header x-api-key): The "API key" entered in the register's connection in the Studio, sent with every call. The Studio keeps it encrypted and never shows it again. Answer 401 or 403 to a wrong key.

Parameters

NameInRequiredTypeDescription
x-tenant-idheaderYesstringThe "Tenant ID" entered in the register's connection in the Studio, sent unchanged with every call. Your register can use it to tell apart the organisations it serves. Example: pannoniqa.
x-custom-scopeheaderYesstringThe "Scope" entered in the register's connection in the Studio, sent unchanged with every call. Your register can use it to choose the data set it answers from. Example: employees.

Request body

Content type: application/json, required

FieldTypeRequiredDescription
memberCodestringYesThe member code as the person typed it.
birthDatestring (date)YesThe birth date the person entered, YYYY-MM-DD.
memberSecretstringYesThe challenge code the person entered: the personal secret the organisation sent them on a second channel.

Example

{
  "memberCode": "100001",
  "birthDate": "1979-02-02",
  "memberSecret": "K7MQ-2Z9P"
}

Responses

200

Verified or not. verified: false needs no other field than source.

Content type: application/json

FieldTypeRequiredDescription
sourcestringYesThe name of your data source, such as "SAP HR".
verifiedbooleanYesWhether the member code, birth date and challenge code belong to one member.
statusobjectNoThe member's status. Required when verified is true.
status.statusCodestringYesThe member's status in the register. Filters in the membership definition and in communities can check it. Allowed values: active, inactive, pending.
paramsobjectNoThe member's person data. Required when verified is true.
params.firstNamestringNoFirst name.
params.lastNamestringNoLast name.
params.memberCodestringNoThe member code as the register holds it.
params.birthDatestring (date)NoBirth date, YYYY-MM-DD.
params.zipstringNoPostal code.
params.citystringNoCity.
params.streetstringNoStreet and house number.
params.countrystringNoCountry code, such as AT.

Example: An active employee

{
  "source": "SAP HR",
  "verified": true,
  "status": {
    "statusCode": "active"
  },
  "params": {
    "firstName": "Anna",
    "lastName": "Berger",
    "memberCode": "100001",
    "birthDate": "1979-02-02",
    "zip": "7100",
    "city": "Neusiedl am See",
    "street": "Musterweg 3",
    "country": "AT"
  }
}

Example: A retired employee

{
  "source": "SAP HR",
  "verified": true,
  "status": {
    "statusCode": "inactive"
  },
  "params": {
    "firstName": "Johann",
    "lastName": "Novak",
    "memberCode": "100009",
    "birthDate": "1952-07-07",
    "zip": "7000",
    "city": "Eisenstadt",
    "street": "Beispielgasse 7",
    "country": "AT"
  }
}

Example: Not verified

{
  "source": "SAP HR",
  "verified": false
}

400

The register could not process the request. The Studio treats it as the register being unavailable and does not read the body.

Content type: text/plain

Type: string

Example

Bad request

401

The API key is wrong. The Studio reports the credentials as rejected (it does the same for 403) and treats the register as unavailable.

Content type: text/plain

Type: string

Example

Unauthorized

429

Too many requests. The Studio treats it as the register being unavailable.

Content type: text/plain

Type: string

Example

Too many requests