Every API here is available over the APIs.io API and to AI agents over MCP.
{
"openapi": "3.1.0",
"info": {
"title": "Observability API",
"version": "1.0.0"
},
"servers": [
{
"url": "https://api.fenergox.com/tm/observability"
}
],
"paths": {
"/api/v1/transactions/summary": {
"get": {
"tags": [
"Transactions"
],
"summary": "Transaction Ingestion Status By Dates",
"description": "Returns the status of transaction requests, categorizing them as successful or failed,\nand grouping the results by date on which the requests were made.",
"operationId": "transaction_ingestion_status_by_dates_api_v1_transactions_summary_get",
"parameters": [
{
"name": "start_date",
"in": "query",
"required": true,
"schema": {
"type": "string",
"description": "The start date from which the metrics should be generated.",
"title": "Start Date"
},
"description": "The start date from which the metrics should be generated."
},
{
"name": "end_date",
"in": "query",
"required": true,
"schema": {
"type": "string",
"description": "The end date upto which the metrics should be generated.",
"title": "End Date"
},
"description": "The end date upto which the metrics should be generated."
}
],
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TransactionIngestionByDate"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
}
}
},
"/api/v1/transactions/events": {
"get": {
"tags": [
"Transactions"
],
"summary": "Transaction Ingestion Status By Modifications",
"description": "Returns the events for the requested modification external ids.",
"operationId": "transaction_ingestion_status_by_modifications_api_v1_transactions_events_get",
"parameters": [
{
"name": "modification_external_ids",
"in": "query",
"required": true,
"schema": {
"type": "string",
"description": "The modification_external_ids for which the details should be returned.",
"title": "Modification External Ids"
},
"description": "The modification_external_ids for which the details should be returned."
}
],
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TransactionIngestionByModifications"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
}
}
},
"/api/v1/transactions/failed-modifications": {
"get": {
"tags": [
"Transactions"
],
"summary": "Failed Modifications Per Date",
"description": "Returns the list of failed modifications for the requested date.",
"operationId": "failed_modifications_per_date_api_v1_transactions_failed_modifications_get",
"parameters": [
{
"name": "date",
"in": "query",
"required": true,
"schema": {
"type": "string",
"description": "The date for which the list of failed modifications should be returned.",
"title": "Date"
},
"description": "The date for which the list of failed modifications should be returned."
}
],
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResponseFailedModifications"
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
}
}
},
"/api/v1/batch-transactions/batches": {
"get": {
"tags": [
"Batch Transactions"
],
"summary": "Batch Transactions Batches",
"description": "Returns batch transaction information either by batch IDs or by date range.\n\nUse either 'ids' parameter OR both 'start_date' and 'end_date' parameters.",
"operationId": "batch_transactions_batches_api_v1_batch_transactions_batches_get",
"parameters": [
{
"name": "ids",
"in": "query",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Comma-separated batch IDs to retrieve details for.",
"title": "Ids"
},
"description": "Comma-separated batch IDs to retrieve details for."
},
{
"name": "start_date",
"in": "query",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The start date from which the metrics should be generated.",
"title": "Start Date"
},
"description": "The start date from which the metrics should be generated."
},
{
"name": "end_date",
"in": "query",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The end date up to which the metrics should be generated.",
"title": "End Date"
},
"description": "The end date up to which the metrics should be generated."
}
],
"responses": {
"200": {
"description": "Successful response with batch transaction details",
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/components/schemas/BatchDetail"
}
},
{
"type": "array",
"items": {
"$ref": "#/components/schemas/BatchTransactionsByDateResponse"
}
}
],
"title": "Response Batch Transactions Batches Api V1 Batch Transactions Batches Get"
},
"examples": {
"by_ids": {
"summary": "Batch details retrieved by batch IDs",
"value": [
{
"batch_id": "batch-123",
"status": "completed",
"ingest_start": "2023-10-01T10:00:00Z",
"ingest_end": "2023-10-01T10:15:00Z",
"duration_seconds": 900,
"reject_on_invalid": true,
"counts": {
"total": 1000,
"accepted": 950,
"invalid": 50
},
"exports": {
"s3_location": "s3://bucket/path/to/batch-123"
}
}
]
},
"by_date_range": {
"summary": "Batch transactions grouped by date",
"value": [
{
"date": "2023-10-01",
"count": 1,
"batches": [
{
"batch_id": "batch-123",
"status": "completed",
"ingest_start": "2023-10-01T10:00:00Z",
"ingest_end": "2023-10-01T10:15:00Z",
"duration_seconds": 900,
"reject_on_invalid": true,
"counts": {
"total": 1000,
"accepted": 950,
"invalid": 50
}
}
]
}
]
}
}
}
}
},
"400": {
"description": "Invalid parameter combination",
"content": {
"application/json": {
"example": {
"message": "Invalid parameters. Provide either 'ids' OR both 'start_date' and 'end_date'."
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
}
}
},
"/api/v1/rules/execution": {
"get": {
"summary": "Rules Execution Summary",
"description": "Returns rule execution information either by rule IDs, execution ID, or by date range.\n\nUse either 'ids' parameter, 'execution_id' parameter, OR both 'start_date' and 'end_date' parameters.",
"operationId": "rules_execution_api_v1_rules_execution_get",
"parameters": [
{
"name": "ids",
"in": "query",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Comma-separated Rule IDs to retrieve details for.",
"title": "Ids"
},
"description": "Comma-separated Rule IDs to retrieve details for."
},
{
"name": "execution_id",
"in": "query",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Execution ID to retrieve a summary for.",
"title": "Execution Id"
},
"description": "Execution ID to retrieve a summary for."
},
{
"name": "start_date",
"in": "query",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The start date from which the metrics should be generated.",
"title": "Start Date"
},
"description": "The start date from which the metrics should be generated."
},
{
"name": "end_date",
"in": "query",
"required": false,
"schema": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The end date up to which the metrics should be generated.",
"title": "End Date"
},
"description": "The end date up to which the metrics should be generated."
}
],
"responses": {
"200": {
"description": "Successful response with rule execution details",
"content": {
"application/json": {
"schema": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/components/schemas/RuleExecutionDetail"
},
"title": "Rule execution by rule ID(s) filter"
},
{
"type": "array",
"items": {
"$ref": "#/components/schemas/RuleExecutionsByDateResponse"
},
"title": "Rule execution by dates filter"
},
{
"$ref": "#/components/schemas/RuleExecutionByExecutionIDSummary",
"title": "Rule execution by execution ID filter"
}
],
"title": "Response Rules Execution Api V1 Rules Execution Get"
},
"examples": {
"by_ids": {
"summary": "Rule execution details retrieved by rule IDs",
"value": [
{
"rule_id": "rule-123",
"status": "completed",
"rule_alias": "High Risk Transaction Rule",
"rule_description": "This rule checks for high risk transactions.",
"total_alerts_received": 25,
"unique_alerts_after_deduplication": 20,
"rule_effective_date": "2023-10-01",
"execution_id": "exec-456"
}
]
},
"by_date_range": {
"summary": "Rule executions grouped by date",
"value": [
{
"requested_run_date": "2023-10-01",
"count": 1,
"rules": [
{
"rule_id": "rule-123",
"status": "completed",
"rule_alias": "High Risk Transaction Rule",
"rule_description": "This rule checks for high risk transactions.",
"total_alerts_received": 25,
"unique_alerts_after_deduplication": 20,
"rule_effective_date": "2023-10-01",
"execution_id": "exec-456"
}
]
}
]
},
"by_execution_id": {
"summary": "Completed run \u2013 some rules failed (partially_failed, is_complete: true)",
"value": {
"execution_id": "exec-456",
"requested_run_date": "2026-03-15",
"rule_effective_date": "2026-03-15",
"overall_status": "partially_failed",
"is_complete": true,
"total_rules": 12,
"completion_percent": 100.0,
"progress": {
"requested_rules": 0,
"started_rules": 0,
"succeeded_rules": 10,
"failed_rules": 2
},
"alerts": {
"total_alerts_received": 245,
"unique_alerts_after_deduplication": 198
},
"timing": {
"first_event_at": "2026-03-15T00:01:12",
"last_event_at": "2026-03-15T00:08:44",
"duration_seconds": 452
},
"rules": [
{
"rule_id": "rule-001",
"status": "succeeded",
"rule_alias": "High Risk Transaction Rule",
"rule_description": "Flags transactions above risk threshold.",
"total_alerts_received": 120,
"unique_alerts_after_deduplication": 98
},
{
"rule_id": "rule-002",
"status": "failed",
"rule_alias": "Velocity Check Rule",
"total_alerts_received": 0,
"unique_alerts_after_deduplication": 0
}
]
}
},
"by_execution_id_in_progress_with_failures": {
"summary": "Running with failures (in_progress_with_failures, is_complete: false)",
"value": {
"execution_id": "exec-789",
"requested_run_date": "2026-03-15",
"rule_effective_date": "2026-03-15",
"overall_status": "in_progress_with_failures",
"is_complete": false,
"total_rules": 12,
"completion_percent": 50.0,
"progress": {
"requested_rules": 0,
"started_rules": 5,
"succeeded_rules": 5,
"failed_rules": 2
},
"alerts": {
"total_alerts_received": 120,
"unique_alerts_after_deduplication": 98
},
"timing": {
"first_event_at": "2026-03-15T00:01:12",
"last_event_at": "2026-03-15T00:05:00",
"duration_seconds": 228
},
"rules": [
{
"rule_id": "rule-001",
"status": "succeeded",
"rule_alias": "High Risk Transaction Rule",
"rule_description": "Flags transactions above risk threshold.",
"total_alerts_received": 120,
"unique_alerts_after_deduplication": 98
},
{
"rule_id": "rule-002",
"status": "failed",
"rule_alias": "Velocity Check Rule",
"total_alerts_received": 0,
"unique_alerts_after_deduplication": 0
}
]
}
}
}
}
}
},
"400": {
"description": "Invalid parameter combination",
"content": {
"application/json": {
"example": {
"message": "Invalid parameters. Provide either 'ids', 'execution_id', OR both 'start_date' and 'end_date'."
}
}
}
},
"422": {
"description": "Validation Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
}
}
}
}
},
"/api/v1/data-export/trigger": {
"post": {
"tags": [
"Data Export"
],
"summary": "Request Report",
"description": "Request a transaction report for a specific date. Reports are generated asynchronously \u2014 you will receive a job ID straight away and can check its status until the report is ready to download. Each report contains all modification external IDs ingested on the requested date, available as a downloadable JSON file.",
"operationId": "request_report_api_v1_data_export_trigger_post",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReportTriggerRequest"
},
"example": {
"report_date": "2026-03-04"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Report request accepted \u2014 use the returned job_id to check progress.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReportTriggerResponse"
},
"examples": {
"success": {
"summary": "Report job created",
"value": {
"job_id": "7a4a2375-4467-4816-b48f-ccf8a3998c2e"
}
}
}
}
}
},
"400": {
"description": "Invalid request \u2014 check that the date is correctly formatted and within the allowed range.",
"content": {
"application/json": {
"examples": {
"invalid_format": {
"summary": "Date format is incorrect",
"value": {
"message": "report_date must be in YYYY-MM-DD format"
}
},
"date_out_of_range": {
# --- truncated at 32 KB (85 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/fenergo/refs/heads/main/openapi/fenergo-tm-observability-api-spec-openapi.json