{"openapi":"3.0.0","info":{"description":"The Working Capital Solutions API allows for the automated upload of your data for your working capital facility with Rabobank.\n\n## **Before you begin**\n\nMake sure you have a working sandbox account in the [Rabobank developer portal](https://developer.rabobank.nl/). Read [Get Started](https://developer.rabobank.nl/get-started) to set up an account and register an **Application**.\n\n**NOTE:** To use these API(s), a valid [TLS](https://developer.rabobank.nl/how-use-mutual-tls) certificate is required.\n<br>\n\n## **Using the API**\n\nAfter your account set up is complete, subscribe the **Working Capital Solutions** API to your application.\nThere are two requests that are defined below:\n - POST - for transferring data\n - GET - for retrieving the receipt data and the acknowledgement data.\n\nThe full process begins by transferring the data in the form of CSV using the POST and calling afterwards the GET endpoint two times:\nonce for retrieving the Receipt file (payrcpt) and once for retrieving the Acknowledgement file (payack).\nFor XML files there is only one Acknowledgement file that will be returned on first GET call. \nDepending on the configuration the Acknowledgement file can be either HTML or XML format. \n\n## **Requests**\n\nThe POST data and GET acknowledgements requests must contain the client ID. This value is generated once an application is registered.\n\nThe POST request requires a file that will contain the data.\n\n```\n  POST https://api-sandbox.rabobank.nl/openapi/sandbox/working-capital/data-transfers\n```\n\n**INFO**\n - The file name is mandatory to have the following structure: \n    CSV: [yyyymmddhhmmssmmm]_[ORIGINAL_FILE_NAME].pay.[extension]\n    XML: [yyyymmddhhmmssmmm]_[ORIGINAL_FILE_NAME].iso.[extension]\n    ORIGINAL_FILE_NAME = CLIENT_IDENTIFIER+UNIQUE_GENERATED_CODE_PER_FILE\n    extension can be CSV or XML\n    Example: 20220209144000112_UVWX580241.pay.csv, 20220825124548551_XMLEXAMPLE625627.iso.xml  \n - Please contact your Rabobank representative for information about the file template!\n\nTo view full list of POST parameters, go to:\n  - POST /data-transfers\n\nYou can retrieve the status of file using a GET data-transfers/acknowledgements/:name request using the name of the file in the URL:\n```\n  GET https://api-sandbox.rabobank.nl/openapi/sandbox/working-capital/data-transfers/acknowledgements/UVWX580241\n```\nTo view full list of GET and POST parameters, go to:\n- GET /data-transfers/acknowledgements/{name}\n\n\n## **Response**\n\n**POST data for Working Capital data transfer.**\n\nYou can send the necessary data for the transfer to Working Capital. After the data is received the name of the file will be sent as confirmation. \nThis name will be used as input for retrieving the two acknowledgement files (received and processed).\n\nResponse for file name like: 20220209144000112_UVWX580241.pay.csv\n```\n{\n  \"response\": \"UVWX580241\"\n}\n```\n\nBelow you can find all supported test scenarios.\nIn order to test these scenarios, call the API by using the examples for the fields provided in the endpoint description for POST/data-transfers.\n\n| Request Scenario                                  | Response                               | Remark                                                                 |\n|---------------------------------------------------|----------------------------------------|------------------------------------------------------------------------|\n| Valid Request with valid file                     | 200 CREATED                            | multipart/form-data with variable_name = file                          |\n| Send Request with required header missing         | 400 BAD REQUEST                        | Make a request without a header such as X-Request-ID                   |\n| Large file                                        | 400 BAD REQUEST                        | Make a request with the file larger than 10MB                          |\n| Send a request with a file that was already sent  | 400 BAD REQUEST                        | Use a file that was already sent\n| File extension not accepted                       | 400 BAD REQUEST                        | Use an extension that is not CSV or XML\n| Send Request with no clientID header              | 401 Unauthorised                       | Make a request without the X-IBM-Client-Id header           |\n| Send Request with no clientID header value        | 401 Unauthorised                       | Make a request without the X-IBM-Client-Id header value                                  |\n| Use PUT instead of POST method                    | 405 Method Not Allowed                 | Use an incorrect HTTP method when making the request\n| Use a different path                              | 404 Resource not found                 | Use a different endpoint\n| Send a request to a non-existing API version     | 406 Resource not found                 | Set Accept header value to application/octet-stream;version=10.0.0\n\n**GET the acknowledgement data for CSV**\n\nYou can retrieve the acknowledgement file once it was received by Rabobank (payrcpt) and the second one once it was processed (payack).\nUsing the file name that was received after the POST, you can use it to verify if the file was received by the system and the one that contains the processed data.\n\n  - First call to GET will return the filename with the following format: [yyyymmddhhmmssmmm]_[ORIGINAL_FILE_NAME].pay.csv.payrcpt.csv.done, example:\n    20220207144000004_UVWX580341.pay.csv.**payrcpt**.csv.done\n\n  - The second call to GET will return the filename with the following format: [yyyymmddhhmmssmmm]_[ORIGINAL_FILE_NAME].pay.csv.payack.csv.done, example: \n    20220207145000004_UVWX580341.pay.csv.**payack**.csv.done\n\nBelow you can find all supported test scenarios. In order to test these scenarios, call the API by using the examples for the fields provided in the endpoint description for GET/data-transfers/acknowledgements/{name}.\n\n| Request Scenario                           |Input                    | Response           | Remark                                                                           |\n|--------------------------------------------|-------------------------|--------------------|----------------------------------------------------------------------------------|\n| Get acknowledgement file 1                 | UVWX580341              | 200 OK             | The first acknowledgement file is returned.                                      |\n| Get acknowledgement file 2                 | UVWX580341              | 200 OK             | The second acknowledgement file is returned.                                     |\n| Send Request with no clientID header       |                         | 401 Unauthorised   | Make a request without the X-IBM-Client-Id header                                |\n| Send Request with no clientID header value |                         | 401 Unauthorised   | Make a request without the X-IBM-Client-Id header value                          |\n| File not found                             | UVWX999999              | 404 Not found      | The file id you specified is not correct. Please use a different file identifier!|\n| Media type not acceptable                  | Accept:application/json | 406 Not Acceptable | Please check the media content type!                                             |\n| Request a third acknowledgement file       | UVWX580341              | 400 Bad request    | Only two acknowledgement files can be requested                                  |\n\n**GET the acknowledgement data for XML**\n\nYou can retrieve the acknowledgement file once it was received and processed by Rabobank.\nIt is a one file flow that return the result as a HTML or an XML output file.\n\nThe GET call will return a filename with the format: [yyyymmddhhmmssmmm]_[ORIGINAL_FILE_NAME].iso.xml.HTML.done, example:\n20220816144238339_XMLEXAMPLE625645.iso.xml.**HTML**.done\n\nBelow you can find all supported test scenarios. In order to test these scenarios, call the API by using the examples for the fields provided in the endpoint description for GET/data-transfers/acknowledgements/{name}.\n\n| Request Scenario                           |Input                    | Response           | Remark                                                                           |\n|--------------------------------------------|-------------------------|--------------------|----------------------------------------------------------------------------------|\n| Get acknowledgement file                   | XMLEXAMPLE625645        | 200 OK             | The acknowledgement file is returned.                                            |\n| Send Request with no clientID header       |                         | 401 Unauthorised   | Make a request without the X-IBM-Client-Id header                                |\n| Send Request with no clientID header value |                         | 401 Unauthorised   | Make a request without the X-IBM-Client-Id header value                          |\n| File not found                             | XMLEXAMPLE999999        | 404 Not found      | The file id you specified is not correct. Please use a different file identifier!|\n| Media type not acceptable                  | Accept:application/json | 406 Not Acceptable | Please check the media content type!                                             |\n| Request a third acknowledgement file       | XMLEXAMPLE625645        | 400 Bad request    | Only one acknowledgement file can be requested                                  |\n\n\n ### **Statuses present in the GET response**\n<br>","title":"Working Capital Solutions","version":"1.0.5","x-api-id":"190f25fe-7901-11ec-90d6-0242ac120003","x-audience":"company-internal","x-ibm-name":"supplier-finance"},"servers":[{"url":"https://api.rabobank.nl/openapi/working-capital","description":"Production server"},{"url":"https://api-sandbox.rabobank.nl/openapi/sandbox/working-capital","description":"Sandbox server"}],"paths":{"/data-transfers":{"post":{"parameters":[{"description":"Accepted type of the request. This contains the version of the API that is being used","example":"multipart/form-data;version=1.0.0","in":"header","name":"Accept","required":true,"schema":{"type":"string"}},{"description":"This is the unique ID of Initiating Party for the data transfer","example":"d19464d6-5ba7-486a-b55b-2a5cb97c6571","in":"header","name":"X-Request-ID","required":true,"schema":{"format":"UUID","type":"string"}}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"response":"XYZ123456"}}}}},"description":"OK. Response will be the file name that was uploaded.","headers":{"X-Request-ID":{"description":"ID of the request, unique to the call, as determined by the initiating party. MANDATORY.","schema":{"format":"unixeqpoquetime","type":"string"},"x-example":"d19464d6-5ba7-486a-b55b-2a5cb97c6571"}}},"400":{"content":{"multipart/form-data;version=1.0.0":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"Bad request. Missing X-Request-ID header.","headers":{"X-Request-ID":{"description":"ID of the request, unique to the call, as determined by the initiating party. MANDATORY.","schema":{"format":"UUID","type":"string"},"x-example":"d19464d6-5ba7-486a-b55b-2a5cb97c6571"}}},"401":{"content":{"multipart/form-data;version=1.0.0":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Authorization information is missing or invalid","headers":{"X-Request-ID":{"description":"ID of the request, unique to the call, as determined by the initiating party. MANDATORY.","schema":{"format":"UUID","type":"string"},"x-example":"d19464d6-5ba7-486a-b55b-2a5cb97c6571"}}},"404":{"content":{"multipart/form-data;version=1.0.0":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Resource not found","headers":{"X-Request-ID":{"description":"ID of the request, unique to the call, as determined by the initiating party. MANDATORY.","schema":{"format":"UUID","type":"string"},"x-example":"d19464d6-5ba7-486a-b55b-2a5cb97c6571"}}},"405":{"content":{"multipart/form-data;version=1.0.0":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Method not allowed","headers":{"X-Request-ID":{"description":"ID of the request, unique to the call, as determined by the initiating party. MANDATORY.","schema":{"format":"UUID","type":"string"},"x-example":"d19464d6-5ba7-486a-b55b-2a5cb97c6571"}}},"406":{"content":{"multipart/form-data;version=1.0.0":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"API version not available","headers":{"X-Request-ID":{"description":"ID of the request, unique to the call, as determined by the initiating party. MANDATORY.","schema":{"format":"UUID","type":"string"},"x-example":"d19464d6-5ba7-486a-b55b-2a5cb97c6571"}}},"500":{"content":{"multipart/form-data;version=1.0.0":{"schema":{"$ref":"#/components/schemas/InternalServerError"}}},"description":"Internal server error","headers":{"X-Request-ID":{"description":"ID of the request, unique to the call, as determined by the initiating party. MANDATORY.","schema":{"format":"UUID","type":"string"},"x-example":"d19464d6-5ba7-486a-b55b-2a5cb97c6571"}}},"503":{"content":{"multipart/form-data;version=1.0.0":{"schema":{"$ref":"#/components/schemas/ServiceUnavailable"}}},"description":"Service unavailable","headers":{"X-Request-ID":{"description":"ID of the request, unique to the call, as determined by the initiating party. MANDATORY.","schema":{"format":"UUID","type":"string"},"x-example":"d19464d6-5ba7-486a-b55b-2a5cb97c6571"}}}},"tags":["host-to-host"],"deprecated":false,"operationId":"POST-data-transfers","requestBody":{"content":{"application/octet-stream":{"schema":{"format":"binary","type":"string"}}},"required":true},"summary":"Send data to Rabobank"}},"/data-transfers/acknowledgements/{name}":{"get":{"parameters":[{"description":"Accepted type of the request. This contains the version of the API that is being used","example":"application/octet-stream;version=1.0.0","in":"header","name":"Accept","required":true,"schema":{"type":"string"}},{"description":"This is the unique ID of Initiating Party for API call","example":"d19464d6-5ba7-486a-b55b-2a5cb97c6571","in":"header","name":"X-Request-ID","required":true,"schema":{"format":"UUID","type":"string"}},{"description":"The file name to be used for retrieving the acknowledgements files","example":"XYZ123456","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/octet-stream":{"examples":{"response":{"value":"octet-stream-for-file"}}}},"description":"OK. Depending on the state of the process the endpoint will return first ACK file if the file was received by the processing system, second ACK file if the data was processed.","headers":{"X-Request-ID":{"description":"ID of the request, unique to the call, as determined by the initiating party. MANDATORY.","schema":{"format":"UUID","type":"string"},"x-example":"d19464d6-5ba7-486a-b55b-2a5cb97c6571"}}},"400":{"content":{"application/octet-stream":{"schema":{"$ref":"#/components/schemas/BadRequest"}}},"description":"Bad request. Missing X-Request-ID header.","headers":{"X-Request-ID":{"description":"ID of the request, unique to the call, as determined by the initiating party. MANDATORY.","schema":{"format":"UUID","type":"string"},"x-example":"d19464d6-5ba7-486a-b55b-2a5cb97c6571"}}},"401":{"content":{"application/octet-stream":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Authorization information is missing or invalid","headers":{"X-Request-ID":{"description":"ID of the request, unique to the call, as determined by the initiating party. MANDATORY.","schema":{"format":"UUID","type":"string"},"x-example":"d19464d6-5ba7-486a-b55b-2a5cb97c6571"}}},"404":{"content":{"application/octet-stream":{"schema":{"$ref":"#/components/schemas/FileNotFoundError"}}},"description":"Resource not found","headers":{"X-Request-ID":{"description":"ID of the request, unique to the call, as determined by the initiating party. MANDATORY.","schema":{"format":"UUID","type":"string"},"x-example":"d19464d6-5ba7-486a-b55b-2a5cb97c6571"}}},"405":{"content":{"application/octet-stream":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Method not allowed","headers":{"X-Request-ID":{"description":"ID of the request, unique to the call, as determined by the initiating party. MANDATORY.","schema":{"format":"UUID","type":"string"},"x-example":"d19464d6-5ba7-486a-b55b-2a5cb97c6571"}}},"406":{"content":{"application/octet-stream":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"API version not available","headers":{"X-Request-ID":{"description":"ID of the request, unique to the call, as determined by the initiating party. MANDATORY.","schema":{"format":"UUID","type":"string"},"x-example":"d19464d6-5ba7-486a-b55b-2a5cb97c6571"}}},"500":{"content":{"application/octet-stream":{"schema":{"$ref":"#/components/schemas/InternalServerError"}}},"description":"Internal server error","headers":{"X-Request-ID":{"description":"ID of the request, unique to the call, as determined by the initiating party. MANDATORY.","schema":{"format":"UUID","type":"string"},"x-example":"d19464d6-5ba7-486a-b55b-2a5cb97c6571"}}},"503":{"content":{"application/octet-stream":{"schema":{"$ref":"#/components/schemas/ServiceUnavailable"}}},"description":"Service unavailable","headers":{"X-Request-ID":{"description":"ID of the request, unique to the call, as determined by the initiating party. MANDATORY.","schema":{"format":"UUID","type":"string"},"x-example":"d19464d6-5ba7-486a-b55b-2a5cb97c6571"}}}},"tags":["host-to-host"],"deprecated":false,"operationId":"GET-data-transfers-acknowledgements-name","summary":"Retrieve an acknowledgement file"}}},"components":{"schemas":{"APIVersionNotAvailable":{"properties":{"error":{"example":"Not acceptable","type":"string"},"message":{"example":"The API version you are using is no longer available! Please try another one.","type":"string"},"path":{"example":"/working-capital/data-transfers/acknowledgements","type":"string"},"timestamp":{"example":"Wed, 16 Feb 2022 14:05:26 +0200","type":"string"}},"required":["error","message"],"type":"object"},"BadRequest":{"properties":{"error":{"example":"Bad Request","type":"string"},"message":{"example":"Required header is missing!","type":"string"},"path":{"example":"/working-capital/data-transfers/acknowledgements/file","type":"string"},"timestamp":{"example":"Wed, 16 Feb 2022 14:05:26 +0200","type":"string"}},"required":["error","message"],"type":"object"},"ErrorResponse":{"properties":{"httpCode":{"example":"401","type":"string"},"httpMessage":{"example":"Unauthorized","type":"string"},"moreInformation":{"example":"Application is not registered with mutual tls","type":"string"}},"required":["httpMessage","moreInformation"],"type":"object"},"File":{"properties":{"absolute":{"type":"boolean"},"absoluteFile":{"$ref":"#/components/schemas/File"},"absolutePath":{"type":"string"},"canonicalFile":{"$ref":"#/components/schemas/File"},"canonicalPath":{"type":"string"},"directory":{"type":"boolean"},"executable":{"type":"boolean"},"file":{"type":"boolean"},"freeSpace":{"format":"int64","type":"integer"},"hidden":{"type":"boolean"},"lastModified":{"format":"int64","type":"integer"},"name":{"type":"string"},"parent":{"type":"string"},"parentFile":{"$ref":"#/components/schemas/File"},"path":{"type":"string"},"readable":{"type":"boolean"},"totalSpace":{"format":"int64","type":"integer"},"usableSpace":{"format":"int64","type":"integer"},"writable":{"type":"boolean"}},"title":"File","type":"object"},"FileNotFoundError":{"properties":{"error":{"example":"Not found","type":"string"},"message":{"example":"The file id you specified is not correct. Please use a different file identifier!","type":"string"},"messageKey":{"example":"ORIGINAL_FILE_NOT_FOUND","type":"string"},"path":{"example":"/working-capital/data-transfers/acknowledgements/notexisting","type":"string"},"timestamp":{"example":"Wed, 16 Feb 2022 14:05:26 +0200","type":"string"}},"required":["error","message"],"type":"object"},"InputStream":{"title":"InputStream","type":"object"},"InternalServerError":{"properties":{"error":{"example":"Internal server error","type":"string"},"message":{"example":"There is something wrong with the API! Please contact Rabobank for further assistance","type":"string"},"path":{"example":"/working-capital/data-transfers/acknowledgements","type":"string"},"timestamp":{"example":"Wed, 16 Feb 2022 14:05:26 +0200","type":"string"}},"required":["error","message"],"type":"object"},"Resource":{"properties":{"description":{"type":"string"},"file":{"$ref":"#/components/schemas/File"},"filename":{"type":"string"},"inputStream":{"$ref":"#/components/schemas/InputStream"},"open":{"type":"boolean"},"readable":{"type":"boolean"},"uri":{"$ref":"#/components/schemas/URI"},"url":{"$ref":"#/components/schemas/URL"}},"title":"Resource","type":"object"},"ServiceUnavailable":{"properties":{"error":{"example":"Service unavailable","type":"string"},"message":{"example":"The service is under maintenance. Please try again later!","type":"string"},"path":{"example":"/working-capital/data-transfers/acknowledgements","type":"string"},"timestamp":{"example":"Wed, 16 Feb 2022 14:05:26 +0200","type":"string"}},"required":["error","message"],"type":"object"},"URI":{"properties":{"host":{"type":"string"},"absolute":{"type":"boolean"},"authority":{"type":"string"},"fragment":{"type":"string"},"opaque":{"type":"boolean"},"path":{"type":"string"},"port":{"format":"int32","type":"integer"},"query":{"type":"string"},"rawAuthority":{"type":"string"},"rawFragment":{"type":"string"},"rawPath":{"type":"string"},"rawQuery":{"type":"string"},"rawSchemeSpecificPart":{"type":"string"},"rawUserInfo":{"type":"string"},"scheme":{"type":"string"},"schemeSpecificPart":{"type":"string"},"userInfo":{"type":"string"}},"title":"URI","type":"object"},"URL":{"properties":{"host":{"type":"string"},"authority":{"type":"string"},"content":{"properties":{},"type":"object"},"defaultPort":{"format":"int32","type":"integer"},"deserializedFields":{"$ref":"#/components/schemas/URLStreamHandler"},"file":{"type":"string"},"path":{"type":"string"},"port":{"format":"int32","type":"integer"},"protocol":{"type":"string"},"query":{"type":"string"},"ref":{"type":"string"},"serializedHashCode":{"format":"int32","type":"integer"},"userInfo":{"type":"string"}},"title":"URL","type":"object"},"URLStreamHandler":{"title":"URLStreamHandler","type":"object"}},"securitySchemes":{"clientId":{"description":"ClientId as provided by the Rabobank developer portal.","in":"header","name":"X-IBM-Client-Id","type":"apiKey"}}},"security":[{"clientId":[]}],"tags":[{"description":"Host to Host connection between the Client and Rabobank","name":"host-to-host"}],"x-readme":{"explorer-enabled":false,"proxy-enabled":false}}