Player Exclusion API

The service provides a set of REST API endpoints and is responsible for complying with Georgian regulatory requirements. Currently, it checks age limits and identifies blacklisted users.
Integration
POST /api/v1/check-customer
POST /api/v1/validate
Check Customer
POST /api/v1/check-customer

Authentication

Hash-based Authentication Code

Retrieves the customer’s blacklist status from the database or RS.

Request headers

X-Nonce
string optional

A randomly generated string used for request verification

Example:
vrBwqHagWT15c0G1JEZfRG4f19tmkG
X-Signature-Hash
string sha-256 optional

sha256(X-Requested-By ?? caller_event_name + X-Nonce + request-payload ?? "" + secret-key)

Security hash for request validation.

Example:
34e9e1ae1671a3ea4db3e01abbec52e894af3f4564e36e041f5b5bec3016571b

Request body

application/json-patch+json
Example:
{
    "personal_id": "12347876372",
    "remote": false
}

Responses

200 200

OK

Body
text/plain
Success
Wrong Hash
Bad Request
Generic Failed Error
POST http://player-exclusion-api/api/v1/api/v1/check-customer HTTP/1.1 

X-Nonce: vrBwqHagWT15c0G1JEZfRG4f19tmkG
X-Signature-Hash: 34e9e1ae1671a3ea4db3e01abbec52e894af3f4564e36e041f5b5bec3016571b
Content-Type: application/json

{
    "personal_id": "12347876372",
    "remote": false
}

HTTP/1.1 200 OK 

Content-Type: application/json

{
    "code": 10,
    "message": "",
    "data": {
        "allowed": false,
        "full_name": "",
        "not_allowed_reason": {
            "rs_reason_code": null,
            "rs_reason_text": "Blacklisted"
        }
    }
}
POST http://player-exclusion-api/api/v1/api/v1/check-customer HTTP/1.1 

X-Nonce: 64323tfwef434
X-Signature-Hash: 34e9e1ae1671a3ea4db3e01abbec52e894af3f4564e36e041f5b5bec3016571b
Content-Type: application/json

{
    "personal_id": "12347876372",
    "remote": false
}

HTTP/1.1 200 OK 

Content-Type: application/json

{
    "code": 139,
    "message": "Wrong hash"
}
POST http://player-exclusion-api/api/v1/api/v1/check-customer HTTP/1.1 

X-Nonce: vrBwqHagWT15c0G1JEZfRG4f19tmkG
Content-Type: application/json

{
    "personal_id": "12347876372",
    "remote": false
}

HTTP/1.1 200 OK 

Content-Type: application/json

{
    "code": 112,
    "message": "Missing mandatory headers: X-Signature-Hash, hash or Hash"
}
POST http://player-exclusion-api/api/v1/api/v1/check-customer HTTP/1.1 

X-Nonce: vrBwqHagWT15c0G1JEZfRG4f19tmkG
X-Signature-Hash: 34e9e1ae1671a3ea4db3e01abbec52e894af3f4564e36e041f5b5bec3016571b
Content-Type: application/json

{
    "personal_id": "12347876372",
    "remote": false
}

HTTP/1.1 200 OK 

Content-Type: application/json

{
    "code": 111,
    "message": "Missing configurations `Microservices:PlayerExclusion:Secret` not found"
}
Validate
POST /api/v1/validate

Authentication

Hash-based Authentication Code

Validates the customer by checking both blacklist status and age limit.

Request headers

X-Requested-By
string optional

Indicates the event, process, or service responsible for triggering the request.

caller_event_name
string optional

A Legacy header indicating the event or process that initiated the request.

Retained for backward compatibility, but replaced by X-Requested-By in modern integrations.

X-Nonce
string optional

A randomly generated string used for request verification

Example:
vrBwqHagWT15c0G1JEZfRG4f19tmkG
X-Signature-Hash
string sha-256 optional

sha256(X-Requested-By ?? caller_event_name + X-Nonce + request-payload ?? "" + secret-key)

Security hash for request validation.

Example:
34e9e1ae1671a3ea4db3e01abbec52e894af3f4564e36e041f5b5bec3016571b

Request body

