CRM error codes (mpbx-crm)
Raised by the CRM integration routes under /api/v1/integrations/crm (W7-INT-01a). Messages never
contain a credential, a request URL or a CRM's answer; they name ids, field names, rules, status codes
and machine codes at most. Guide: CRM templates.
| Code | HTTP | Meaning | What to do |
|---|---|---|---|
MPBX-CRM-NOT-FOUND | 404 | No such integration in this company (another company's integration is invisible). | Check the id. |
MPBX-CRM-JOB-NOT-FOUND | 404 | No such journal job in this company, or it was purged (done jobs are kept 7 days, dead ones 30 days). | Check the id. |
MPBX-CRM-TEMPLATE-INVALID | 400 | The template text is not valid. The message lists the first five issues with their place in the document; POST /integrations/crm/validate lists all of them. | Fix the template; see the guide. |
MPBX-CRM-NAME-TAKEN | 409 | Another integration of the company has this name. | Choose another name. |
MPBX-CRM-FIELD-INVALID | 400 | A field is out of range: name (1 to 80 characters), a credential the template does not declare or whose value is empty, longer than 4096 bytes or has control characters, a test variable the operation does not have or of the wrong type, a lookup number that is not 3 to 20 digits (optionally with a leading +), a search query of 2 to 100 characters or a limit outside 1 to 20. | Fix the named field. |
MPBX-CRM-CHANGED | 409 | The integration changed between your read and your write. | Read it again and retry with the new ETag. |
MPBX-CRM-LIMIT-REACHED | 409 | The company already has 10 integrations. | Delete one. |
MPBX-CRM-CREDENTIALS-REQUIRED | 400 | The template names credentials that have no value, and you tried to switch the integration on, or to run a real (not dry-run) test, or a call needed one. This also happens after a template change moved base_url to another address: the stored credentials are then deleted on purpose (write-only credentials must not be sendable to an address their owner did not approve). | Set the missing credentials (PUT /integrations/crm/{id}/credentials). |
MPBX-CRM-CREDENTIALS-UNREADABLE | 500 | The sealed credentials cannot be opened (the master key was replaced without re-wrapping, or the row was damaged). | Set the credentials again. |
MPBX-CRM-DISABLED | 409 | The integration is switched off (creating a contact needs it on). | Switch it on. |
MPBX-CRM-OPERATION-UNSUPPORTED | 400 | The template has no such operation. | Add the operation to the template or choose another. |
MPBX-CRM-RATE-LIMITED | 429 | More than 20 test runs, or more than 600 lookups, searches and contact creations, in a minute for the company. | Wait a minute (Retry-After: 60). |
MPBX-CRM-NOT-RETRYABLE | 409 | Only a dead job can be tried again. | Wait for a pending job to finish. |
MPBX-CRM-CALL-BLOCKED | 503 | The outbound guard refused the CRM's address after name resolution: not https, or a private, loopback, link-local (cloud metadata), carrier-grade NAT, documentation, multicast or reserved address (IPv4-mapped and NAT64 forms included), or an internal name. | Use a public https address. |
MPBX-CRM-CALL-TIMEOUT | 503 | The CRM did not answer within the operation's time limit. | Check the CRM; raise timeout_ms (500 to 15000) if it is slow. |
MPBX-CRM-CALL-REFUSED | 503 | The CRM answered with an error status; the message gives the status. | Check the credentials and the request in the test console (dry run). |
MPBX-CRM-CALL-BAD-RESPONSE | 503 | The CRM's answer is not JSON, or the template reads nothing from it. | Compare the response mapping with the real answer. |
MPBX-CRM-CALL-FAILED | 503 | The CRM could not be reached (name resolution, connection, TLS) or its answer was larger than 256 KiB. | Check the address and the CRM's availability. |
The log of calls (GET /integrations/crm/{id}/log) and the dead journal jobs carry the short machine
code of a failure instead of an HTTP problem: blocked, dns, network, timeout, too_large,
http_status, bad_response, template_error (the template could not build the request) and
credentials_missing.