{"swagger":"2.0","info":{"version":"1.0.6","title":"Proof of Authorization API","description":"Nacha would like to provide a real time alternative message for a request for an ACH proof of authorization in order to increase automation and gain efficiencies, help with regulatory compliance and facilitate the exchange of this information in a secure fashion.","contact":{"email":"info@afinis.org","url":"https://www.afinis.org"}},"host":"api.afinis.org","basePath":"/banks/v1","securityDefinitions":{"APIKeyQueryParam":{"type":"apiKey","in":"query","name":"apikey"}},"consumes":["application/json"],"produces":["application/json"],"schemes":["https"],"paths":{"/documents/proofofauth":{"post":{"description":"The Receiving Depository Financial Institution (RDFI) wants to send an automated electronic request to the Originating Depository Financial Institution (ODFI). As the RDFI, I want to receive a real time acknowledgement when my request is received. I want to provide details on how I can receive the copy of the authorization back from the ODFI.","operationId":"Proof of Authorization - Request","tags":["Proof of Authorization"],"consumes":["application/json"],"produces":["application/json"],"parameters":[{"name":"apiVersion","in":"header","required":false,"type":"string","format":"string"},{"in":"body","name":"Proof of Authorization","required":false,"description":"RDFI wants to send an automated electronic request to ODFI. RDFI provides details on how to receive the copy of the authorization back from the ODFI","schema":{"type":"object","required":["initiatingParty","instructingAgent","instructedAgent","endToEndIdentification","amount","creditor","debtor","debtorAccount","entryDate","PoAMethod"],"properties":{"messageIdentification":{"type":"string","minLength":1,"maxLength":20,"example":"Id_ABC123"},"initiatingParty":{"$ref":"#/definitions/party"},"instructingAgent":{"$ref":"#/definitions/agent"},"instructedAgent":{"$ref":"#/definitions/agent"},"endToEndIdentification":{"type":"string","maxLength":35,"example":"061058941111111"},"localInstrument":{"type":"string","minLength":3,"maxLength":3,"example":"WEB"},"amount":{"$ref":"#/definitions/amount"},"creditor":{"$ref":"#/definitions/party"},"debtor":{"$ref":"#/definitions/party"},"debtorAccount":{"type":"string","description":"Identification assigned by an institution","example":"12345678","minLength":1,"maxLength":17},"entryDate":{"type":"string","maxLength":10,"example":"2019-03-01"},"PoAMethod":{"$ref":"#/definitions/PoAMethod"},"newRequest":{"type":"string","example":"Y","enum":["Y","N"]},"secondDocumentRequest":{"type":"string","example":"N","enum":["Y","N"]}}}}],"responses":{"201":{"description":"Created","schema":{"$ref":"#/definitions/response-201"}},"400":{"description":"Bad request","schema":{"$ref":"#/definitions/error-400"}},"401":{"description":"Unauthorized","schema":{"$ref":"#/definitions/error-401"}},"403":{"description":"Forbidden","schema":{"$ref":"#/definitions/error-403"}},"404":{"description":"Not Found","schema":{"$ref":"#/definitions/error-404"}},"405":{"description":"Method Not Allowed","schema":{"$ref":"#/definitions/error-405"}},"406":{"description":"Not Acceptable","schema":{"$ref":"#/definitions/error-406"}},"415":{"description":"Unsupported Media Type","schema":{"$ref":"#/definitions/error-415"}},"422":{"description":"Unprocessable request","schema":{"$ref":"#/definitions/error-422"}},"500":{"description":"Internal Server error","schema":{"$ref":"#/definitions/error-500"}},"503":{"description":"Service Unavailable","schema":{"$ref":"#/definitions/error-503"}}},"security":[{"APIKeyQueryParam":[]}]}}},"definitions":{"party":{"required":["name"],"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":70,"example":"John Edison"},"identification":{"type":"string","minLength":1,"maxLength":35,"example":8765434589},"phoneNumber":{"type":"string","minLength":1,"maxLength":30,"example":"+1-302-515-5000"},"emailAddress":{"type":"string","minLength":1,"maxLength":2048,"example":"zachary.eastwood@ABCcorp.com"}}},"PoAMethod":{"type":"object","properties":{"preferredMethod":{"type":"string","enum":["EMAL","FAXI","POST"]},"postalAddress":{"$ref":"#/definitions/postalAddress"},"faxNumber":{"type":"string","minLength":1,"maxLength":30,"example":"+1-302-515-7000"},"emailAddress":{"type":"string","minLength":1,"maxLength":2048,"example":"zachary.westwood@ABCcorp.com"}}},"agent":{"description":"Identification of a financial institution.","type":"object","required":["clearingSystemIdentification","memberIdentification"],"properties":{"clearingSystemIdentification":{"type":"string","example":"USABA","enum":["USABA"],"description":"Specification of a pre-agreed offering between clearing agents or the channel through which the payment instruction is processed: \n * `USABA` - Routing Transit number assigned by the ABA for US financial Institutions. \n"},"memberIdentification":{"type":"string","minLength":1,"maxLength":35,"example":"061103852"}}},"postalAddress":{"description":"Information that locates and identifies a specific address, as defined by postal services.","type":"object","properties":{"streetName":{"description":"Name of a street or throughfare","type":"string","minLength":1,"maxLength":70,"example":"Lexington Street"},"postCode":{"description":"Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail","type":"string","minLength":1,"maxLength":11,"example":19801},"townName":{"description":"Name of a built-up area, with defined boundaries, and a local government","type":"string","minLength":1,"maxLength":35,"example":"Wilmington"},"countrySubDivision":{"description":"Identifies a subdivision of a country such as state, region, county","type":"string","minLength":1,"maxLength":35,"example":"DE"},"country":{"description":"Nation with its own government","type":"string","minLength":2,"maxLength":2,"example":"US"}}},"amount":{"description":"Amount of money to be moved between the debtor and creditor, before deduction of charges, expressed in the currency as ordered by the initiating party","type":"object","required":["amount","currency"],"properties":{"amount":{"type":"number","format":"float","example":1.01,"maxLength":11},"currency":{"type":"string","example":"USD","enum":["USD"]}}},"response-201":{"title":"Response","type":"object","description":"201 - Created","properties":{"status":{"$ref":"#/definitions/status"}}},"status":{"title":"Received","type":"object","description":"Information sent for Received statuses","required":["amount","endToEndIdentification","entryDate"],"properties":{"requestStatus":{"example":"RCVD","type":"string","enum":["RCVD","SENT","INPR","OKTR","UTCO"],"description":"A programmatic code:\n * `RCVD` - Received \n * `SENT` - Sent\n * `INPR` - In Process\n * `OKTR` - Ok to Return \n * `UTCO` - Unable to Comply \n"},"messageIdentification":{"type":"string","minLength":1,"maxLength":20,"example":"Id_CBA123"},"originalMessageIdentification":{"type":"string","minLength":1,"maxLength":20,"example":"Id_ABC123"},"amount":{"$ref":"#/definitions/amount"},"endToEndIdentification":{"type":"string","minLength":1,"maxLength":35,"example":"CBA321"},"entryDate":{"type":"string","minLength":10,"maxLength":10,"example":"2019-03-01"},"notificationDate":{"type":"string","description":"Start date of the range","example":"2020-04-29","minLength":10,"maxLength":10},"notificationTime":{"type":"string","description":"Start date of the range","example":"20:30","minLength":5},"initiatingParty":{"$ref":"#/definitions/party"},"PoAMethod":{"$ref":"#/definitions/PoAMethod"}}},"error-400":{"title":"Error 400 - Bad Request","description":"The request could not be understood or required parameters were missing","type":"object","properties":{"details":{"description":"error details","type":"array","items":{"$ref":"#/definitions/errorDetails-400"}}}},"errorDetails-400":{"title":"Error 400 - Bad Request - Details","type":"object","properties":{"errorCode":{"description":"A programmatic error code:\n * `2000` - Invalid JSON structure.\n * `2001` - '[Field name] is missing or invalid.'\n * `2002` - Invalid date.\n * `2003` - Invalid combination of fields submitted. Check the API specification for eligible combinations. \n * `2004` - '[Field name] cannot be more than [max number] characters.'\n","example":2000,"type":"number","enum":[2000,2001,2002,2003,2004]},"message":{"description":"A human readable description of the problem","example":"Invalid JSON structure.","type":"string"}}},"error-401":{"title":"Error 401 - Unauthorized","description":"Authentication failed or user doesn’t have permissions for requested operation","type":"object","properties":{"details":{"description":"error details","type":"array","items":{"$ref":"#/definitions/errorDetails-401"}}}},"errorDetails-401":{"title":"Error 401 - Unauthorized - Details","type":"object","properties":{"errorCode":{"example":1000,"type":"number","enum":[1000,1001],"description":"A programmatic error code:\n * `1000` - API key is missing, invalid or expired. \n * `1001` - API token is invalid, expired, or account associated with key does not have access to that API.\n"},"message":{"description":"A human readable description of the problem","example":"API key is missing, invalid or expired.","type":"string"}},"required":["errorcode","message"]},"error-403":{"title":"Error 403 - Forbidden","description":"The client does not have access rights to the content; that is, it is unauthorized, so the server is refusing to give the requested resource. Unlike 401, the client's identity is known to the server.","type":"object","required":["errorCode","message"],"properties":{"errorCode":{"example":403,"type":"number","enum":[403],"description":"A programmatic error code:\n * `403` - Forbidden\n"},"message":{"description":"A human readable description of the problem","example":"Forbidden","type":"string"}}},"error-404":{"title":"Error 404 - Not Found","description":"Resource was not found.","type":"object","required":["errorCode","message"],"properties":{"errorCode":{"example":404,"type":"number","enum":[404],"description":"A programmatic error code:\n * `404` - Resource was not found.\n"},"message":{"description":"A human readable description of the problem","example":"Resource was not found.","type":"string"}}},"error-405":{"title":"Error 405 - Method Not Allowed","description":"The request method is known by the server but has been disabled and cannot be used.","type":"object","required":["errorCode","message"],"properties":{"errorCode":{"example":405,"type":"number","enum":[405],"description":"A programmatic error code:\n * `405` - Method Not Allowed\n"},"message":{"description":"A human readable description of the problem","example":"Method Not Allowed","type":"string"}}},"error-406":{"title":"Error 406 - Not Acceptable","description":"Web server doesn't find any content that conforms to the criteria given by the user agent.","type":"object","required":["errorCode","message"],"properties":{"errorCode":{"example":406,"type":"number","enum":[406],"description":"A programmatic error code:\n * `406` - Not Acceptable\n"},"message":{"description":"A human readable description of the problem","example":"Not Acceptable","type":"string"}}},"error-415":{"title":"Error 415 - Unsupported Media Type","description":"The media format of the requested data is not supported by the server, so the server is rejecting the request.","type":"object","required":["errorCode","message"],"properties":{"errorCode":{"example":415,"type":"number","enum":[415],"description":"A programmatic error code:\n * `415` - Unsupported Media Type\n"},"message":{"description":"A human readable description of the problem","example":"Unsupported Media Type","type":"string"}}},"error-422":{"title":"Unprocessable request","description":"422 - Unprocessable request","type":"object","required":["details"],"properties":{"details":{"description":"error details","type":"array","items":{"$ref":"#/definitions/unprocessableRequestErrorDetails"}}}},"unprocessableRequestErrorDetails":{"title":"Unprocessable request Error Details","type":"object","required":["errorCode","message"],"properties":{"errorCode":{"example":4001,"type":"number","enum":[4001],"description":"A programmatic error code:\n * `4001` - Unprocessable request due to \"%%\"\n"},"message":{"description":"A human readable description of the problem","example":"Unprocessable request due to \"%%\"","type":"string"}}},"error-500":{"title":"Internal Server Error","description":"500 - Internal Server Error","type":"object","required":["details"],"properties":{"details":{"description":"error details","type":"array","items":{"$ref":"#/definitions/internalServerErrorDetails"}}}},"internalServerErrorDetails":{"title":"Internal Server Error Details","type":"object","required":["errorCode","message"],"properties":{"errorCode":{"example":3001,"type":"number","enum":[3001],"description":"A programmatic error code:\n * `3001` - Internal Server error.\n"},"message":{"description":"A human readable description of the problem","example":"Internal Server error","type":"string"}}},"error-503":{"title":"Error 503 - Service Unavailable","description":"Service is temporarily unavailable","type":"object","required":["errorCode","message"],"properties":{"errorCode":{"example":503,"type":"number","enum":[503],"description":"A programmatic error code:\n * `503` - Service Unavailable\n"},"message":{"description":"A human readable description of the problem","example":"Service is temporarily unavailable.","type":"string"}}}}}