Client API Documentation for Transaction Anomaly Monitoring System
1. API Specifications
1.1 Endpoint URL
API Endpoint URL: You will provide us with a secure HTTPS endpoint where our system can send requests to retrieve transaction data.
Example:
https://api.yourcompany.com/stats
1.2 Request Method
HTTP Method:
GETContent-Type:
application/json
1.3 Request Parameters
Our system will send a JSON payload containing the following parameters:
start_time
String
Start of the time interval in ISO 8601 format (UTC).
"2024-09-30T10:00:00Z"
end_time
String
End of the time interval in ISO 8601 format (UTC).
"2024-09-30T10:05:00Z"
groups
String
Comma-separated list of groups (e.g., merchants) to retrieve.
"merchant1,merchant2"
"all"
signature
String
HMAC SHA-256 signature for authentication.
"a1b2c3d4e5f6g7h8i9j0..."
1.3.1 Parameter Details
start_timeandend_time:Represent the time window for which transaction data is requested.
Possible intervals are 5, 10, 15, or 30 minutes, depending on settings and agreed-upon configurations.
Must be in ISO 8601 format and in UTC timezone.
groups:Specifies which groups or merchants the data should be retrieved for.
If set to
"all", data for all available groups should be returned.
signature:Used for request authentication.
Generated using HMAC SHA-256 with a secret key.
1.4 Authentication
1.4.1 Signature Generation
The signature parameter is generated by concatenating the values of start_time, end_time, and groups, then applying HMAC SHA-256 encryption using the secret key.
Example in Python:
import hmac
import hashlib
data = "2024-09-30T10:00:00Z2024-09-30T11:00:00Zmerchant1,merchant2"
secret_key = "your_secret_key"
signature = hmac.new(secret_key.encode(), data.encode(), hashlib.sha256).hexdigest()Important Notes:
The shared secret key will be provided to you securely.
Ensure that the signature is correctly calculated to avoid authentication errors.
1.5 Response Structure
Your API should return a JSON response with the following structure:
status
String
"success" or "error".
error_code
Integer
Numeric code (0 for success, other codes for specific errors).
error_message
String
Description of the error (if any).
start_time
String
Echoes the start_time from the request.
end_time
String
Echoes the end_time from the request.
groups
Array
Contains data objects for each group and metric.
1.5.1 Group Data Object
Each element in the groups array should have the following fields:
group
String
Name of the group (e.g., merchant identifier).
metric
String
Name of the metric (e.g., "transaction_count").
count
Integer
Transaction count for the specified period.
1.6 Requests and Responses Examples
1.6.1 Request Example
{
"start_time": "2024-09-30T10:00:00Z",
"end_time": "2024-09-30T10:05:00Z",
"groups": "merchant1,merchant2",
"signature": "a1b2c3d4e5f6g7h8i9j0..."
}1.6.2 Successful Response
{
"status": "success",
"error_code": 0,
"error_message": null,
"start_time": "2024-09-30T10:00:00Z",
"end_time": "2024-09-30T10:05:00Z",
"groups": [
{
"group": "merchant1",
"metric": "transactions_all",
"count": 150
},
{
"group": "merchant2",
"metric": "deposits",
"count": 200
}
]
}1.6.3 Error Response - Invalid Signature
{
"status": "error",
"error_code": 1,
"error_message": "Invalid authentication signature",
"start_time": null,
"end_time": null,
"groups": null
}1.7 Error Codes
0
Success
1
Invalid signature
2
Missing or invalid parameters
3
Internal server error
4
Too many requests (rate limiting)
1.8 HTTP Status Codes
200 OK: Successful requests.
400 Bad Request: Invalid request format or parameters.
401 Unauthorized: Authentication failed.
429 Too Many Requests: Rate limiting applied.
500 Internal Server Error: Server-side errors.
2. Groups and Metrics
Groups: Typically represent identifiers such as merchant IDs, store IDs, or any other logical grouping relevant to your business.
Metrics: Currently, the system focuses on the number of transactions in the specified interval. It can be one of transaction types like “deposits” or “withdrawals”, and also the whole transaction amount without types differentiation, for example “all transactions”.
3. Initial Training and Missing Data Recovery Procedure
The anomaly detection service will automatically recover missing data in cases where the client's system was unresponsive or there were issues with the monitoring service itself. It will sequentially request data for the missing period, at a rate of 5 requests per second. These requests are identical to those used during normal operation.
Initial training happens in the same way as Missing Data Recovery Procedure but will be applied for 6 weeks time period.
4. Limits
In current version the maximum response size should not exceed 500 KB. Please contact Anomalis team if you predict larger responses.
Maximum length of the requested interval between start_time and end_time from Anomalis Service is not supposed to be larger than 30 minutes.
The requested stats are not supposed to be older than 2 months ago.
In case of missing data recovery procedure, you will receive 5 requests per second maximum.
5. Notifications
5.1 Anomaly Notification
When an anomaly is detected, the system sends a Telegram message containing the following parameters:
Incident ID: Unique identifier for the incident, used to link information about this anomaly with other events.
Type: Type of anomaly, currently always set to "Statistical". More types will be added in future versions.
Group: Logical grouping of incidents, such as merchant ID or other relevant business identifiers.
Metric: A specific name or designation for the metric used to detect the anomaly. It can include transaction types like "deposits" or "withdrawals" or the total transaction volume, such as "all transactions".
Detected: The specific moment in time when the anomaly was detected.
Layers affected: Time intervals where anomalies were detected (e.g., 5 minutes, 15 minutes, 2 hours, 8 hours, etc.). Describes the time layers where deviations were observed, including expected and actual metric values.
Example:
[Anomaly Detected]
Incident ID: 12345
Type: Statistical
Group: merchant1
Metric: deposits
Detected: 2024-08-23 08:15:00
Layers affected:
- 5 minutes (expected: 200, actual: 150)
- 15 minutes (expected: 600, actual: 500)5.2 Normalization Notification
Sent when the anomaly is resolved.
Example:
[Anomaly Resolved]
Incident ID: 12345
Group: merchant1
Metric: deposits
Incident Start: 2024-08-23 08:00:00
Incident End: 2024-08-23 09:00:00Last updated