Problem responses

This page lists all explicitly supported exceptions and some guidance on how to handle them. In exceptional cases, an exception in the applications will not be handled by specialized exception handlers but instead delegate to the default exception handling. These responses are not described here but should still provide insights into potential ways of handling them.

See Resilience for guidance on generic exception handling.

Not Allowed

Status Code Status Phrase
405 Method Not Allowed

This response indicates that the client used an unsupported request method (aka HTTP Verb).

Potential fix

Verify that the request method matches the supported methods for the endpoint you are calling

Not Acceptable

Status Code Status Phrase
406 Not Acceptable

This response indicates that the server can not provide a response matching the client's requested response type as specified in the Accept header.

Potential fix

Verify that the request's Accept header matches the supported response types for the endpoint you are calling

Unsupported Content Type

Status Code Status Phrase
415 Unsupported Media Type

This response indicates that the server can not process the request's content due to unsupported formatting. This error can have several causes, either

  • the request body itself, or
  • the media type of the request, or
  • in rare cases the content encoding of the request.
Potential fix
  • Verify the request format matches the provided Content-Type header
  • Verify the Content-Type header is supported by the endpoint

Not Found

Status Code Status Phrase
404 Not Found

This response indicates that one or more of the entities required to fulfil the request could not be found. This can be both due to the business_id not being found, or the specified version (defined in the If-Match-header using a weak ETag) not being available.

There are several reasons why this might occur. In the case of an entity not being found, there might be a race condition in the integration (another thread has already removed the entity in question) or invalid state in the integration (the integration does not know whether the entity already exists or has been deleted). A Not Found due to the version not matching usually points to a race condition.

Potential fix
  • Maintain a consistent state in the integrating platform
  • Verify that the entity exists using a GET -call

Conflict

Status Code Status Phrase
409 Conflict

This response indicates concurrent conflicting write operations have occurred during the processing of the request. Write operations happen within a transaction to ensure ACID operations, when two writes impact the same entities only one of them is acknowledged.

Potential fix

Retry the request

Invalid Format

Status Code Status Phrase
400 Bad Request

This response indicated an error in the request's body. The message could not be correctly converted to the internal representation of this request. The response can provide additional details on the errors, in the violations-field, depending on how severe they are. Eg: An unparsable JSON will not contain additional details, while an invalid JSON will try to point to the invalid fields.

Potential fix

Depending on the response, either:

  • Fix the request format, or
  • Fix the violations in the error response

Business Constraint

Status Code Status Phrase
400 Bad Request

This response indicates that the request violates one or more business rules. The response will explain the broken constraints in the detail property or specify individual constraint violations per field in the violations property.

Potential fix

Fix the broken constraints indicated in either the detail or violations property

Constraint Violation

Status Code Status Phrase
412 Precondition Failed

This response indicates an optimistic lock failure. When providing an If-Match-header, containing a weak ETag representing the entity version, this lock is validating before modifying the entity in question.

Potential fix
  • Execute the operation with the correct version of the impacted entity, or
  • Discard the operation since it has been superseded

Payload too large

Status Code Status Phrase
413 Content Too Large

This response indicates that the body of the request is too large. Some endpoints might limit the amount of data you can send.

Potential fix

Split up the data into multiple, smaller requests

Unauthorized

Status Code Status Phrase
401 Unauthorized

This response indicates that the request is missing valid authentication credentials. Either no valid token was provided or the token has expired. See authentication for more details.

Potential fix
  • Verify that a bearer token is provided via the Authorization header
  • Make sure that the token provided is valid and has not expired

Forbidden

Status Code Status Phrase
403 Forbidden

This response indicates that the token is not allowed to perform the action. When you get this error it means that you are authenticated successfully, but the current user or service account is not allowed to perform the action.

Potential fix

Contact our helpdesk to verify that the service account has been configured correctly to perform the action you're trying to perform

Gateway Timeout

Status Code Status Phrase
504 Gateway Timeout

This response indicates a timeout when executing calls to downstream systems.

Potential fix

Retry the request

Service Unavailable

Status Code Status Phrase
503 Service Unavailable

This response indicates a required service for handling the request is unavailable. There are several potential causes for this response:

  • A component upstream from the application is unresponsive. See Resilience on general strategies for handling these resonses, or
  • A downstream component is unresponsive. The application should provide guidance in the error response.
Potential fix

If a problem+json response leads to this page, follow the guidance in the response details. In other cases, retry the request.

Server Error

Status Code Status Phrase
500 Internal Server Error

This response indicates an unrecoverable exception has occurred while processing your request. This could be either due to an internal issue or errors in downstream systems.

Potential fix

Retry the request

Issues

A Server Error can indicate bugs or unforeseen states in the application. Internal monitoring tools will raise issues for this to alert the development teams.

See Operational Excellence.

Copyright © Conundra BV - PTV Logistics GmbH. All right reserved.