Skip to content

Latest commit

 

History

History
638 lines (583 loc) · 30.1 KB

File metadata and controls

638 lines (583 loc) · 30.1 KB

Server Notifications {#callback}

QIWI server notification is an incoming HTTP POST request. The JSON-formatted notification message in the request body contains payment/invoice data encoded in UTF-8 codepage.

The Protocol supports the following notification types for API events:

  • PAYMENT — sends when a payment operation is made;
  • CAPTURE — sends when a payment confirmation is made;
  • REFUND — sends when a refund for payment is made;
  • CHECK_CARD — send when a card verification is made.
There is no specific sequence of sending different types' notifications for the same operation. The sequence may vary for different operations.

Specify the notification server address in your Account Profile in Settings section.

To put different notification address for a separate operation, use the following parameters in the API requests:

The URL for notifications should start with https, as notifications are sent by HTTPS to port 443. The site certificate must be issued by a trusted certification center (e.g. Comodo, Verisign, Thawte, etc.)

If you don't receive a transaction notification within 10 minutes of the transaction, you must request the status of the transaction by requesting invoice status or requesting payment status (depending on which way you use the API).

To make sure the notification is from QIWI, we recommend you to accept messages only from the following IP addresses belonging to QIWI:

  • 79.142.16.0/20
  • 195.189.100.0/22
  • 91.232.230.0/23
  • 91.213.51.0/24

To treat notification as successfully delivered, we need your notification server to respond with HTTP code 200 OK. Until this moment, QIWI system will try to resend the notification message several times with growing interval during the day from the operation started.

If by any reason RSP server accepts the notification message but responds incorrectly, then on receiving notification with the same data next time it should not be treated as a new event.

Notification Authorization {#notifications-auth}

Notification headers example

POST /qiwi-notify.php HTTP/1.1
Accept: application/json
Content-Type: application/json
Signature: j4wnfnzd***v5mv2w=
Host: example.com

The notification contains a digital signature of the request data which RSP should verify on its side to secure from notification fraud.

The responsibility for any financial losses due to omitted verification of the signature parameter lies solely on RSP.

The UTF-8 encoded digital signature is placed into HTTP header Signature of the notification message.

To validate the signature, HMAC integrity check with SHA256-hash is used.

Implement the following algorithm to verify notification signature:

  1. Join values of some parameters from the notification with the pipe "|" character as a separator. For example:

    parameters = {payment.paymentId}|{payment.createdDateTime}|{payment.amount.value}

    where {*} – notification parameter value. All values must be converted to UTF-8 encoded string representation.

    Signature should be verified for those notification fields:

    • PAYMENT type:payment.paymentId|payment.createdDateTime|payment.amount.value
    • REFUND type:refund.refundId|refund.createdDateTime|refund.amount.value
    • CAPTURE type:capture.captureId|capture.createdDateTime|capture.amount.value
    • CHECK_CARD type: checkPaymentMethod.requestUid|checkPaymentMethod.checkOperationDate
  2. Calculate hash HMAC value with SHA256 algorithm (signature string and secret key should be UTF8-encoded):

    hash = HMAC(SHA256, secret, parameters)

    where:

    • secret – HMAC hash key. It is the server notification key in Settings section of the Merchant Account Profile.
    • parameters – string from step 1.
  3. Compare the notification signature from Signature HTTP-header with the result of step 2. If there is no difference, the validation is successful.

Frequency of notification sending {#notification-rate}

QIWI notification service sorts unsuccessful notifications on the following queues:

  • One attempt on waiting 5 seconds
  • One attempt on waiting 1 minutes
  • Three attempts on waiting 5 minutes

Time of secondary sending notification may slightly shift upward.

PAYMENT Notification Format {#payment-callback}

  • HEADERS

    • Signature: XXX
    • Accept: application/json
    • Content-type: application/json

PAYMENT Notification example

{
  "payment": {
    "paymentId": "A22170834426031500000733E625FCB3",
    "customFields": {},
    "type": "PAYMENT",
    "createdDateTime": "2022-08-05T11:34:42+03:00",
    "status": {
      "value": "SUCCESS",
      "changedDateTime": "2022-08-05T11:34:44+03:00"
    },
    "amount": {
      "value": 5,
      "currency": "RUB"
    },
    "paymentMethod": {
      "type": "SBP",
      "phone": "79111112233"
    },
    "customer": {
      "phone": "0",
      "bankAccountNumber": "4081710809561219555",
      "bic": "044525974",
      "lastName": "IVANOV",
      "firstName": "IVAN",
      "middleName": "IVANOVICH",
      "simpleAddress": "",
      "bankMemberId": "100000000008"
    },
    "billId": "autogenerated-6cd20922-b1d0-4e67-ba61-e2b7310c4006",
    "flags": [
      "SALE"
    ]
  },
  "type": "PAYMENT",
  "version": "1"
}

PAYMENT notification for a split payments

{
    "payment": {
        "paymentId": "134d707d-fec4-4a84-93f3-781b4f8c24ac",
        "customFields": {
            "comment": "My comment"
        },
        "paymentCardInfo": {
            "issuingCountry": "643",
            "issuingBank": "Unknown",
            "paymentSystem": "VISA",
            "fundingSource": "UNKNOWN",
            "paymentSystemProduct": "Unknown"
        },
        "type": "PAYMENT",
        "createdDateTime": "2021-02-05T11:29:38+03:00",
        "status": {
            "value": "SUCCESS",
            "changedDateTime": "2021-02-05T11:29:39+03:00"
        },
        "amount": {
            "value": 3,
            "currency": "RUB"
        },
        "paymentMethod": {
            "type": "TOKEN",
            "paymentToken": "1620161e-d498-431b-b006-c52bb78c6bf2",
            "maskedPan": "425600******0003",
            "cardHolder": "CARD HOLDER",
            "cardExpireDate": "11/2022"
        },
        "customer": {
            "email": "glmgmmxr@qiwi123.com",
            "account": "sbderxuftsrt",
            "phone": "13387571067",
            "country": "yccsnnfjgthu",
            "city": "sqdvseezbpzo",
            "region": "shbvyjgspjvu"
        },
        "gatewayData": {
            "type": "ACQUIRING",
            "authCode": "181218",
            "rrn": "123"
        },
        "billId": "autogenerated-19cf2596-62a8-47f2-8721-b8791e9598d0",
        "flags": [],
        "paymentSplits": [
            {
                "type": "MERCHANT_DETAILS",
                "siteUid": "Obuc-00",
                "splitAmount": {
                    "value": 2,
                    "currency": "RUB"
                },
                "splitCommissions": {
                    "merchantCms": {
                        "value": 0.2,
                        "currency": "RUB"
                    },
                    "userCms": null
                },
                "orderId": "dressesforwhite",
                "comment": "Purchase 1"
            },
            {
                "type": "MERCHANT_DETAILS",
                "siteUid": "Obuc-01",
                "splitAmount": {
                    "value": 1,
                    "currency": "RUB"
                },
                "splitCommissions": {
                    "merchantCms": {
                        "value": 0.02,
                        "currency": "RUB"
                    },
                    "userCms": null
                },
                "orderId": "shoesforvalya",
                "comment": "Purchase 2"
            }
        ]
    },
    "type": "PAYMENT",
    "version": "1"
}
Notification field Description Type When present
payment Payment information Object Always
---- ------ ------- --------
payment.
type
Operation type String(200) Always
payment.
paymentId
Payment operation unique identifier in RSP's system String(200) Always
payment.
createdDateTime
System date of the operation creation URL-encoded string
YYYY-MM-DDThh:mm:ss
Always
payment.
billId
Corresponding invoice ID for the operation String(200) Always
payment.
qrCodeUid
QR-code issue operation identifier in RSP's system String In case of operation with Faster Payment System
payment.
amount
Object Operation amount data Always
---- ------ ------- --------
payment.
amount.
value
Operation amount rounded down to two decimals Number(6.2) Always
payment.
amount.
currency
Operation currency (Code: Alpha-3 ISO 4217) String(3) Always
---- ------ ------- --------
payment.
status
Operation status data Object Always
---- ------ ------- --------
payment.
status.
value
Operation status value String Always
payment.
status.
changedDatetime
Date of operation status update URL-encoded string
YYYY-MM-DDThh:mm:ssZ
Always
payment.
status.
reasonCode
Rejection reason code String(200) In case of operation rejection
payment.
status.
reasonMessage
Rejection reason description String(200) In case of operation rejection
payment.
status.
errorCode
Error code Number In case of error
---- ------ ------- --------
payment.
paymentMethod
Payment method data Object Always
---- ------ ------- --------
payment.
paymentMethod.
type
Payment method type: CARD — bank card, TOKEN — payment token, SBP — Fast Payments System, QIWI_WALLET — QIWI Wallet balance String Always
payment.
paymentMethod.
paymentToken
Card payment token String When payment token is used for the payment
payment.
paymentMethod.
maskedPan
Masked card PAN String When card or payment token is used for the payment
payment.
paymentMethod.
rrn
Payment RRN (ISO 8583) Number When card or payment token is used for the payment
payment.
paymentMethod.
authCode
Payment Auth code Number When card or payment token is used for the payment
payment.
paymentMethod.
phone
Phone number linked to the customer's card, or QIWI Wallet number String When paying through Fast Payments System, or from QIWI Wallet balance
--- --- --- -------
payment.
paymentCardInfo
Card information Object Always
---- ------ ------- --------
payment.
paymentCardInfo.
issuingCountry
Issuer country code String(3) Always
payment.
paymentCardInfo.
issuingBank
Issuer name String Always
payment.
paymentCardInfo.
paymentSystem
Card's payment system String Always
payment.
paymentCardInfo.
fundingSource
Card's type (debit/credit/..) String Always
payment.
paymentCardInfo.
paymentSystemProduct
Card's category String Always
---- ------ ------- --------
payment.
customer
Customer data Object Always
---- ------ ------- --------
payment.
customer.
phone
Customer phone number String Always
payment.
customer.
email
Customer e-mail String Always
payment.
customer.
account
Customer ID in RSP system String Always
payment.
customer.
ip
Customer IP address String Always
payment.
customer.
country
Customer country from address string String Always
payment.
customer.
bankAccountNumber
Payer's bank account number String When paying through Fast Payments System
payment.
customer.
bic
Issuer BIC String When paying through Fast Payments System
payment.
customer.
lastName
Customer's last name String When paying through Fast Payments System
payment.
customer.
firstName
Customer's first name String When paying through Fast Payments System
payment.
customer.
middleName
Customer's middle name String When paying through Fast Payments System
payment.
customer.
simpleAddress
Customer's address String When paying through Fast Payments System
payment.
customer.
inn
Customer's TIN String When paying through Fast Payments System
payment.
customer.
bankMemberId
Customer's bank identifier String When paying through Fast Payments System
---- ------ ------- --------
payment.
customFields
Fields with additional information for the operation Object Always
---- ------ ------- --------
payment.
customFields.
cf1
Extra field with some information to operation data String(256) Always
payment.
customFields.
cf2
Extra field with some information to operation data String(256) Always
payment.
customFields.
cf3
Extra field with some information to operation data String(256) Always
payment.
customFields.
cf4
Extra field with some information to operation data String(256) Always
payment.
customFields.
cf5
Extra field with some information to operation data String(256) Always
---- ------ ------- --------
payment.
flags
Additional API commands Array of Strings. Possible elements: SALE, REVERSAL Always
payment.
tokenData
Payment token data Object When payment token issue was requested
---- ------ ------- --------
payment.
tokenData.
paymentToken
Card payment token String When payment token issue was requested
payment.
tokenData.
expiredDate
Payment token expiration date. ISO-8601 Date format:
YYYY-MM-DDThh:mm:ss±hh:mm
String When payment token issue was requested
---- ------ ------- --------
payment.
chequeData
Fiscal receipt description ChequeData When data for a fiscal receipt were sent in the operation payload
payment.
paymentSplits
Split payments description Array(Objects) For split payments
----- ------ ------ -----
payment.
paymentSplits.
type
Data type. Always MERCHANT_DETAILS String For split payments
payment.
paymentSplits.
siteUid
Merchant ID String For split payments
payment.
paymentSplits.
splitAmount
Merchant reimbursement Object For split payments
---- ---- ----- -----
payment.
paymentSplits.
splitAmount.
value
Amount of reimbursement Number For split payments
payment.
paymentSplits.
splitAmount.
currency
Text code of reimbursement currency, by ISO String(3) For split payments
---- ---- ----- -----
payment.
paymentSplits.
splitCommissions
Commission data Object For split payments
----- ---- ----- -----
payment.
paymentSplits.
splitCommissions.
merchantCms
Commission from merchant Object For split payments
---- ----- ---- -----
payment.
paymentSplits.
splitCommissions.
merchantCms.
value
Amount of commission Number For split payments
payment.
paymentSplits.
splitCommissions.
merchantCms.
currency
Text code of commission currency, by ISO String(3) For split payments
----- ----- ----- -----
payment.
paymentSplits.
orderId
Order number String For split payments
payment.
paymentSplits.
comment
Comment for the order String For split payments
----- ----- ----- -----
type Notification type (PAYMENT) String(200) Always
version Notification version String Always

CAPTURE Notification Format {#capture-callback}

  • HEADERS

    • Signature: XXX
    • Accept: application/json
    • Content-type: application/json
Notification field Description Type
capture Capture information Object
---- ------ -------
capture.
type
Operation type String(200)
capture.
captureId
Capture operation unique identifier in RSP's system String(200)
capture.
createdDateTime
System date of the operation creation URL-encoded string
YYYY-MM-DDThh:mm:ss
capture.
amount
Object Operation amount data
---- ------ -------
capture.
amount.
value
Operation amount rounded down to two decimals Number(6.2)
capture.
amount.
currency
Operation currency (Code: Alpha-3 ISO 4217) String(3)
---- ------ -------
capture.
billId
Corresponding invoice ID for the operation String(200)
capture.
status
Operation status data Object
---- ------ -------
capture.
status.
value
Operation status value String
capture.
status.
changedDatetime
Date of operation status update URL-encoded string
YYYY-MM-DDThh:mm:ssZ
capture.
status.
reasonCode
Rejection reason code String(200)
capture.
status.
reasonMessage
Rejection reason description String(200)
capture.
status.
errorCode
Error code Number
---- ------ -------
capture.
paymentMethod
Payment method data Object
---- ------ -------
capture.
paymentMethod.
type
Payment method type String
capture.
paymentMethod.
maskedPan
Masked card PAN String
capture.
paymentMethod.
rrn
Payment RRN (ISO 8583) Number
capture.
paymentMethod.
authCode
Payment Auth code Number
---- ------ -------
capture.
customer
Customer data Object
---- ------ -------
capture.
customer.
phone
Customer phone number String
capture.
customer.
email
Customer e-mail String
capture.
customer.
account
Customer ID in RSP system String
capture.
customer.
ip
Customer's IP address String
capture.
customer.
country
Customer country from address string String
---- ------ -------
capture.
customFields
Fields with additional information for the operation Object
---- ------ -------
capture.
customFields.
cf1
Extra field with some information to operation data String(256)
capture.
customFields.
cf2
Extra field with some information to operation data String(256)
capture.
customFields.
cf3
Extra field with some information to operation data String(256)
capture.
customFields.
cf4
Extra field with some information to operation data String(256)
capture.
customFields.
cf5
Extra field with some information to operation data String(256)
---- ------ -------
capture.
flags
Additional API commands Array of Strings. Possible elements: SALE, REVERSAL
type Notification type (CAPTURE) String(200)
version Notification version String

REFUND Notification Format {#refund-callback}

  • HEADERS

    • Signature: XXX
    • Accept: application/json
    • Content-type: application/json

REFUND notification for a split payments refund

{
    "refund": {
        "refundId": "42f5ca91-965e-4cd0-bb30-3b64d9284048",
        "type": "REFUND",
        "createdDateTime": "2021-02-05T11:31:40+03:00",
        "status": {
            "value": "SUCCESS",
            "changedDateTime": "2021-02-05T11:31:40+03:00"
        },
        "amount": {
            "value": 3,
            "currency": "RUB"
        },
        "paymentMethod": {
            "type": "TOKEN",
            "paymentToken": "1620161e-d498-431b-b006-c52bb78c6bf2",
            "maskedPan": null,
            "cardHolder": null,
            "cardExpireDate": null
        },
        "customer": {
            "email": "glmgmmxr@qiwi123.com",
            "account": "sbderxuftsrt",
            "phone": "13387571067",
            "country": "yccsnnfjgthu",
            "city": "sqdvseezbpzo",
            "region": "shbvyjgspjvu"
        },
        "gatewayData": {
            "type": "ACQUIRING",
            "authCode": "181218",
            "rrn": "123"
        },
        "billId": "autogenerated-19cf2596-62a8-47f2-8721-b8791e9598d0",
        "flags": [
            "REVERSAL"
        ],
        "refundSplits": [
            {
                "type": "MERCHANT_DETAILS",
                "siteUid": "Obuc-00",
                "splitAmount": {
                    "value": 2,
                    "currency": "RUB"
                },
                "splitCommissions": {
                    "merchantCms": {
                        "value": 0,
                        "currency": "RUB"
                    },
                    "userCms": null
                },
                "orderId": "dressesforwhite",
                "comment": "Some purchase"
            },
            {
                "type": "MERCHANT_DETAILS",
                "siteUid": "Obuc-01",
                "splitAmount": {
                    "value": 1,
                    "currency": "RUB"
                },
                "splitCommissions": {
                    "merchantCms": {
                        "value": 0.02,
                        "currency": "RUB"
                    },
                    "userCms": null
                },
                "orderId": "shoesforvalya",
                "comment": "Some purchase 2"
            }
        ]
    },
    "type": "REFUND",
    "version": "1"
}
Notification field Description Type When present
refund Refund information Object Always
---- ------ ------- --------
refund.
type
Operation type String(200) Always
refund.
refundId
Refund operation unique identifier in RSP's system String(200) Always
refund.
createdDateTime
System date of the operation creation URL-encoded string
YYYY-MM-DDThh:mm:ss
Always
refund.
amount
Object Operation amount data Always
---- ------ ------- --------
refund.
amount.
value
Operation amount rounded down to two decimals Number(6.2) Always
refund.
amount.
currency
Operation currency (Code: Alpha-3 ISO 4217) String(3) Always
---- ------ ------- --------
refund.
billId
Corresponding invoice ID for the operation String(200) Always
refund.
status
Operation status data Object Always
---- ------ ------- --------
refund.
status.
value
Operation status value String Always
refund.
status.
changedDatetime
Date of operation status update URL-encoded string
YYYY-MM-DDThh:mm:ssZ
Always
refund.
status.
reasonCode
Rejection reason code String(200) In case of operation rejection
refund.
status.
reasonMessage
Rejection reason description String(200) In case of operation rejection
refund.
status.
errorCode
Error code Number In case of error
---- ------ ------- --------
refund.
paymentMethod
Payment method data Object Always
---- ------ ------- --------
refund.
paymentMethod.
type
Payment method type String Always
refund.
paymentMethod.
maskedPan
Masked card PAN String IAlways
refund.
paymentMethod.
rrn
Payment RRN (ISO 8583) Number Always
refund.
paymentMethod.
authCode
Payment Auth code Number Always
---- ------ ------- --------
refund.
customer
Customer data Object Always
---- ------ ------- --------
refund.
customer.
phone
Customer phone number String Always
refund.
customer.
email
Customer e-mail String Always
refund.
customer.
account
Customer ID in RSP system String Always
refund.
customer.
ip
Customer IP address String Always
refund.
customer.
country
Customer country from address string String Always
---- ------ ------- --------
refund.
customFields
Fields with additional information for the operation Object Always
---- ------ ------- --------
refund.
customFields.
cf1
Extra field with some information to operation data String(256) Always
refund.
customFields.
cf2
Extra field with some information to operation data String(256) Always
refund.
customFields.
cf3
Extra field with some information to operation data String(256) Always
refund.
customFields.
cf4
Extra field with some information to operation data String(256) Always
refund.
customFields.
cf5
Extra field with some information to operation data String(256) Always
---- ------ ------- --------
refund.
flags
Additional API commands Array of Strings. Possible elements: SALE, REVERSAL Always
refund.
chequeData
Fiscal receipt description ChequeData When data for a fiscal receipt were sent in the operation payload
refund.
refundSplits
Refund of split payments description Array(Objects) For refund split payments
----- ------ ------ -----
refund.
refundSplits.
type
Data type. Always MERCHANT_DETAILS String For refund split payments
refund.
refundSplits.
siteUid
Merchant ID String For refund split payments
refund.
refundSplits.
splitAmount
Data on cancelled reimbursement for the merchant Object For refund split payments
---- ---- ----- -----
refund.
refundSplits.
splitAmount.
value
Amount of cancelled reimbursement Number For refund split payments
refund.
refundSplits.
splitAmount.
currency
Text code of cancelled reimbursement currency, by ISO String(3) For refund split payments
---- ---- ----- -----
refund.
refundSplits.
splitCommissions
Commission data Object For refund split payments
----- ---- ----- -----
refund.
refundSplits.
splitCommissions.
merchantCms
Commission from the merchant Object For refund split payments
---- ----- ---- -----
refund.
refundSplits.
splitCommissions.
merchantCms.
value
Commission amount Number For refund split payments
refund.
refundSplits.
splitCommissions.
merchantCms.
currency
Text code of commission currency, by ISO String(3) For refund split payments
----- ----- ----- -----
refund.
refundSplits.
orderId
Order number String For refund split payments
refund.
refundSplits.
comment
Comment to the order String For refund split payments
----- ----- ----- -----
type Notification type (REFUND) String(200) Always
version Notification version String Always

CHECK_CARD Notification Format {#checkcard-callback}

  • HEADERS

    • Signature: XXX
    • Accept: application/json
    • Content-type: application/json

CHECK_CARD notification example

{
    "checkPaymentMethod": {
        "status": "SUCCESS",
        "isValidCard": true,
        "threeDsStatus": "PASSED",
        "cardInfo": {
            "issuingCountry": "RUS",
            "issuingBank": "Альфа-банк",
            "paymentSystem": "MASTERCARD",
            "fundingSource": "PREPAID",
            "paymentSystemProduct": "TNW|TNW|Mastercard® New World—Immediate Debit|TNW|Mastercard New World-Immediate Debit"
        },
        "createdToken": {
            "token": "7653465767c78-a979-5bae621db96f",
            "name": "54**********47",
            "expiredDate": "2022-12-30T00:00:00+03:00",
            "account": "acc1"
        },
        "requestUid": "uuid1-uuid2-uuid3-uuid4",
        "paymentMethod": {
            "type": "CARD",
            "maskedPan": "54************47",
            "cardHolder": null,
            "cardExpireDate": "12/2022"
        },
        "checkOperationDate": "2021-08-16T14:15:07+03:00"
    },
    "type": "CHECK_CARD",
    "version": "1"
}
Notification field Description Type
checkPaymentMethod Card verification result Object
---- ------ -------
checkPaymentMethod.
checkOperationDate
System date of the operation URL-encoded string
YYYY-MM-DDThh:mm:ssZ
checkPaymentMethod.
requestUid
Card verification operation unique identifier String(200)
checkPaymentMethod.
status
Card verification status String
checkPaymentMethod.
isValidCard
true means card can be charged Bool
checkPaymentMethod.
threeDsStatus
Information on customer authentication status. Possible values: PASSED (3-D Secure passed), NOT_PASSED (3-D Secure not passed), WITHOUT (3-D Secure not required) String
---- ------ -------
checkPaymentMethod.
paymentMethod
Payment method data Object
---- ------ -------
checkPaymentMethod.
paymentMethod.
type
Payment method type String
checkPaymentMethod.
paymentMethod.
maskedPan
Masked card PAN String
checkPaymentMethod.
paymentMethod.
cardExpireDate
Card expiration date (MM/YY) String
checkPaymentMethod.
paymentMethod.
cardHolder
Cardholder name String
---- ------ -------
checkPaymentMethod.
cardInfo
Card information Object
---- ------ -------
checkPaymentMethod.
cardInfo.
issuingCountry
Issuer country code String(3)
checkPaymentMethod.
cardInfo.
issuingBank
Issuer name String
checkPaymentMethod.
cardInfo.
paymentSystem
Card's payment system String
checkPaymentMethod.
cardInfo.
fundingSource
Card's type (debit/credit/..) String
checkPaymentMethod.
cardInfo.
paymentSystemProduct
Card's category String
---- ------ ------
checkPaymentMethod.
createdToken
Payment token data Object
---- ------ -------
checkPaymentMethod.
createdToken.
token
Card payment token String
checkPaymentMethod.
createdToken.
name
Masked card PAN for which payment token issued String
checkPaymentMethod.
createdToken.
expiredDate
Payment token expiration date. ISO-8601 Date format:
YYYY-MM-DDThh:mm:ss±hh:mm
String
checkPaymentMethod.
createdToken.
account
Customer account for which payment token issued String
---- ------ -------
type Notification type String(200)
version Notification version String