application/json-patch+json
Example:
{
    "userid": 1,
    "forename": "John",
    "surname": "Doe",
    "middlename": "Roy",
    "gender": 0,
    "countryid": 268,
    "registrationDomain": "singularqa.uk",
    "dateofbirth": "1990-01-01",
    "email": "john.doe@example.com",
    "tel": "995595100200",
    "address": {
        "addressline1": "Test address",
        "addressline2": null,
        "addressline3": null,
        "town": "Tbilisi",
        "region": null,
        "postcode": 0180,
        "county": null
    },
    "iddocuments": [
        {
            "personalID": "12347876372",
            "documentStatus": 0,
            "documentIssueDate": "2002-02-27",
            "documentCountryID": "268",
            "documentExpirationDate": null,
            "documentNumber": "TEST1234",
            "documentIssuingAuthority": "81048124184",
            "documentIssuingPlace": "81240184108",
            "documentTypeID": 1
        }
    ]
}

Responses

200 200

OK

Body
text/plain
Success
Wrong Hash
Access Denied
Bad Request
Generic Failed Error
POST http://player-exclusion-api/api/v1/api/v1/validate HTTP/1.1 

X-Requested-By: loginUserWithAuthCredentials
X-Nonce: vrBwqHagWT15c0G1JEZfRG4f19tmkG
X-Signature-Hash: 34e9e1ae1671a3ea4db3e01abbec52e894af3f4564e36e041f5b5bec3016571b
Content-Type: application/json

{
    "userid": 1,
    "forename": "John",
    "surname": "Doe",
    "middlename": "Roy",
    "gender": 0,
    "countryid": 268,
    "registrationDomain": "singularqa.uk",
    "dateofbirth": "1990-01-01",
    "email": "john.doe@example.com",
    "tel": "995595100200",
    "address": {
        "addressline1": "Test address",
        "addressline2": null,
        "addressline3": null,
        "town": "Tbilisi",
        "region": null,
        "postcode": 0180,
        "county": null
    },
    "iddocuments": [
        {
            "personalID": "12347876372",
            "documentStatus": 0,
            "documentIssueDate": "2002-02-27",
            "documentCountryID": "268",
            "documentExpirationDate": null,
            "documentNumber": "TEST1234",
            "documentIssuingAuthority": "81048124184",
            "documentIssuingPlace": "81240184108",
            "documentTypeID": 1
        }
    ]
}

HTTP/1.1 200 OK 

Content-Type: application/json

{
    "external_service_result_code": "Success",
    "code": 10,
    "message": ""
}
POST http://player-exclusion-api/api/v1/api/v1/validate HTTP/1.1 

X-Requested-By: loginUserWithAuthCredentials
X-Nonce: 52qwfa42ef442
X-Signature-Hash: 34e9e1ae1671a3ea4db3e01abbec52e894af3f4564e36e041f5b5bec3016571b
Content-Type: application/json

{
    "userid": 1,
    "forename": "John",
    "surname": "Doe",
    "middlename": "Roy",
    "gender": 0,
    "countryid": 268,
    "registrationDomain": "singularqa.uk",
    "dateofbirth": "1990-01-01",
    "email": "john.doe@example.com",
    "tel": "995595100200",
    "address": {
        "addressline1": "Test address",
        "addressline2": null,
        "addressline3": null,
        "town": "Tbilisi",
        "region": null,
        "postcode": 0180,
        "county": null
    },
    "iddocuments": [
        {
            "personalID": "12347876372",
            "documentStatus": 0,
            "documentIssueDate": "2002-02-27",
            "documentCountryID": "268",
            "documentExpirationDate": null,
            "documentNumber": "TEST1234",
            "documentIssuingAuthority": "81048124184",
            "documentIssuingPlace": "81240184108",
            "documentTypeID": 1
        }
    ]
}

HTTP/1.1 200 OK 

Content-Type: application/json

{
    "code": 139,
    "message": "Wrong hash"
}
POST http://player-exclusion-api/api/v1/api/v1/validate HTTP/1.1 

X-Requested-By: loginUserWithAuthCredentials
X-Nonce: gf23423edrd42
X-Signature-Hash: 45e9e1ae1671a3eaab4242bae94af3f4564e36e041f5b5bec3016571b
Content-Type: application/json

{
    "userid": 0,
    "dateofbirth": "2008-01-01",
    "countryid": 268,
    },
    "iddocuments": [
        {
            "personalID": "12347876372",
            "documentStatus": 0,
            "documentIssueDate": "2015-02-27",
            "documentCountryID": "268",
            "documentExpirationDate": null,
            "documentNumber": "TEST1234",
            "documentIssuingAuthority": "81048124184",
            "documentIssuingPlace": "81240184108",
            "documentTypeID": 1
        }
    ]
}

HTTP/1.1 200 OK 

Content-Type: application/json

{
    "code": 138,
    "message": ""
}
POST http://player-exclusion-api/api/v1/api/v1/validate HTTP/1.1 

