{"lexicon":1,"id":"money.atmosphere.payment.declineRecord","defs":{"main":{"type":"procedure","description":"Signal that the originating app cannot write a delegated record. ATM broker-writes when possible instead of waiting for the TTL. Requires a service-auth JWT signed by the originator app DID. New callers send the complete proof lifecycle pair so a delayed decline cannot mutate a newer proof generation; both fields remain optional only for rolling compatibility with callers predating lifecycle fencing.","input":{"encoding":"application/json","schema":{"type":"object","required":["paymentId","recordType"],"properties":{"paymentId":{"type":"string","maxLength":256},"recordType":{"type":"string","knownValues":["payer","creator"],"maxLength":16},"reason":{"type":"string","maxLength":256},"proofLifecycleGeneration":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Exact verified broker-proof lifecycle generation from the delegated request. Present together with proofLifecycleState."},"proofLifecycleState":{"type":"string","knownValues":["verified"],"maxLength":16,"description":"Verified state paired with proofLifecycleGeneration."}}}},"output":{"encoding":"application/json","schema":{"type":"object","required":["paymentId","recordType","resolvedVia"],"properties":{"paymentId":{"type":"string","maxLength":256},"recordType":{"type":"string","knownValues":["payer","creator"],"maxLength":16},"resolvedVia":{"type":"string","knownValues":["broker","declined"],"maxLength":16}}}},"errors":[{"name":"OriginatorDidMismatch","description":"Caller is not the payment's originating app."},{"name":"PaymentNotFound","description":"Payment not found."},{"name":"DeclineFailed","description":"The decline could not be recorded."},{"name":"ProofLifecycleGenerationSuperseded","description":"The delegated request's verified proof lifecycle generation is no longer current."}]}}}