---
updatedAt: 2026-06-02T07:39:33.000Z
agentTools:
  projectIndex: https://docs.striga.com/llms.txt
---

# Record a security-relevant business event

Reports a security event for a business, driving progressive account lockout under PSD2. — `RESET_PASSWORD_COMPLETED` revokes every active SCA session for the business and clears the failed-login counter (an account already suspended at level 5 remains suspended until access is restored by support). — `FAILED_LOGIN_ATTEMPT` increments the cumulative counter and escalates the lock at each milestone: 5 attempts → 15 minutes, 6 → 30 minutes, 7 → 1 hour, 8 → 24 hours, 9 or more → suspension with no automatic recovery.

# OpenAPI definition

```json
{
  "openapi": "3.0.0",
  "info": {
    "version": "1.0.0",
    "title": "Striga Strong Customer Authentication",
    "description": "Endpoints for Striga's Strong Customer Authentication (SCA): factor enrollment, unified SCA login, transaction approval, and Trusted Beneficiary management. SCA supports authenticator (TOTP), passkey, and SMS verification for both individual and business accounts. Each request is authenticated with your API key and an HMAC signature."
  },
  "servers": [
    {
      "url": "https://www.sandbox.striga.com/api/v1",
      "description": "Sandbox"
    },
    {
      "url": "https://www.striga.com/api/v1",
      "description": "Production"
    }
  ],
  "tags": [
    {
      "name": "Business Account Security",
      "description": "Report security-relevant business events that drive progressive account lockout and session revocation. Keyed by `businessId`."
    }
  ],
  "paths": {
    "/business/record-event": {
      "post": {
        "tags": [
          "Business Account Security"
        ],
        "operationId": "businessRecordEvent",
        "summary": "Record a security-relevant business event",
        "description": "Reports a security event for a business, driving progressive account lockout under PSD2. — `RESET_PASSWORD_COMPLETED` revokes every active SCA session for the business and clears the failed-login counter (an account already suspended at level 5 remains suspended until access is restored by support). — `FAILED_LOGIN_ATTEMPT` increments the cumulative counter and escalates the lock at each milestone: 5 attempts → 15 minutes, 6 → 30 minutes, 7 → 1 hour, 8 → 24 hours, 9 or more → suspension with no automatic recovery.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "businessId",
                  "event"
                ],
                "properties": {
                  "businessId": {
                    "type": "string",
                    "format": "uuid",
                    "description": "The business the event is recorded against.",
                    "example": "8b1d5f2a-3c4e-4a6b-9f0d-7e2c1a4b5d6e"
                  },
                  "event": {
                    "type": "string",
                    "enum": [
                      "RESET_PASSWORD_COMPLETED",
                      "FAILED_LOGIN_ATTEMPT"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Event recorded. The populated fields depend on the event and resulting lock state: `RESET_PASSWORD_COMPLETED` returns only `event`; `FAILED_LOGIN_ATTEMPT` adds `failedAttempts` plus `lockedUntil` (time-bounded lock) or `suspended: true` (level-5 suspension).",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "event"
                  ],
                  "properties": {
                    "event": {
                      "type": "string",
                      "enum": [
                        "RESET_PASSWORD_COMPLETED",
                        "FAILED_LOGIN_ATTEMPT"
                      ]
                    },
                    "failedAttempts": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "Cumulative failed-login count. Present for `FAILED_LOGIN_ATTEMPT`."
                    },
                    "lockedUntil": {
                      "type": "string",
                      "format": "date-time",
                      "description": "End of the active lock window. Present for `FAILED_LOGIN_ATTEMPT` when a time-bounded lock is in effect."
                    },
                    "suspended": {
                      "type": "boolean",
                      "description": "Present and `true` when the attempt escalated to level 5 and the business was SUSPENDED."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Request was rejected. The `errorCode` field disambiguates.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "message",
                    "errorCode"
                  ],
                  "properties": {
                    "message": {
                      "type": "string"
                    },
                    "errorCode": {
                      "type": "string"
                    },
                    "reason": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Invalid API key or HMAC signature.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "message",
                    "errorCode"
                  ],
                  "properties": {
                    "message": {
                      "type": "string"
                    },
                    "errorCode": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": [],
            "authorization": []
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "apiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "api-key",
        "description": "Your Striga API key."
      },
      "authorization": {
        "type": "apiKey",
        "in": "header",
        "name": "Authorization",
        "description": "HMAC signature over the request body."
      }
    }
  }
}
```