Skip to content

Commit ae8c5df

Browse files
jeremy-drummond-xeroJeremy-drummond_xeroCopilot
authored
feat: Bank Transfers: soft-delete, status, and tracking categories (#822)
* feat: Bank Transfers extended functionality: delete transfers, add tracking * feat: add empty tracking arrays to second BankTransfer in getBankTransfers example Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * feat: use enum for BankTransfer read model Status to match Payment and BatchPayment Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * feat: split BankTransfer delete schemas and require tracking reference IDs Add BankTransferDeleteByUrlParam for the single delete-by-ID endpoint so the URL-param path only requires Status, and make BankTransferID required on the bulk BankTransferDelete schema - matching the BatchPayment delete pattern. Make TrackingCategoryID and TrackingOptionID required on TrackingReference since they must be supplied on PUT and are always returned on GET when tracking is specified. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * feat: point TrackingReference externalDocs to tracking categories docs Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Jeremy-drummond_xero <jeremy.drummond@xero.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent f8cf55b commit ae8c5df

1 file changed

Lines changed: 269 additions & 0 deletions

File tree

xero_accounting.yaml

Lines changed: 269 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2559,6 +2559,14 @@ paths:
25592559
example: Amount ASC
25602560
schema:
25612561
type: string
2562+
- in: query
2563+
name: includeDeleted
2564+
x-snake: include_deleted
2565+
description: e.g. includeDeleted=true - Bank transfers with a status of DELETED will be included in the response
2566+
example: true
2567+
x-example-python: "True"
2568+
schema:
2569+
type: boolean
25622570
responses:
25632571
"200":
25642572
description: Success - return response of BankTransfers array of 0 to N BankTransfer
@@ -2577,6 +2585,7 @@ paths:
25772585
CreatedDateUTC: /Date(1476737161140+0000)/
25782586
DateString: 2016-11-12T21:10:00
25792587
Date: /Date(1478985000000+0000)/
2588+
Status: AUTHORISED
25802589
FromBankAccount:
25812590
AccountID: 6f7594f2-f059-4d56-9e67-47ac9733bfe9
25822591
Name: Business Wells Fargo
@@ -2590,11 +2599,22 @@ paths:
25902599
ToIsReconciled: true
25912600
Reference: Sub 098801
25922601
HasAttachments: true
2602+
FromTracking:
2603+
- TrackingCategoryID: e2f2f732-e92a-4f3a-9c4d-ee4da0182a13
2604+
TrackingOptionID: cd0a4b7e-3c6b-4b3c-8e2a-1f2d3c4b5a69
2605+
Name: Region
2606+
Option: North
2607+
ToTracking:
2608+
- TrackingCategoryID: e2f2f732-e92a-4f3a-9c4d-ee4da0182a13
2609+
TrackingOptionID: 9f8e7d6c-5b4a-3c2d-1e0f-a9b8c7d6e5f4
2610+
Name: Region
2611+
Option: South
25932612
- BankTransferID: 9f0153d5-617c-4903-887b-3875807aa27a
25942613
CreatedDateUTCString: 2016-10-21T23:28:42
25952614
CreatedDateUTC: /Date(1477092522333+0000)/
25962615
DateString: 2016-10-19T20:10:00
25972616
Date: /Date(1476907800000+0000)/
2617+
Status: AUTHORISED
25982618
FromBankAccount:
25992619
AccountID: 6f7594f2-f059-4d56-9e67-47ac9733bfe9
26002620
Name: Business Wells Fargo
@@ -2608,6 +2628,8 @@ paths:
26082628
ToIsReconciled: false
26092629
Reference: Sub 098801
26102630
HasAttachments: false
2631+
FromTracking: []
2632+
ToTracking: []
26112633
put:
26122634
security:
26132635
- OAuth2:
@@ -2704,6 +2726,7 @@ paths:
27042726
- BankTransferID: 76eea4b6-f026-464c-b6f3-5fb39a196145
27052727
DateString: 2019-02-27T00:00:00
27062728
Date: /Date(1551225600000+0000)/
2729+
Status: AUTHORISED
27072730
FromBankAccount:
27082731
AccountID: 7e5e243b-9fcd-4aef-8e3a-c70be1e39bfa
27092732
Code: "090"
@@ -2719,6 +2742,16 @@ paths:
27192742
ToIsReconciled: true
27202743
Reference: Sub 098801
27212744
CurrencyRate: 1.000000
2745+
FromTracking:
2746+
- TrackingCategoryID: e2f2f732-e92a-4f3a-9c4d-ee4da0182a13
2747+
TrackingOptionID: cd0a4b7e-3c6b-4b3c-8e2a-1f2d3c4b5a69
2748+
Name: Region
2749+
Option: North
2750+
ToTracking:
2751+
- TrackingCategoryID: e2f2f732-e92a-4f3a-9c4d-ee4da0182a13
2752+
TrackingOptionID: 9f8e7d6c-5b4a-3c2d-1e0f-a9b8c7d6e5f4
2753+
Name: Region
2754+
Option: South
27222755
ValidationErrors: []
27232756
"400":
27242757
$ref: "#/components/responses/400Error"
@@ -2769,6 +2802,95 @@ paths:
27692802
FromIsReconciled: true
27702803
ToIsReconciled: true
27712804
Reference: Sub 098801
2805+
FromTracking:
2806+
- TrackingCategoryID: e2f2f732-e92a-4f3a-9c4d-ee4da0182a13
2807+
TrackingOptionID: cd0a4b7e-3c6b-4b3c-8e2a-1f2d3c4b5a69
2808+
ToTracking:
2809+
- TrackingCategoryID: e2f2f732-e92a-4f3a-9c4d-ee4da0182a13
2810+
TrackingOptionID: 9f8e7d6c-5b4a-3c2d-1e0f-a9b8c7d6e5f4
2811+
post:
2812+
security:
2813+
- OAuth2:
2814+
- accounting.transactions
2815+
tags:
2816+
- Accounting
2817+
operationId: deleteBankTransfers
2818+
summary: Deletes one or more bank transfers
2819+
x-hasAccountingValidationError: true
2820+
x-example:
2821+
- bankTransferDelete:
2822+
is_object: true
2823+
key: bankTransferDelete
2824+
keyPascal: BankTransferDelete
2825+
- bankTransferID:
2826+
is_uuid: true
2827+
key: bankTransferID
2828+
keyPascal: BankTransferID
2829+
keySnake: bank_transfer_id
2830+
default: 00000000-0000-0000-0000-000000000000
2831+
object: bankTransferDelete
2832+
- status:
2833+
is_last: true
2834+
key: status
2835+
keyPascal: Status
2836+
default: DELETED
2837+
object: bankTransferDelete
2838+
- bankTransfers:
2839+
is_object: true
2840+
key: bankTransfers
2841+
keyPascal: BankTransfers
2842+
- add_bankTransferDelete:
2843+
is_last: true
2844+
is_array_add: true
2845+
key: bankTransfers
2846+
keyPascal: BankTransfers
2847+
keySnake: bank_transfers
2848+
java: BankTransfers
2849+
python: bank_transfer
2850+
ruby: bank_transfer
2851+
csharp: BankTransfer
2852+
object: bankTransferDelete
2853+
parameters:
2854+
- $ref: "#/components/parameters/summarizeErrors"
2855+
- $ref: "#/components/parameters/idempotencyKey"
2856+
responses:
2857+
"200":
2858+
description: Success - return response of BankTransfers array of deleted BankTransfer
2859+
content:
2860+
application/json:
2861+
schema:
2862+
$ref: "#/components/schemas/BankTransfers"
2863+
example:
2864+
Id: dfc0d130-9007-4a98-a5ef-6f01700f18e2
2865+
Status: OK
2866+
ProviderName: Xero API Partner
2867+
DateTimeUTC: /Date(1551311318988)/
2868+
BankTransfers:
2869+
- BankTransferID: 6221458a-ef7a-4d5f-9b1c-1b96ce03833c
2870+
Status: DELETED
2871+
FromBankAccount:
2872+
AccountID: 6f7594f2-f059-4d56-9e67-47ac9733bfe9
2873+
Name: Business Wells Fargo
2874+
ToBankAccount:
2875+
AccountID: 7e5e243b-9fcd-4aef-8e3a-c70be1e39bfa
2876+
Name: My Savings
2877+
Amount: 20.00
2878+
ValidationErrors: []
2879+
"400":
2880+
$ref: "#/components/responses/400Error"
2881+
requestBody:
2882+
required: true
2883+
description: BankTransfers with array of BankTransfer objects in request body
2884+
content:
2885+
application/json:
2886+
schema:
2887+
$ref: "#/components/schemas/BankTransfersDelete"
2888+
example:
2889+
BankTransfers:
2890+
- BankTransferID: 6221458a-ef7a-4d5f-9b1c-1b96ce03833c
2891+
Status: DELETED
2892+
- BankTransferID: 9f0153d5-617c-4903-887b-3875807aa27a
2893+
Status: DELETED
27722894
/BankTransfers/{BankTransferID}:
27732895
parameters:
27742896
- $ref: "#/components/parameters/requiredHeader"
@@ -2801,6 +2923,7 @@ paths:
28012923
CreatedDateUTC: /Date(1476737161140+0000)/
28022924
DateString: 2016-11-12T21:10:00
28032925
Date: /Date(1478985000000+0000)/
2926+
Status: AUTHORISED
28042927
FromBankAccount:
28052928
AccountID: 6f7594f2-f059-4d56-9e67-47ac9733bfe9
28062929
Code: "088"
@@ -2817,12 +2940,81 @@ paths:
28172940
Reference: Sub 098801
28182941
CurrencyRate: 1.000000
28192942
HasAttachments: true
2943+
FromTracking:
2944+
- TrackingCategoryID: e2f2f732-e92a-4f3a-9c4d-ee4da0182a13
2945+
TrackingOptionID: cd0a4b7e-3c6b-4b3c-8e2a-1f2d3c4b5a69
2946+
Name: Region
2947+
Option: North
2948+
ToTracking:
2949+
- TrackingCategoryID: e2f2f732-e92a-4f3a-9c4d-ee4da0182a13
2950+
TrackingOptionID: 9f8e7d6c-5b4a-3c2d-1e0f-a9b8c7d6e5f4
2951+
Name: Region
2952+
Option: South
28202953
Attachments:
28212954
- AttachmentID: e05a6fd8-0e47-47a9-9799-b809c8267260
28222955
FileName: HelloWorld.jpg
28232956
Url: https://api.xero.com/api.xro/2.0/banktransfer/6221458a-ef7a-4d5f-9b1c-1b96ce03833c/Attachments/HelloWorld.jpg
28242957
MimeType: image/jpg
28252958
ContentLength: 2878711
2959+
post:
2960+
security:
2961+
- OAuth2:
2962+
- accounting.transactions
2963+
tags:
2964+
- Accounting
2965+
operationId: deleteBankTransfer
2966+
summary: Deletes a specific bank transfer
2967+
x-hasAccountingValidationError: true
2968+
x-example:
2969+
- bankTransferDeleteByUrlParam:
2970+
is_object: true
2971+
key: bankTransferDeleteByUrlParam
2972+
keyPascal: BankTransferDeleteByUrlParam
2973+
- status:
2974+
is_last: true
2975+
key: status
2976+
keyPascal: Status
2977+
default: DELETED
2978+
object: bankTransferDeleteByUrlParam
2979+
parameters:
2980+
- $ref: "#/components/parameters/idempotencyKey"
2981+
- $ref: "#/components/parameters/BankTransferID"
2982+
responses:
2983+
"200":
2984+
description: Success - return response of BankTransfers array with one deleted BankTransfer
2985+
content:
2986+
application/json:
2987+
schema:
2988+
$ref: "#/components/schemas/BankTransfers"
2989+
example:
2990+
Id: 1a5fa46d-5ece-4ef2-89b1-77c293b5d833
2991+
Status: OK
2992+
ProviderName: Xero API Partner
2993+
DateTimeUTC: /Date(1551311320368)/
2994+
BankTransfers:
2995+
- BankTransferID: 6221458a-ef7a-4d5f-9b1c-1b96ce03833c
2996+
Status: DELETED
2997+
FromBankAccount:
2998+
AccountID: 6f7594f2-f059-4d56-9e67-47ac9733bfe9
2999+
Code: "088"
3000+
Name: Business Wells Fargo
3001+
ToBankAccount:
3002+
AccountID: 7e5e243b-9fcd-4aef-8e3a-c70be1e39bfa
3003+
Code: "090"
3004+
Name: My Savings
3005+
Amount: 20.00
3006+
Reference: Sub 098801
3007+
ValidationErrors: []
3008+
"400":
3009+
$ref: "#/components/responses/400Error"
3010+
requestBody:
3011+
required: true
3012+
content:
3013+
application/json:
3014+
schema:
3015+
$ref: "#/components/schemas/BankTransferDeleteByUrlParam"
3016+
example:
3017+
Status: DELETED
28263018
/BankTransfers/{BankTransferID}/Attachments:
28273019
parameters:
28283020
- $ref: "#/components/parameters/requiredHeader"
@@ -20637,6 +20829,23 @@ components:
2063720829
x-is-msdate-time: true
2063820830
example: /Date(1573755038314)/
2063920831
readOnly: true
20832+
Status:
20833+
description: AUTHORISED or DELETED (read-only). New bank transfers will have a status of AUTHORISED.
20834+
readOnly: true
20835+
type: string
20836+
enum:
20837+
- AUTHORISED
20838+
- DELETED
20839+
FromTracking:
20840+
description: Optional Tracking Category for the source account – see Tracking. A bank transfer can have a maximum of 2 tracking categories per account.
20841+
type: array
20842+
items:
20843+
$ref: "#/components/schemas/TrackingReference"
20844+
ToTracking:
20845+
description: Optional Tracking Category for the destination account – see Tracking. A bank transfer can have a maximum of 2 tracking categories per account.
20846+
type: array
20847+
items:
20848+
$ref: "#/components/schemas/TrackingReference"
2064020849
ValidationErrors:
2064120850
description: Displays array of validation error messages from the API
2064220851
type: array
@@ -20647,6 +20856,66 @@ components:
2064720856
- ToBankAccount
2064820857
- Amount
2064920858
type: object
20859+
BankTransferDelete:
20860+
externalDocs:
20861+
url: http://developer.xero.com/documentation/api/bank-transfers/
20862+
properties:
20863+
BankTransferID:
20864+
description: The Xero identifier for a bank transfer
20865+
type: string
20866+
format: uuid
20867+
Status:
20868+
description: The status of the bank transfer.
20869+
type: string
20870+
default: DELETED
20871+
required:
20872+
- Status
20873+
- BankTransferID
20874+
type: object
20875+
BankTransferDeleteByUrlParam:
20876+
externalDocs:
20877+
url: http://developer.xero.com/documentation/api/bank-transfers/
20878+
properties:
20879+
Status:
20880+
description: The status of the bank transfer.
20881+
type: string
20882+
default: DELETED
20883+
required:
20884+
- Status
20885+
type: object
20886+
BankTransfersDelete:
20887+
type: object
20888+
x-objectArrayKey: bank_transfers
20889+
properties:
20890+
BankTransfers:
20891+
type: array
20892+
items:
20893+
$ref: "#/components/schemas/BankTransferDelete"
20894+
TrackingReference:
20895+
externalDocs:
20896+
url: http://developer.xero.com/documentation/api/tracking-categories/
20897+
properties:
20898+
TrackingCategoryID:
20899+
description: The Xero identifier for a tracking category
20900+
type: string
20901+
format: uuid
20902+
TrackingOptionID:
20903+
description: The Xero identifier for a tracking category option
20904+
type: string
20905+
format: uuid
20906+
Name:
20907+
description: The name of the tracking category
20908+
maxLength: 100
20909+
type: string
20910+
readOnly: true
20911+
Option:
20912+
description: See Tracking Options
20913+
type: string
20914+
readOnly: true
20915+
required:
20916+
- TrackingCategoryID
20917+
- TrackingOptionID
20918+
type: object
2065020919
BatchPayments:
2065120920
type: object
2065220921
x-objectArrayKey: batch_payments

0 commit comments

Comments
 (0)