@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api Accounting API
@base https://api.codat.io
@version 3.0.0
@auth ApiKey Authorization in header
@endpoints 135
@hint download_for_search
@toc companies(135)

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/accountTransactions
@required {companyId: str(uuid), connectionId: str(uuid)}
@optional {page: int(int32)=1, pageSize: int(int32)=100, query: str, orderBy: str}
@returns(200)
@errors {400, 401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/accountTransactions/{accountTransactionId}
@required {companyId: str(uuid), connectionId: str(uuid), accountTransactionId: str}
@returns(200)
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/accounts
@required {companyId: str(uuid)}
@optional {page: int(int32)=1, pageSize: int(int32)=100, query: str, orderBy: str}
@returns(200)
@errors {400, 401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/accounts/{accountId}
@returns(200)
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/options/chartOfAccounts
@returns(200) {type: str, displayName: str, description: str, required: bool, properties: map?, options: [map]?, validation: map{warnings: [map]?, information: [map]?}}
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint POST /companies/{companyId}/connections/{connectionId}/push/accounts
@optional {timeoutInMinutes: int(int32), nominalCode: str, name: str, description: str, fullyQualifiedCategory: str, fullyQualifiedName: str, currency: str(ISO4217), currentBalance: num(decimal), type: str(Unknown/Asset/Expense/Income/Liability/Equity), status: str(Unknown/Active/Archived/Pending), isBankAccount: bool, validDatatypeLinks: [map{property: str, links: [str]}], supplementalData: map{content: map}}
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/billCreditNotes
@optional {page: int(int32)=1, pageSize: int(int32)=100, query: str, orderBy: str}
@returns(200)
@errors {400, 401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/billCreditNotes/{billCreditNoteId}
@returns(200)
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/options/billCreditNotes
@returns(200) {type: str, displayName: str, description: str, required: bool, properties: map?, options: [map]?, validation: map{warnings: [map]?, information: [map]?}}
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint POST /companies/{companyId}/connections/{connectionId}/push/billCreditNotes
@optional {timeoutInMinutes: int(int32)}
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint PUT /companies/{companyId}/connections/{connectionId}/push/billCreditNotes/{billCreditNoteId}
@optional {timeoutInMinutes: int(int32), forceUpdate: bool=false}
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint POST /companies/{companyId}/connections/{connectionId}/push/billCreditNotes/{billCreditNoteId}/attachment
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/billPayments
@optional {page: int(int32)=1, pageSize: int(int32)=100, query: str, orderBy: str}
@returns(200)
@errors {400, 401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/billPayments/{billPaymentId}
@returns(200)
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint POST /companies/{companyId}/connections/{connectionId}/push/billPayments
@optional {timeoutInMinutes: int(int32)}
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/options/billPayments
@returns(200) {type: str, displayName: str, description: str, required: bool, properties: map?, options: [map]?, validation: map{warnings: [map]?, information: [map]?}}
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint DELETE /companies/{companyId}/connections/{connectionId}/push/billPayments/{billPaymentId}
@returns(200) {changes: [map]?, dataType: str, companyId: str(uuid), pushOperationKey: str(uuid), dataConnectionKey: str(uuid), requestedOnUtc: str, completedOnUtc: str, timeoutInMinutes: int(int32)?, timeoutInSeconds: int(int32)?, status: str, errorMessage: str?, validation: map{errors: [map]?, warnings: [map]?}, statusCode: int}
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/bills
@optional {page: int(int32)=1, pageSize: int(int32)=100, query: str, orderBy: str}
@returns(200)
@errors {400, 401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/bills/{billId}
@returns(200)
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/options/bills
@returns(200) {type: str, displayName: str, description: str, required: bool, properties: map?, options: [map]?, validation: map{warnings: [map]?, information: [map]?}}
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint POST /companies/{companyId}/connections/{connectionId}/push/bills
@optional {timeoutInMinutes: int(int32)}
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint PUT /companies/{companyId}/connections/{connectionId}/push/bills/{billId}
@optional {timeoutInMinutes: int(int32), forceUpdate: bool=false}
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint DELETE /companies/{companyId}/connections/{connectionId}/push/bills/{billId}
@returns(200) {changes: [map]?, dataType: str, companyId: str(uuid), pushOperationKey: str(uuid), dataConnectionKey: str(uuid), requestedOnUtc: str, completedOnUtc: str, timeoutInMinutes: int(int32)?, timeoutInSeconds: int(int32)?, status: str, errorMessage: str?, validation: map{errors: [map]?, warnings: [map]?}, statusCode: int}
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/bills/{billId}/attachments
@returns(200) {attachments: [map]?}
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/bills/{billId}/attachments/{attachmentId}
@required {attachmentId: str(uuid)}
@returns(200)
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/bills/{billId}/attachments/{attachmentId}/download
@required {attachmentId: str(uuid)}
@returns(200)
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint POST /companies/{companyId}/connections/{connectionId}/push/bills/{billId}/attachments
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/creditNotes
@optional {page: int(int32)=1, pageSize: int(int32)=100, query: str, orderBy: str}
@returns(200)
@errors {400, 401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/creditNotes/{creditNoteId}
@returns(200)
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/options/creditNotes
@returns(200) {type: str, displayName: str, description: str, required: bool, properties: map?, options: [map]?, validation: map{warnings: [map]?, information: [map]?}}
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint POST /companies/{companyId}/connections/{connectionId}/push/creditNotes
@optional {timeoutInMinutes: int(int32)}
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint PUT /companies/{companyId}/connections/{connectionId}/push/creditNotes/{creditNoteId}
@optional {timeoutInMinutes: int(int32), forceUpdate: bool=false}
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/customers
@optional {page: int(int32)=1, pageSize: int(int32)=100, query: str, orderBy: str}
@returns(200)
@errors {400, 401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/customers/{customerId}
@returns(200)
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/options/customers
@returns(200) {type: str, displayName: str, description: str, required: bool, properties: map?, options: [map]?, validation: map{warnings: [map]?, information: [map]?}}
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint POST /companies/{companyId}/connections/{connectionId}/push/customers
@optional {timeoutInMinutes: int(int32)}
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint PUT /companies/{companyId}/connections/{connectionId}/push/customers/{customerId}
@optional {timeoutInMinutes: int(int32), forceUpdate: bool=false}
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/customers/{customerId}/attachments
@returns(200) {attachments: [map]?}
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/customers/{customerId}/attachments/{attachmentId}
@returns(200)
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/customers/{customerId}/attachments/{attachmentId}/download
@returns(200)
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/directCosts
@optional {page: int(int32)=1, pageSize: int(int32)=100, query: str, orderBy: str}
@returns(200)
@errors {400, 401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/directCosts/{directCostId}
@returns(200)
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/options/directCosts
@returns(200) {type: str, displayName: str, description: str, required: bool, properties: map?, options: [map]?, validation: map{warnings: [map]?, information: [map]?}}
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint POST /companies/{companyId}/connections/{connectionId}/push/directCosts
@required {issueDate: str, currency: str(ISO4217), lineItems: [map{description: str, unitAmount!: num(decimal), quantity!: num(decimal), discountAmount: num(decimal), discountPercentage: num(decimal), subTotal: num(decimal), taxAmount: num(decimal), totalAmount: num(decimal), accountRef: map, taxRateRef: map, itemRef: map, trackingCategoryRefs: [map], tracking: map}], paymentAllocations: [map{payment!: map, allocation!: map}], subTotal: num(decimal), taxAmount: num(decimal), totalAmount: num(decimal)}
@optional {timeoutInMinutes: int(int32), reference: str, note: str, contactRef: map{id!: str, dataType: str}, currencyRate: num(decimal), supplementalData: map{content: map}}
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint DELETE /companies/{companyId}/connections/{connectionId}/push/directCosts/{directCostId}
@returns(200) {changes: [map]?, dataType: str, companyId: str(uuid), pushOperationKey: str(uuid), dataConnectionKey: str(uuid), requestedOnUtc: str, completedOnUtc: str, timeoutInMinutes: int(int32)?, timeoutInSeconds: int(int32)?, status: str, errorMessage: str?, validation: map{errors: [map]?, warnings: [map]?}, statusCode: int}
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint POST /companies/{companyId}/connections/{connectionId}/push/directCosts/{directCostId}/attachment
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/directCosts/{directCostId}/attachments/{attachmentId}
@required {attachmentId: str(uuid)}
@returns(200)
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/directCosts/{directCostId}/attachments/{attachmentId}/download
@required {attachmentId: str(uuid)}
@returns(200)
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/directCosts/{directCostId}/attachments
@returns(200) {attachments: [map]?}
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/directIncomes
@optional {page: int(int32)=1, pageSize: int(int32)=100, query: str, orderBy: str}
@returns(200)
@errors {400, 401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/directIncomes/{directIncomeId}
@returns(200)
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/options/directIncomes
@returns(200) {type: str, displayName: str, description: str, required: bool, properties: map?, options: [map]?, validation: map{warnings: [map]?, information: [map]?}}
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint POST /companies/{companyId}/connections/{connectionId}/push/directIncomes
@optional {timeoutInMinutes: int(int32)}
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint POST /companies/{companyId}/connections/{connectionId}/push/directIncomes/{directIncomeId}/attachment
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/directIncomes/{directIncomeId}/attachments/{attachmentId}
@optional {timeoutInMinutes: int(int32)}
@returns(200)
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/directIncomes/{directIncomeId}/attachments/{attachmentId}/download
@returns(200)
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/directIncomes/{directIncomeId}/attachments
@returns(200) {attachments: [map]?}
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/financials/balanceSheet
@required {periodLength: int(int32), periodsToCompare: int(int32)}
@optional {startMonth: str}
@returns(200) {currency: str(ISO4217), reports: [map], mostRecentAvailableMonth: str, earliestAvailableMonth: str}
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/financials/profitAndLoss
@required {periodLength: int(int32), periodsToCompare: int(int32)}
@optional {startMonth: str}
@returns(200) {reports: [map], reportBasis: str, currency: str, mostRecentAvailableMonth: str, earliestAvailableMonth: str}
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/financials/cashFlowStatement
@required {periodLength: int(int32), periodsToCompare: int(int32)}
@optional {startMonth: str}
@returns(200) {reports: [map], reportBasis: str, reportInput: str, currency: str(ISO4217), mostRecentAvailableMonth: str, earliestAvailableMonth: str}
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/info
@returns(200) {companyName: str?, accountingPlatformRef: str?, companyLegalName: str?, addresses: [map]?, phoneNumbers: [map]?, webLinks: [map]?, ledgerLockDate: str, registrationNumber: str?, taxNumber: str?, financialYearStartDate: str, baseCurrency: str?, sourceUrls: map?, createdDate: str, supplementalData: map{content: map?}}
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint POST /companies/{companyId}/data/info
@returns(200) {datasetLogsUrl: str(uri)?, id: str(uuid), companyId: str(uuid), connectionId: str(uuid), dataType: str, status: str, errorMessage: str?, requested: str, completed: str, progress: int(int32), isCompleted: bool, isErrored: bool, validationInformationUrl: str(uri)?}
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/invoices
@optional {page: int(int32)=1, pageSize: int(int32)=100, query: str, orderBy: str}
@returns(200)
@errors {400, 401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/invoices/{invoiceId}
@required {invoiceId: str}
@returns(200)
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/invoices/{invoiceId}/pdf
@required {invoiceId: str}
@returns(200)
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/invoices/{invoiceId}/attachments
@required {invoiceId: str}
@returns(200) {attachments: [map]?}
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/invoices/{invoiceId}/attachments/{attachmentId}
@required {invoiceId: str, attachmentId: str(uuid)}
@returns(200)
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/invoices/{invoiceId}/attachments/{attachmentId}/download
@required {invoiceId: str, attachmentId: str(uuid)}
@returns(200)
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/options/invoices
@returns(200) {type: str, displayName: str, description: str, required: bool, properties: map?, options: [map]?, validation: map{warnings: [map]?, information: [map]?}}
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint POST /companies/{companyId}/connections/{connectionId}/push/invoices
@optional {timeoutInMinutes: int(int32)}
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint PUT /companies/{companyId}/connections/{connectionId}/push/invoices/{invoiceId}
@required {invoiceId: str}
@optional {timeoutInMinutes: int(int32), forceUpdate: bool=false}
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint DELETE /companies/{companyId}/connections/{connectionId}/push/invoices/{invoiceId}
@required {invoiceId: str, companyId: str(uuid), connectionId: str(uuid)}
@returns(200) {changes: [map]?, dataType: str, companyId: str(uuid), pushOperationKey: str(uuid), dataConnectionKey: str(uuid), requestedOnUtc: str, completedOnUtc: str, timeoutInMinutes: int(int32)?, timeoutInSeconds: int(int32)?, status: str, errorMessage: str?, validation: map{errors: [map]?, warnings: [map]?}, statusCode: int}
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint POST /companies/{companyId}/connections/{connectionId}/push/invoices/{invoiceId}/attachment
@required {invoiceId: str}
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/itemReceipts
@optional {page: int(int32)=1, pageSize: int(int32)=100, query: str, orderBy: str}
@returns(200)
@errors {400, 401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/itemReceipts/{itemReceiptId}
@returns(200)
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/items
@optional {page: int(int32)=1, pageSize: int(int32)=100, query: str, orderBy: str}
@returns(200)
@errors {400, 401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/items/{itemId}
@returns(200)
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/options/items
@returns(200) {type: str, displayName: str, description: str, required: bool, properties: map?, options: [map]?, validation: map{warnings: [map]?, information: [map]?}}
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint POST /companies/{companyId}/connections/{connectionId}/push/items
@optional {timeoutInMinutes: int(int32)}
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/journalEntries
@optional {page: int(int32)=1, pageSize: int(int32)=100, query: str, orderBy: str}
@returns(200)
@errors {400, 401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/journalEntries/{journalEntryId}
@returns(200)
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/options/journalEntries
@returns(200) {type: str, displayName: str, description: str, required: bool, properties: map?, options: [map]?, validation: map{warnings: [map]?, information: [map]?}}
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint POST /companies/{companyId}/connections/{connectionId}/push/journalEntries
@optional {timeoutInMinutes: int(int32)}
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint DELETE /companies/{companyId}/connections/{connectionId}/push/journalEntries/{journalEntryId}
@returns(200) {changes: [map]?, dataType: str, companyId: str(uuid), pushOperationKey: str(uuid), dataConnectionKey: str(uuid), requestedOnUtc: str, completedOnUtc: str, timeoutInMinutes: int(int32)?, timeoutInSeconds: int(int32)?, status: str, errorMessage: str?, validation: map{errors: [map]?, warnings: [map]?}, statusCode: int}
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/journals
@optional {page: int(int32)=1, pageSize: int(int32)=100, query: str, orderBy: str}
@returns(200)
@errors {400, 401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/journals/{journalId}
@returns(200)
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/options/journals
@returns(200) {type: str, displayName: str, description: str, required: bool, properties: map?, options: [map]?, validation: map{warnings: [map]?, information: [map]?}}
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint POST /companies/{companyId}/connections/{connectionId}/push/journals
@optional {timeoutInMinutes: int(int32), journalCode: str, name: str, type: str, parentId: str, hasChildren: bool, createdOn: str, status: str(Unknown/Active/Archived)}
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/paymentMethods
@optional {page: int(int32)=1, pageSize: int(int32)=100, query: str, orderBy: str}
@returns(200)
@errors {400, 401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/paymentMethods/{paymentMethodId}
@returns(200)
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/payments
@optional {page: int(int32)=1, pageSize: int(int32)=100, query: str, orderBy: str}
@returns(200)
@errors {400, 401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/payments/{paymentId}
@returns(200)
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/payments
@required {linkType: str}
@optional {query: str, page: int(int32)=1, pageSize: int(int32)=100}
@returns(200)
@errors {400, 401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/options/payments
@returns(200) {type: str, displayName: str, description: str, required: bool, properties: map?, options: [map]?, validation: map{warnings: [map]?, information: [map]?}}
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint POST /companies/{companyId}/connections/{connectionId}/push/payments
@optional {timeoutInMinutes: int(int32)}
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/purchaseOrders
@optional {page: int(int32)=1, pageSize: int(int32)=100, query: str, orderBy: str}
@returns(200)
@errors {400, 401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/purchaseOrders/{purchaseOrderId}
@returns(200)
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/options/purchaseOrders
@returns(200) {type: str, displayName: str, description: str, required: bool, properties: map?, options: [map]?, validation: map{warnings: [map]?, information: [map]?}}
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint POST /companies/{companyId}/connections/{connectionId}/push/purchaseOrders
@optional {timeoutInMinutes: int(int32)}
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint PUT /companies/{companyId}/connections/{connectionId}/push/purchaseOrders/{purchaseOrderId}
@optional {timeoutInMinutes: int(int32), forceUpdate: bool=false}
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/purchaseOrders/{purchaseOrderId}/pdf
@required {purchaseOrderId: str}
@returns(200)
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/purchaseOrders/{purchaseOrderId}/attachments
@required {purchaseOrderId: str}
@returns(200) {attachments: [map]?}
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/purchaseOrders/{purchaseOrderId}/attachments/{attachmentId}
@required {purchaseOrderId: str, attachmentId: str(uuid)}
@returns(200)
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/purchaseOrders/{purchaseOrderId}/attachments/{attachmentId}/download
@required {purchaseOrderId: str, attachmentId: str(uuid)}
@returns(200)
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/salesOrders
@optional {page: int(int32)=1, pageSize: int(int32)=100, query: str, orderBy: str}
@returns(200)
@errors {400, 401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/salesOrders/{salesOrderId}
@returns(200)
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/suppliers
@optional {page: int(int32)=1, pageSize: int(int32)=100, query: str, orderBy: str}
@returns(200)
@errors {400, 401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/suppliers/{supplierId}
@returns(200)
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/options/suppliers
@returns(200) {type: str, displayName: str, description: str, required: bool, properties: map?, options: [map]?, validation: map{warnings: [map]?, information: [map]?}}
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint POST /companies/{companyId}/connections/{connectionId}/push/suppliers
@optional {timeoutInMinutes: int(int32)}
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint PUT /companies/{companyId}/connections/{connectionId}/push/suppliers/{supplierId}
@optional {timeoutInMinutes: int(int32), forceUpdate: bool=false}
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/suppliers/{supplierId}/attachments
@returns(200) {attachments: [map]?}
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/suppliers/{supplierId}/attachments/{attachmentId}
@returns(200)
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/suppliers/{supplierId}/attachments/{attachmentId}/download
@returns(200)
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/taxRates
@optional {page: int(int32)=1, pageSize: int(int32)=100, query: str, orderBy: str}
@returns(200)
@errors {400, 401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/taxRates/{taxRateId}
@returns(200)
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/trackingCategories
@optional {page: int(int32)=1, pageSize: int(int32)=100, query: str, orderBy: str}
@returns(200)
@errors {400, 401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/data/trackingCategories/{trackingCategoryId}
@returns(200)
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/transfers
@optional {page: int(int32)=1, pageSize: int(int32)=100, query: str, orderBy: str}
@returns(200)
@errors {400, 401, 402, 403, 404, 409, 429, 500, 503}

@endpoint POST /companies/{companyId}/connections/{connectionId}/push/transfers/{transferId}/attachment
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/transfers/{transferId}
@returns(200)
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/options/transfers
@returns(200) {type: str, displayName: str, description: str, required: bool, properties: map?, options: [map]?, validation: map{warnings: [map]?, information: [map]?}}
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint POST /companies/{companyId}/connections/{connectionId}/push/transfers
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/bankAccounts
@optional {page: int(int32)=1, pageSize: int(int32)=100, query: str, orderBy: str}
@returns(200)
@errors {400, 401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/bankAccounts/{accountId}
@returns(200)
@errors {401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/options/bankAccounts
@returns(200) {type: str, displayName: str, description: str, required: bool, properties: map?, options: [map]?, validation: map{warnings: [map]?, information: [map]?}}
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint POST /companies/{companyId}/connections/{connectionId}/push/bankAccounts
@optional {allowSyncOnPushComplete: bool=true, timeoutInMinutes: int(int32)}
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint PUT /companies/{companyId}/connections/{connectionId}/push/bankAccounts/{bankAccountId}
@optional {timeoutInMinutes: int(int32), forceUpdate: bool=false}
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/data/bankAccounts/{accountId}/bankTransactions
@required {companyId: str(uuid), connectionId: str(uuid), accountId: str}
@optional {page: int(int32)=1, pageSize: int(int32)=100, query: str, orderBy: str}
@returns(200)
@errors {400, 401, 402, 403, 404, 409, 429, 500, 503}

@endpoint GET /companies/{companyId}/connections/{connectionId}/options/bankAccounts/{accountId}/bankTransactions
@required {companyId: str(uuid), connectionId: str(uuid), accountId: str}
@returns(200) {type: str, displayName: str, description: str, required: bool, properties: map?, options: [map]?, validation: map{warnings: [map]?, information: [map]?}}
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint POST /companies/{companyId}/connections/{connectionId}/push/bankAccounts/{accountId}/bankTransactions
@required {companyId: str(uuid), connectionId: str(uuid), accountId: str}
@optional {timeoutInMinutes: int(int32), allowSyncOnPushComplete: bool=true, accountId: str, transactions: [map{id: any, amount: any, date: str, description: any, balance: any}]}
@returns(200)
@errors {400, 401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/reports/agedDebtor/available
@returns(200)
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/reports/agedDebtor
@optional {reportDate: str(date), numberOfPeriods: int(int32), periodLengthDays: int(int32)}
@returns(200) {generated: str, reportDate: str, data: [map]}
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/reports/agedCreditor/available
@returns(200)
@errors {401, 402, 403, 404, 429, 500, 503}

@endpoint GET /companies/{companyId}/reports/agedCreditor
@optional {reportDate: str(date), numberOfPeriods: int(int32), periodLengthDays: int(int32)}
@returns(200) {generated: str, reportDate: str, data: [map]}
@errors {401, 402, 403, 404, 429, 500, 503}

@end
