Skip to main content

Monitoring Codes

{/ AUTOGENERATED โ€” do not edit by hand. Source: erp-integration-api packages/erp-utils/src/monitoring/snapshots/monitoring-codes.json Regenerate: npm run update-monitoring-codes /}

Monitoring Codes

Every monitoring event carries a code and a level. The code says what happened; the level says how much you should care. Both are filterable in the Integration Hub's Monitoring tab and through the events API.

There are 80 codes. You are most likely here because you saw one in a failed event โ€” find it below.

tip

A code's level is fixed. That is what makes alert rules scoped to _error_ or _warning_ predictable โ€” see Alerting.

Errorโ€‹

Something failed and the event did not do what it was meant to do. These are what the default alert rules watch.

CodeWhat it means
ATTACHMENT_NOT_FOUNDThe file no longer exists โ€” it was removed between the event and the delivery
ATTRIBUTE_TYPE_MISMATCHAn attribute value did not match the type declared in the entity schema
DEPRECATED_ENDPOINTThis endpoint version is deprecated
DIRECT_ENTITY_NOT_ALLOWEDThe entity is not permitted by the use case entity allowlist
DIRECT_PAYLOAD_INVALIDThe direct mode payload failed validation against the versioned payload schema
DIRECT_VERSION_UNSUPPORTEDThe direct mode payload version is not supported by the platform
ENTITY_REFERENCE_NOT_FOUNDA direct-by-id entity reference points at an entity that does not exist or has a different schema
EVENT_NOT_CONFIGUREDNo mapping configuration found for this event type
EXTERNAL_API_ERRORAn external API returned an error
EXTERNAL_ERRORAn error span pushed by an external system (e.g. your integration middleware) via the external monitoring events endpoint. epilot assigns the code from the span's level; the middleware never sends one.
FAN_OUT_INVALID_RESULTThe split expression returned something other than a list, so no deliveries could be created โ€” see split_expression_result_type
FILE_EXTRACTION_FAILEDFailed to extract file from the request
FILE_FETCH_FAILEDThe file could not be fetched from epilot before it could be uploaded
FILE_PROXY_UPLOAD_FAILEDA file upload failed terminally, or every delivery attempt was exhausted
FILE_TOO_LARGEThe file exceeds the maximum size configured on the upload use case
INTEGRATION_NOT_FOUNDThe inbound event referenced an integration_id that does not exist in the calling token's organization. Check the integration id and that the token belongs to the same org.
INVALID_METER_READING_ATTRIBUTESMeter reading has invalid attributes
MALFORMED_PAYLOADThe event payload could not be parsed (malformed JSON)
MAPPING_EXPRESSION_FAILEDA mapping expression failed to evaluate
METERING_API_ERRORThe metering API returned an error
METER_READING_GROUP_FAILEDA batch write of meter readings failed permanently after all retries โ€” summary event alongside the per-reading errors
METER_READING_GROUP_RETRYINGA batch write of meter readings failed and will be retried automatically โ€” one event per attempt covering the whole group (reading_count and external_ids in details)
MISSING_REQUIRED_PARAMA required parameter is missing from the request
MISSING_UNIQUE_IDENTIFIERSThe event is missing the unique identifier field(s) required to match an entity
OAUTH2_TOKEN_FAILUREFailed to obtain an OAuth2 access token
PAYLOAD_TOO_LARGEThe payload exceeded the maximum size accepted by the receiving system
PRUNE_SCOPE_PARTIAL_FAILUREScope pruning completed with some failures
RECURSION_DEPTH_EXCEEDEDMaximum recursion depth was exceeded during processing
RELATION_REF_ITEM_NOT_FOUNDThe relation_ref target entity exists but the referenced item/value could not be matched โ€” skipped as non-retryable. Check the mapping configuration and the entity data.
RELATION_REF_VALUE_UNDEFINEDA relation_ref mapping value resolved to undefined โ€” check the mapping expression
REQUIRED_PARAM_MISSINGA param the use case marks as required resolved to nothing, so the delivery was stopped before anything was sent โ€” see param_name
SECURE_PROXY_DISABLEDThe secure proxy use case is disabled
SECURE_PROXY_DOMAIN_BLOCKEDThe target domain is blocked
SECURE_PROXY_DOMAIN_NOT_ALLOWEDThe target domain is not in the allowlist
SECURE_PROXY_ERRORAn error occurred in the secure proxy
SECURE_PROXY_INVALID_CONFIGThe secure proxy configuration is invalid
SECURE_PROXY_INVALID_TYPEThe secure proxy type is invalid
SECURE_PROXY_INVALID_URLThe target URL is invalid
SECURE_PROXY_IP_BLOCKEDThe target IP address is blocked
SECURE_PROXY_IP_NOT_ALLOWEDThe target IP address is not in the allowlist
SECURE_PROXY_NOT_FOUNDThe secure proxy use case was not found
SECURE_PROXY_UNAVAILABLESecure proxy service is unavailable
SIGNATURE_VERIFICATION_FAILEDRequest signature could not be verified
SIGNATURE_VERIFICATION_UNAVAILABLEThe file service could not be reached to verify the request signature
STEP_DISABLEDA request step's "run this step when" expression returned false, so this step and every step after it were skipped. This is the configuration working as written, not a fault.
TIMEOUTThe operation timed out
UNIQUE_ID_MULTIPLE_MATCHESMultiple entities matched the unique ID
UNIQUE_ID_NOT_IN_SCHEMAThe unique ID attribute is not defined in the entity schema
UNKNOWN_ERRORAn unexpected error occurred during processing
USE_CASE_DISABLEDThe use case is currently disabled
USE_CASE_INVALID_TYPEThe use case type is invalid or unsupported
USE_CASE_MISSING_CONFIGThe use case is missing required configuration
USE_CASE_NOT_FOUNDThe use case could not be found

