Set a supplier's exception (by a person; an owner to loosen, an admin to tighten)
const url = 'https://api.invogi.com/v1/suppliers/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/control-overrides';const options = { method: 'PUT', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"overrides":{"actions":{"FUZZY_DUPLICATE":"INFORM"}},"reason":"Fixed monthly retainer, always the same amount.","expires_in_days":90}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PUT \ --url https://api.invogi.com/v1/suppliers/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/control-overrides \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "overrides": { "actions": { "FUZZY_DUPLICATE": "INFORM" } }, "reason": "Fixed monthly retainer, always the same amount.", "expires_in_days": 90 }'Thresholds and finding actions for one supplier, laid over the workspace settings. A finding may be relaxed to INFORM but never OFF; the checks that protect against payment redirection and impersonation (exact duplicate, changed or invalid bank details, inactive supplier, identity mismatch) can only be made stricter. A reason is required and the exception expires (default 90 days, at most 365). Replaces any existing exception. Audited, including what it replaced.
An exception that makes any check less strict than the workspace settings, or than the supplier’s current exception, needs an OWNER (403 for an admin); one that only adds scrutiny is open to an ADMIN. An exception an owner did not grant is held to “not looser than the workspace settings” when applied, even if the workspace is tightened later. Merging suppliers is judged the same way.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Request Bodyrequired
Section titled “Request Bodyrequired”object
object
object
object
object
object
Example
{ "overrides": { "actions": { "FUZZY_DUPLICATE": "INFORM" } }, "reason": "Fixed monthly retainer, always the same amount.", "expires_in_days": 90}Responses
Section titled “Responses”Exception saved
object
object
Example
{ "overrides": { "actions": { "FUZZY_DUPLICATE": "INFORM" } }, "reason": "Fixed monthly retainer, always the same amount.", "expiresAt": "2027-01-13T00:00:00.000Z", "active": true, "grantedByOwner": true}Invalid request
object
object
Example
{ "error": { "code": "NOT_FOUND" }}Missing or invalid API key
object
object
Example
{ "error": { "code": "NOT_FOUND" }}API key lacks required scope/role
object
object
Example
{ "error": { "code": "NOT_FOUND" }}Resource not found
object
object
Example
{ "error": { "code": "NOT_FOUND" }}The supplier has been merged into another