0

I am having an issue calling External Transfer Settings API. I tested other APIs and was able to get a response. Below is the URI I used for External Transfers.

https://banno.com/a/transfer-settings/api/v0/institutions/xxxx/xxxxxxx/transfer/settings/external and the response I got is 'Cannot PUT /a/transfer-settings/api/v0/institutions/xxxx/xxxxx/transfer/settings/external'

Ven
  • 3
  • 3

1 Answers1

0

1) Which endpoint is the the one that is failing?

The /xxxx/xxxxx/ makes it a bit ambiguous if this is the Institution External Transfer Settings endpoint (PUT /a/transfer-settings/api/v0/institutions/{institutionId}/transfer/settings/external or if it is the User External Transfer Settings endpoint (PUT /a/transfer-settings/api/v0/institutions/{institutionId}/users/{userId}/transfer/settings/external

2) Can you provide the full error response?

The error response will have an HTTP status code (which is helpful), a response body, and a header x-request-id (which is also helpful) to understand what is occurring.

Jaime Lopez Jr.
  • 476
  • 1
  • 3
  • 9
  • Thank you. 1) It is the User External Transfer Settings that is failing. (PUT /a/transfer-settings/api/v0/institutions/{institutionId}/users/{userId}/transfer/settings/external. 2)Status code 404 Not Found, Response body: Error
    Cannot PUT /a/transfer-settings/api/v0/institutions/xxxx/xxxx/transfer/settings/external
    and header:
    – Ven Apr 06 '22 at 16:29
  • header x-request-id is not available in the response – Ven Apr 06 '22 at 16:38
  • A common reason for getting an `HTTP 404 Not Found` is due to the URL construction. In this case, the `/a/transfer-settings/api/v0/institutions/xxxx/xxxx/transfer/settings/external` pattern doesn't match the *User External Transfer Settings* pattern. If I were to use `xxxx` as a placeholder for `institutionId` and `userId`, then the URL pattern would be `/a/transfer-settings/api/v0/institutions/xxxx/users/xxxx/transfer/settings/external`. Can you confirm the URL that you are using? Because it seems like there may be a mismatch (speculation based on what I see in your comment). – Jaime Lopez Jr. Apr 06 '22 at 17:37
  • Yes, I am using /a/transfer-settings/api/v0/institutions/xxxx/users/xxxx/transfer/settings/external URL pattern. Sorry, typo in my previous comment. I tested all four URIs External, Internal transfer settings for Institution, Users and none of them are working. All responding with HTTP 404 Not Found. I used same institution id and user id for testing other APIs and they are responding with the json data. – Ven Apr 06 '22 at 19:20
  • We'll have to check with the Engineering team on the topic. In the meantime, do you have the Institution ID available to share? That may be helpful if the issue turns out to be institution-specific. – Jaime Lopez Jr. Apr 07 '22 at 15:53
  • Thank you. Our institution ID is 4241. – Ven Apr 07 '22 at 18:19
  • Ah, I see. That _technically_ isn't the `Institution ID` (which is in UUID format) but instead what is often referred to as the `short ID` (for an institution). The API docs admittedly are ambiguous, but the Admin API expects to have callers use the UUID form of your Institution ID. – Jaime Lopez Jr. Apr 08 '22 at 18:56
  • I tried using UUID form of my Institution ID but still no luck. Cannot PUT /a/transfer-settings/api/v0/institutions/78121b95-45c1-47ba-b4da-8e8892440b00/users/f2cc5fa2-d136-43ec-b419-c7e5a1b66e53/transfer/settings/external – Ven Apr 08 '22 at 19:59
  • Looks like I get an HTTP 404 as well. Checking with Engineering. HTTP/1.1 404 Not Found Date: Tue, 12 Apr 2022 15:01:33 GMT Content-Type: text/html; charset=utf-8 ... Strict-Transport-Security: max-age=15724800 Content-Security-Policy: default-src 'none' Vary: Accept-Encoding Error
    Cannot PUT /a/transfer-settings/api/v0/institutions/899f4398-106d-409a-9ed4-a72346778076/users/e58dc9d6-0acb-4770-b719-93fe675f652b/transfer/settings/external
    – Jaime Lopez Jr. Apr 12 '22 at 15:22
  • Can you try again? Engineering deployed a fix and I'm now successful using this redacted example: curl --request PUT \ --url https://banno.com/a/transfer-settings/api/v0/institutions/{institutionId}/users/{userId}/transfer/settings/external \ --header 'authorization: [My-Access-Token]' \ --header 'content-type: application/json' \ --data '{"dailyOutboundLimit": 1}' ---> which gives me a response of HTTP 204 No Content – Jaime Lopez Jr. Apr 13 '22 at 15:26
  • Thank you, seems like API is working but responding with errorcode :40 with HTTP 403 status Response Headers Date: Thu, 14 Apr 2022 02:09:54 GMT Content-Type: application/json; charset=utf-8 Content-Length: 16 Connection: keep-alive x-request-id: bf90ffd5e97311ae034166e2fd77f7d4 x-b3-traceid: f8eef31ab640371b x-b3-spanid: f8eef31ab640371b x-b3-sampled: 1 ETag: W/"10-tOwpq784DuRtH0XE2ycaKfLBS+A" Strict-Transport-Security: max-age=15724800 Response Body {"errorCode":40} – Ven Apr 14 '22 at 02:15
  • The HTTP 403 Forbidden is a 'good' change in the behavior, since that tells us that you no longer get a 404 Not Found so the API is reachable. It's difficult to tell if you were successful in retrieving an Access Token, but let's assume that you did. If you have a valid Access Token but still get the HTTP 403, it's likely that you need to make sure that the Associated User (https://jackhenry.dev/open-api-docs/admin-api/overview/authentication/associateduser/) has permissions to use the endpoint. That's likely "Manage [internal/external] transfers", depending upon the API endpoint. – Jaime Lopez Jr. Apr 14 '22 at 23:54
  • I am getting HTTP 500 error now. Per documentation, the issue is with Officer code. 500 Internal Server Error (Officer code not defined) Media type: application/json Example Value Schema "Officer code not defined" – Ven Apr 19 '22 at 00:03
  • Clarification question: the documentation _does_ describe an _example_ of "Officer code not defined" but that is a single example and doesn't describe _all_ possible causes of the HTTP 500 error. What additional text did you get with the HTTP 500 error? That'll be helpful for us to pass along to Engineering. – Jaime Lopez Jr. Apr 19 '22 at 16:45
  • It is not showing any text in the response. Response Headers: Date: Thu, 21 Apr 2022 14:27:22 GMT Content-Length: 0 Connection: keep-alive x-request-id: baf03edef46d718ef36b1ac6dc76c3cc x-b3-traceid: 66b0fc8422ccaeaa x-b3-spanid: 66b0fc8422ccaeaa x-b3-sampled: 1 x-envoy-upstream-service-time: 22 Strict-Transport-Security: max-age=15724800 Response body: ∅ – Ven Apr 21 '22 at 14:32
  • Originally, you were trying to use the `PUT /a/transfer-settings/api/v0/institutions/{institutionId}/users/{userId}/transfer/settings/external` endpoint. Now it appears you're trying to use the `PUT /a/transfer-settings/api/v0/institutions/{institutionId}/transfer/settings/external` endpoint. In that case, please notice that the endpoints have *required* and *optional* attributes defined in the docs. For this specific endpoint for Institution External Transfer settings, the `cutOffTime` attribute is required in the request. – Jaime Lopez Jr. Apr 21 '22 at 17:57
  • Thank you. PUT /a/transfer-settings/api/v0/institutions/{institutionId}/users/{userId}/transfer/settings/external to update user limits is working fine. PUT /a/transfer-settings/api/v0/institutions/{institutionId}/transfer/settings/external endpoint to update institution settings still throwing HTTP 500 error. I tried adding cutOffTime but it did not work. – Ven Apr 23 '22 at 02:51
  • Request Body { "inboundDailyQuantitativeLimit": 42, "outboundDailyQuantitativeLimit": 42, "cutOffTime": "61200", "inboundHighRiskThreshold": 100, "outboundHighRiskThreshold": 100 } Response Headers Date: Sat, 23 Apr 2022 02:50:01 GMT Content-Length: 0 Connection: keep-alive x-request-id: 68de5787c7943dbe384b42cdb05362af x-b3-traceid: ecd2cebe720154f5 x-b3-spanid: ecd2cebe720154f5 x-b3-sampled: 1 x-envoy-upstream-service-time: 15 Strict-Transport-Security: max-age=15724800 Response Body ∅ – Ven Apr 23 '22 at 02:52
  • Ah, that's helpful. It turns out we had a problem with the rendering of the docs, which showed "61200" instead of the "17:00:00" intended for the example of `cutOffTime`. The format is `hh:mm:ss` but a typo in the spec file caused the rendering to break. You might have to force a browser refresh of the docs page to see the change. – Jaime Lopez Jr. Apr 25 '22 at 22:23
  • Thank you so much. API responded with HTTP 204 after changing cutOffTime. – Ven Apr 26 '22 at 17:32
  • Excellent, glad it's working for you. Thanks for bearing with us. – Jaime Lopez Jr. Apr 26 '22 at 18:27