OPT-OPS-002Bank's choiceregulatedinconsistencyAPI contract and operations

Response to a feature not offered

How does the bank respond to a call to a feature it does not offer?

The options

  • 400

    The endpoint is not implemented at all.

  • 501

    It is implemented but cannot respond in this context.

  • 405 and 406

    Method not supported, or response format not offered.

Bank side
Fill in details in the error, with path and expectedEnumeration when possible. FORMAT_ERROR can give the path of the field at fault.
TPP side
Treat a 400 as a possible “not implemented”, and read details.
Regulation

In case of an error, the bank sends the TPP a message explaining the reason (Article 36(2) of the RTS).

Texts cited

Spec inconsistency
The 501 is only declared on PUT /consents and GET /trusted-beneficiaries, and several paths do not declare the 400 that the rule calls for.

Entry checked on October 19, 2026.

Based on the STET PSD2 API 1.6.3 specification, licensed CC BY 3.0 FR.

The entry as stored
{
  "id": "OPT-OPS-002",
  "edition": "1.6.3",
  "chooser": "aspsp",
  "title": {
    "fr": "Réponse à une fonction non offerte",
    "en": "Response to a feature not offered",
    "es": "Respuesta a una función no ofrecida",
    "pt-br": "Resposta a uma função não oferecida"
  },
  "question": {
    "fr": "Comment la banque répond-elle à un appel vers une fonction qu'elle n'offre pas ?",
    "en": "How does the bank respond to a call to a feature it does not offer?",
    "es": "¿Cómo responde el banco a una llamada a una función que no ofrece?",
    "pt-br": "Como o banco responde a uma chamada para uma função que ele não oferece?"
  },
  "options": [
    {
      "label": {
        "fr": "`400`",
        "en": "`400`",
        "es": "`400`",
        "pt-br": "`400`"
      },
      "text": {
        "fr": "Le point d'entrée n'est pas implémenté du tout.",
        "en": "The endpoint is not implemented at all.",
        "es": "El endpoint no está implementado en absoluto.",
        "pt-br": "O endpoint não está implementado de forma alguma."
      }
    },
    {
      "label": {
        "fr": "`501`",
        "en": "`501`",
        "es": "`501`",
        "pt-br": "`501`"
      },
      "text": {
        "fr": "Il est implémenté mais ne peut pas répondre dans ce contexte.",
        "en": "It is implemented but cannot respond in this context.",
        "es": "Está implementado, pero no puede responder en este contexto.",
        "pt-br": "Ele está implementado, mas não pode responder nesse contexto."
      }
    },
    {
      "label": {
        "fr": "`405` et `406`",
        "en": "`405` and `406`",
        "es": "`405` y `406`",
        "pt-br": "`405` e `406`"
      },
      "text": {
        "fr": "Méthode non supportée, ou format de réponse non proposé.",
        "en": "Method not supported, or response format not offered.",
        "es": "Método no soportado, o formato de respuesta no ofrecido.",
        "pt-br": "Método não suportado, ou formato de resposta não oferecido."
      }
    }
  ],
  "stet": {
    "sections": [
      {
        "part": "framework",
        "section": "3.8",
        "page": 57
      }
    ],
    "openapi": [
      "501",
      "405"
    ],
    "flows": [],
    "changes": [],
    "remark": null
  },
  "aspsp": {
    "fr": "Renseigner `details` dans l'erreur, avec `path` et `expectedEnumeration` quand c'est possible. `FORMAT_ERROR` peut indiquer le chemin du champ en cause.",
    "en": "Fill in `details` in the error, with `path` and `expectedEnumeration` when possible. `FORMAT_ERROR` can give the path of the field at fault.",
    "es": "Completar `details` en el error, con `path` y `expectedEnumeration` cuando sea posible. `FORMAT_ERROR` puede indicar la ruta del campo afectado.",
    "pt-br": "Preencher `details` no erro, com `path` e `expectedEnumeration` quando possível. `FORMAT_ERROR` pode indicar o caminho do campo com problema."
  },
  "tpp": {
    "fr": "Traiter un 400 comme un possible « non implémenté », et lire `details`.",
    "en": "Treat a 400 as a possible “not implemented”, and read `details`.",
    "es": "Tratar un 400 como un posible «no implementado», y leer `details`.",
    "pt-br": "Tratar um 400 como um possível “não implementado” e ler `details`."
  },
  "regulation": {
    "text": {
      "fr": "En cas d'erreur, la banque envoie au TPP un message qui en explique la raison (art. 36(2) des RTS).",
      "en": "In case of an error, the bank sends the TPP a message explaining the reason (Article 36(2) of the RTS).",
      "es": "En caso de error, el banco envía al TPP un mensaje que explica el motivo (art. 36(2) de las RTS).",
      "pt-br": "Em caso de erro, o banco envia ao TPP uma mensagem que explica o motivo (art. 36(2) das RTS)."
    },
    "sources": [
      {
        "act": "rts",
        "ref": "art. 36(2)"
      }
    ]
  },
  "note": {
    "fr": "Le 501 n'est déclaré que sur `PUT /consents` et `GET /trusted-beneficiaries`, et plusieurs chemins ne déclarent pas le 400 que la règle prévoit.",
    "en": "The 501 is only declared on `PUT /consents` and `GET /trusted-beneficiaries`, and several paths do not declare the 400 that the rule calls for.",
    "es": "El 501 solo está declarado en `PUT /consents` y `GET /trusted-beneficiaries`, y varias rutas no declaran el 400 que prevé la regla.",
    "pt-br": "O 501 só está declarado em `PUT /consents` e `GET /trusted-beneficiaries`, e vários caminhos não declaram o 400 que a regra prevê."
  },
  "production": null,
  "verifiedAt": "2026-10-19"
}