{"codes":[{"code":"GXPAY_NBS_AUT_F_000-001","module":"AUT","moduleName":"Authentication \u0026 Authorization","httpStatus":401,"type":"failure","message":"Missing or invalid access token.","description":"No bearer token, or the token failed signature/issuer/expiry validation."},{"code":"GXPAY_NBS_AUT_F_000-003","module":"AUT","moduleName":"Authentication \u0026 Authorization","httpStatus":403,"type":"failure","message":"Token lacks the required scope or audience for this operation.","description":"Authenticated but not authorised for the requested action."},{"code":"GXPAY_NBS_DEP_F_000-001","module":"DEP","moduleName":"Dependency","httpStatus":502,"type":"failure","message":"An upstream dependency returned an error.","description":"A downstream service or third party failed."},{"code":"GXPAY_NBS_DEP_F_000-003","module":"DEP","moduleName":"Dependency","httpStatus":503,"type":"failure","message":"The service is temporarily unavailable. Please retry shortly.","description":"Dependency circuit open or the process is shedding load."},{"code":"GXPAY_NBS_HLT_F_000-002","module":"HLT","moduleName":"Health","httpStatus":503,"type":"failure","message":"Service is not ready.","description":"Readiness probe: one or more critical dependencies are unavailable."},{"code":"GXPAY_NBS_HLT_S_000-001","module":"HLT","moduleName":"Health","httpStatus":200,"type":"success","message":"Service is healthy.","description":"Liveness probe: the process is up and serving."},{"code":"GXPAY_NBS_HLT_S_000-002","module":"HLT","moduleName":"Health","httpStatus":200,"type":"success","message":"Service is ready.","description":"Readiness probe: all critical dependencies are reachable."},{"code":"GXPAY_NBS_IDN_F_000-002","module":"IDN","moduleName":"Identity","httpStatus":422,"type":"failure","message":"Identity value failed format validation.","description":"BVN/NIN/vNIN/phone failed local format checks before the provider call."},{"code":"GXPAY_NBS_IDN_F_000-004","module":"IDN","moduleName":"Identity","httpStatus":502,"type":"failure","message":"Identity provider is unavailable.","description":"NIBSS/live adapter transport or upstream failure."},{"code":"GXPAY_NBS_IDN_F_000-005","module":"IDN","moduleName":"Identity","httpStatus":422,"type":"failure","message":"iAgree session is invalid or expired.","description":"Caller submitted an unknown, expired, or already-consumed iAgree sessionId."},{"code":"GXPAY_NBS_IDN_F_000-006","module":"IDN","moduleName":"Identity","httpStatus":422,"type":"failure","message":"iAgree OTP is invalid.","description":"OTP missing, malformed, or rejected by NIBSS for the active consent session."},{"code":"GXPAY_NBS_IDN_S_000-001","module":"IDN","moduleName":"Identity","httpStatus":200,"type":"success","message":"Identity check completed successfully.","description":"Provider returned a conclusive outcome (matched, not_matched, not_found, or pending_consent)."},{"code":"GXPAY_NBS_IDN_S_000-002","module":"IDN","moduleName":"Identity","httpStatus":200,"type":"success","message":"iAgree consent session initiated.","description":"NIBSS iGree OIDC authorize URL (and, in stub mode, OTP delivery methods) is ready for the subject."},{"code":"GXPAY_NBS_IDN_S_000-003","module":"IDN","moduleName":"Identity","httpStatus":200,"type":"success","message":"iAgree OTP dispatched.","description":"Stub-only: OTP was sent to the selected consent channel. Live iGree OTP happens on the NIBSS IdP page."},{"code":"GXPAY_NBS_IDN_S_000-004","module":"IDN","moduleName":"Identity","httpStatus":200,"type":"success","message":"iGree consent completed.","description":"NIBSS IdP authorization code was exchanged for an access token; caller may fetch details."},{"code":"GXPAY_NBS_RAT_F_000-001","module":"RAT","moduleName":"Rate Limiting","httpStatus":429,"type":"failure","message":"Rate limit exceeded. Retry after the Retry-After interval.","description":"The caller exceeded the configured request rate."},{"code":"GXPAY_NBS_REQ_F_000-001","module":"REQ","moduleName":"Request","httpStatus":422,"type":"failure","message":"Request validation failed.","description":"One or more fields failed schema validation; see data.errors."},{"code":"GXPAY_NBS_REQ_F_000-002","module":"REQ","moduleName":"Request","httpStatus":400,"type":"failure","message":"The request could not be processed as sent.","description":"Malformed request (bad JSON, unsupported media type, etc.)."},{"code":"GXPAY_NBS_REQ_F_000-004","module":"REQ","moduleName":"Request","httpStatus":404,"type":"failure","message":"The requested route does not exist.","description":"No route matched the method and path."},{"code":"GXPAY_NBS_REQ_F_000-005","module":"REQ","moduleName":"Request","httpStatus":409,"type":"failure","message":"Idempotency key reused with a different request payload.","description":"The Idempotency-Key was already used for a different body."},{"code":"GXPAY_NBS_REQ_F_000-006","module":"REQ","moduleName":"Request","httpStatus":422,"type":"failure","message":"The Idempotency-Key header is required for this operation.","description":"A write route requiring idempotency was called without the header."},{"code":"GXPAY_NBS_RES_F_000-004","module":"RES","moduleName":"Resource","httpStatus":404,"type":"failure","message":"The requested resource was not found.","description":"Generic not-found for a resource lookup."},{"code":"GXPAY_NBS_RES_F_000-009","module":"RES","moduleName":"Resource","httpStatus":409,"type":"failure","message":"The resource is in a conflicting state.","description":"Generic conflict (e.g. duplicate, version mismatch)."},{"code":"GXPAY_NBS_SYS_F_000-001","module":"SYS","moduleName":"System","httpStatus":500,"type":"failure","message":"An unexpected error occurred. Please try again later.","description":"Unhandled internal error. Detail is logged server-side and never returned to the caller."}],"service":"NBS","serviceName":"nibss-middleware-service"}