X-Requested-By: loginUserWithAuthCredentials
X-Signature-Hash: 34e9e1ae1671a3ea4db3e01abbec52e894af3f4564e36e041f5b5bec3016571b
Content-Type: application/json

{
    "userid": 0,
    "dateofbirth": "2008-01-01",
    "countryid": 268,
    },
    "iddocuments": [
        {
            "personalID": "12347876372",
            "documentStatus": 0,
            "documentIssueDate": "2015-02-27",
            "documentCountryID": "268",
            "documentExpirationDate": null,
            "documentNumber": "TEST1234",
            "documentIssuingAuthority": "81048124184",
            "documentIssuingPlace": "81240184108",
            "documentTypeID": 1
        }
    ]
}

HTTP/1.1 200 OK 

Content-Type: application/json

{
    "code": 112,
    "message": "Missing mandatory headers: X-Nonce, nonce or Nonce"
}
POST http://player-exclusion-api/api/v1/api/v1/validate HTTP/1.1 

X-Requested-By: loginUserWithAuthCredentials
X-Nonce: gf23423edrd42
X-Signature-Hash: 45e9e1ae1671a3eaab4242bae94af3f4564e36e041f5b5bec3016571b
Content-Type: application/json

{
    "userid": 0,
    "dateofbirth": "2008-01-01",
    "countryid": 268,
    },
    "iddocuments": [
        {
            "personalID": "12347876372",
            "documentStatus": 0,
            "documentIssueDate": "2015-02-27",
            "documentCountryID": "268",
            "documentExpirationDate": null,
            "documentNumber": "TEST1234",
            "documentIssuingAuthority": "81048124184",
            "documentIssuingPlace": "81240184108",
            "documentTypeID": 1
        }
    ]
}

HTTP/1.1 200 OK 

Content-Type: application/json

{
    "code": 111,
    "message": "Missing configurations `Microservices:PlayerExclusion:Secret` not found"
}
Type Definitions
CoreDocumentType

Description of core document types.

integer int32
Enumeration:
2

Passport

3

Residence Permit

15

RefugeeIdCertificate

StatusCodes

Description of internal status codes that might be returned in the code field of the response object.

integer
Enumeration:
Success

10 - Operation was successful.

GenericFailedError

111 - Unknown error happened on server side.

MissingParameters

112 - The request is missing mandatory parameter(s).

AccessDenied

138 - Access is denied for the operation.

WrongHash

139 - The hash of the request is invalid.

NotFound

404 - The specific resource could not be found.

Common Headers
X-Signature-Hash
string sha-256 optional

sha256(X-Requested-By ?? caller_event_name + X-Nonce + request-payload ?? "" + secret-key)

Security hash for request validation.

Example:
34e9e1ae1671a3ea4db3e01abbec52e894af3f4564e36e041f5b5bec3016571b
X-Nonce
string optional

A randomly generated string used for request verification

Example:
vrBwqHagWT15c0G1JEZfRG4f19tmkG
Schemas

Request and response schemas for the API endpoint

Validate
ValidateUserResult
Object
external_service_result_code
string
message
string
ValidateUserRequestDto
Object
userid
integer int32

The Id of the user in PAM & Wallet.

forename
string

The user name.

surname
string

The user surname.

middlename
string

The user middle name.

gender
integer int32

The user gender.

countryid
integer int32 required

The user country Id.

registrationDomain
string required

The user registration domain.

dateofbirth
string date-time

The user birthdate.

email
string

The user email address.

tel
string

The user telephone number.

The user address.

iddocuments

The array of user documents.

ValidateUserDocumentRequestDto
Object
PersonalID
string

The personal Id.

DocumentStatus
integer int32

The document status.

DocumentIssueDate
string date-time

The document issue date.

DocumentCountryID
integer int32

The document country Id.

DocumentExpirationDate
string date-time

The document expiration date.

DocumentNumber
string

The document number.

DocumentIssuingAuthority
string

The document issuing authority.

DocumentIssuingPlace
string

The document issuing place.

DocumentTypeID

The document type Id.

ValidateUserAddressRequestDto
Object
addressline1
string

The first line of the address.

addressline2
string

The second line of the address.

addressline3
string

The third line of the address.

town
string

The town or city of the address.

region
string

The region of the address.

postcode
string

The postal code of the address.

county
string

The county or state of the address.

Check Customer
NotAllowedReason
Object
rs_reason_code
integer int32
rs_reason_text
string
CheckCustomerResult
Object
message
string
CheckCustomerResultData
Object
allowed
boolean
full_name
string
not_allowed_reason
CheckCustomerRequestDto
Object
personal_id
string required

The personal Id of the customer.

Min length: 1
remote
boolean
Default:
false