Warningโ€‹

Processing continued, but something needs a human eye โ€” often a retry in flight or a value nobody has mapped yet.

CodeWhat it means
ACK_TIMEOUTAcknowledgement timed out waiting for the ERP system
EXTERNAL_WARNINGA warning span pushed by an external system via the external monitoring events endpoint.
FILE_PROXY_UPLOAD_RETRYINGA file upload failed with a retryable error and will be retried automatically โ€” one event per attempt
LOOKUP_UNMAPPEDA value was not listed in a lookup table and its fallback was used โ€” see lookup_name and lookup_key for the gap
SOFT_DELETED_ENTITY_MATCHEDA soft-deleted entity matched the unique ID โ€” it will be resurrected on upsert, or referenced as-is by a relation. Investigate why the ERP source is sending events for a deleted entity.

Successโ€‹

The event did what it was meant to do. Useful for confirming a sync actually landed.

CodeWhat it means
ENTITY_CREATEDA new entity was created in epilot
ENTITY_DELETEDAn entity was deleted from epilot
ENTITY_NO_OPNo changes were needed for the entity
ENTITY_UPDATEDAn existing entity was updated in epilot
EXTERNAL_SUCCESSA success span pushed by an external system via the external monitoring events endpoint.
FILE_PROXY_OKFile proxy request completed successfully
FILE_PROXY_UPLOADEDThe external system accepted the file
METER_READING_DELETEDOne or more meter readings were deleted โ€” emitted once per batch, not per reading (reading_count and external_ids in details)
METER_READING_UPSERTEDOne or more meter readings were created or updated โ€” emitted once per batch, not per reading (reading_count and external_ids in details)
PRUNE_SCOPE_COMPLETEDScope pruning completed successfully
WEBHOOK_DELIVEREDWebhook was delivered successfully

Infoโ€‹

Lifecycle markers rather than outcomes: a message was queued, a duplicate was ignored, a step was skipped by configuration. Counted in total events, but excluded from the success rate.

CodeWhat it means
ACK_CONFIRMEDAcknowledgement was confirmed by the ERP system
ACK_PENDINGAcknowledgement is pending from the ERP system
DUPLICATE_EVENTThis event was already processed (duplicate)
EXTERNAL_INFOAn informational span pushed by an external system via the external monitoring events endpoint.
FAN_OUT_EMPTYThe split expression returned an empty list, so nothing was sent โ€” expected for events that carry no relevant items
FILE_PROXY_UPLOAD_ENQUEUEDA per-file upload was accepted for delivery during fan-out
MSG_ACKEDOutbound message acknowledged by the polling consumer and removed from the queue
MSG_DEAD_LETTEREDOutbound message moved to the dead-letter queue after exhausting delivery attempts, or via an operator skip
MSG_ENQUEUEDOutbound message enqueued to the poll queue, awaiting consumption by the ERP
MSG_EXPIRED_UNPOLLEDOutbound message expired before being consumed โ€” retention elapsed without a successful poll
MSG_HEAD_BLOCKEDOutbound stream halted by a poison head message (block policy) โ€” requires operator unblock or consumer acknowledgement

Status-code familiesโ€‹

Some codes are generated from an upstream response rather than drawn from the fixed list above.

PatternLevelWhat it means
HTTP_{status}warningThe upstream system answered the proxied request with this HTTP status. The proxy itself worked โ€” it reached the target and returned its answer โ€” so the refusal is recorded against the use case that owns the request.