openapi: 3.2.0 info: title: FISĀ® Accounting as a Serviceā„¢ Data API description: What's changed in our API version: v2 contact: {} servers: - url: https://api.railz.ai description: Main (production) API server tags: - name: Data paths: /data/pushStatus: get: description: Gets the status of push communication records. operationId: pushStatus parameters: - name: businessName required: true in: query schema: example: Railz type: string - name: serviceName required: false in: query schema: type: string enum: - freshbooks - quickbooks - quickbooksDesktop - xero - oracleNetsuite - sageBusinessCloud - sageIntacct - dynamicsBusinessCentral - dynamics365Finance - wave - shopify - square - plaid - myob - zohoBooks - byod - name: pushCommunicationId required: false in: query schema: type: string - name: batchId required: false in: query schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/PushStatusResponseDto' '400': description: Bad Request Error - Thrown if fields sent via query does not follow specifications content: application/json: schema: $ref: '#/components/schemas/Error400ResponseDto' '401': description: Unauthorized - Not logged in or log in expired content: application/json: schema: $ref: '#/components/schemas/Error401ResponseDto' '403': description: Forbidden - Not enough permission content: application/json: schema: $ref: '#/components/schemas/Error403ResponseDto' '500': description: Server Error content: application/json: schema: $ref: '#/components/schemas/Error500ResponseDto' security: - bearer: [] summary: Push status tags: - Data x-summary-source: derived /data/syncStatus: get: description: Gets the synchronization status of all data types for each business connection. operationId: syncStatus parameters: - name: businessName required: true in: query schema: example: Railz type: string - name: serviceName required: true in: query schema: type: string enum: - freshbooks - quickbooks - quickbooksDesktop - xero - oracleNetsuite - sageBusinessCloud - sageIntacct - dynamicsBusinessCentral - dynamics365Finance - wave - shopify - square - plaid - myob - zohoBooks - byod - name: offset required: false in: query schema: format: integer type: number - name: limit required: false in: query schema: format: integer example: 100 type: number - name: startDate required: false in: query schema: type: string - name: endDate required: false in: query schema: type: string - name: dataType required: false in: query schema: type: string enum: - attachments - accountingTransactions - agedReceivable - agedPayable - billPaymentRequests - bankTransactions - bankAccounts - bankTransfers - bankingReconciliation - balanceSheets - bills - budgets - billCreditNotes - billPayments - businessInfo - businessValuations - cashflowStatements - accounts - creditScore - customers - deposits - estimates - fraudRiskMetrics - financialBenchmarking - portfolioMetrics - financialRatios - financialForecasts - incomeStatements - inventory - invoices - invoiceCreditNotes - invoicePayments - journalEntries - journals - purchaseOrders - probabilityOfDefault - refunds - taxBenchmarking - taxRates - taxAuthority - trackingCategories - trialBalances - vendors - paymentMethods - expenses - contacts - vendorBankAccounts - customerBankAccounts - payrollTransactions - name: reportFrequency required: false in: query schema: type: string - name: currentStatus required: false in: query schema: type: string - name: accountingMethod required: false in: query schema: type: string enum: - cash - accrual - name: orderBy required: false in: query schema: type: string responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/DataStatusResponseDto' '400': description: Bad Request Error - Thrown if fields sent via query does not follow specifications content: application/json: schema: $ref: '#/components/schemas/Error400ResponseDto' '401': description: Unauthorized - Not logged in or log in expired content: application/json: schema: $ref: '#/components/schemas/Error401ResponseDto' '403': description: Forbidden - Not enough permission content: application/json: schema: $ref: '#/components/schemas/Error403ResponseDto' '500': description: Server Error content: application/json: schema: $ref: '#/components/schemas/Error500ResponseDto' security: - bearer: [] summary: Sync status tags: - Data x-summary-source: derived /data/sync: post: description: Initiates the synchronisation for a specific data type. operationId: dataSync parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DataSyncDto' responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/DataSyncResponseDto' '400': description: Bad Request Error - Thrown if fields sent via query does not follow specifications content: application/json: schema: $ref: '#/components/schemas/Error400ResponseDto' '401': description: Unauthorized - Not logged in or log in expired content: application/json: schema: $ref: '#/components/schemas/Error401ResponseDto' '403': description: Forbidden - Not enough permission content: application/json: schema: $ref: '#/components/schemas/Error403ResponseDto' '500': description: Server Error content: application/json: schema: $ref: '#/components/schemas/Error500ResponseDto' security: - bearer: [] summary: Data sync tags: - Data x-summary-source: derived components: schemas: Error401Dto: type: object properties: statusCode: type: number readOnly: true example: 401 message: readOnly: true example: - Unauthorized type: array items: type: string error: type: string readOnly: true example: Unauthorized required: - statusCode - message - error PushStatusDataV1: type: object properties: serviceName: type: string readOnly: true example: quickbooks enum: - quickbooks - xero - freshbooks - quickbooksDesktop - sageIntacct - sageBusinessCloud - oracleNetsuite - dynamicsBusinessCentral - dynamics365Finance - wave - zohoBooks - myob dataType: type: string readOnly: true example: balanceSheet requestedOn: format: date-time type: string readOnly: true example: '2021-03-17T07:58:39.781Z' completedOn: format: date-time type: string readOnly: true example: '2021-03-17T07:58:39.781Z' status: type: string readOnly: true example: success enum: - success - failed - pending responseCode: type: number readOnly: true example: 200 format: integer validation: $ref: '#/components/schemas/Validation' pushCommunicationId: type: string readOnly: true example: 60473b57f0cdd1683ca71f60 batchId: example: 63bf973a0f08e292519d4f5d allOf: - $ref: '#/components/schemas/ObjectId' sourceObjectId: type: string example: '144' sourceObjectIds: example: - '144' - '154' type: array items: type: string required: - serviceName - dataType - requestedOn - completedOn - status - responseCode - pushCommunicationId Error: type: object properties: field: type: string example: customerName message: type: string example: Must have a length between 1 and 500 characters. DataSyncResponseDto: type: object properties: connectionId: type: string readOnly: true example: CON-94652dff-06ab-4b97-bd1b-f91adf7048c3 businessName: type: string readOnly: true example: Railz serviceName: type: string readOnly: true example: quickbooks enum: - quickbooks - xero - freshbooks - quickbooksDesktop - sageIntacct - sageBusinessCloud - oracleNetsuite - dynamicsBusinessCentral - dynamics365Finance - wave - zohoBooks - myob dataType: type: string readOnly: true example: balanceSheet requestedOn: format: date-time type: string readOnly: true example: '2021-03-18T08:16:51.233Z' required: - connectionId - businessName - serviceName - dataType - requestedOn PushStatusMetaData: type: object properties: count: type: number readOnly: true example: 1 format: integer businessName: type: string readOnly: true example: Railz required: - count - businessName DataType: type: object properties: dataType: type: string readOnly: true example: BalanceSheet lastSyncDate: type: string example: '2021-04-01T00:31:00Z' lastUpdatedDate: type: string example: '2021-04-01T00:31:00Z' reports: readOnly: true type: array items: $ref: '#/components/schemas/Report' required: - dataType - reports DataStatusResponseDto: type: object properties: meta: readOnly: true allOf: - $ref: '#/components/schemas/DataSyncMeta' data: type: array items: $ref: '#/components/schemas/DataSyncData' required: - meta Error401ResponseDto: type: object properties: error: readOnly: true allOf: - $ref: '#/components/schemas/Error401Dto' payload: type: object readOnly: true example: {} required: - error - payload Error400ResponseDto: type: object properties: error: readOnly: true allOf: - $ref: '#/components/schemas/Error400Dto' payload: type: object readOnly: true required: - error - payload ObjectId: type: object properties: {} PushStatusResponseDto: type: object properties: meta: $ref: '#/components/schemas/PushStatusMetaData' pagination: $ref: '#/components/schemas/PaginationMetaData' data: readOnly: true type: array items: $ref: '#/components/schemas/PushStatusDataV1' required: - meta - pagination - data Error400Dto: type: object properties: statusCode: type: number readOnly: true example: 400 message: readOnly: true example: - businessName cannot be null type: array items: type: string error: type: string readOnly: true example: Bad Request required: - statusCode - message - error Validation: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' Report: type: object properties: startDate: type: string example: '2021-03-01T00:00:00Z' endDate: type: string example: '2021-03-31T00:00:00Z' lastSuccessfulSync: type: string example: '2021-04-01T00:31:00Z' reportFrequency: type: string example: month currentStatus: type: string example: success enum: - success - failed - pending - empty latestReportId: type: string example: 6070149d1d685e6cf0583e36 latestSuccessfulReportId: type: string example: 601077f5914dac670966f660 accountingMethod: type: string example: accrual reconstructed: type: boolean example: true DataSyncDto: type: object properties: businessName: type: string example: Railz serviceName: type: string enum: - freshbooks - quickbooks - quickbooksDesktop - xero - oracleNetsuite - sageBusinessCloud - sageIntacct - dynamicsBusinessCentral - dynamics365Finance - wave - shopify - square - plaid - myob - zohoBooks - byod dataType: type: string enum: - accountingTransactions - accounts - agedPayable - agedReceivable - attachments - balanceSheets - bankingReconciliation - bankTransactions - bankAccounts - bankTransfers - billCreditNotes - billPayments - bills - budgets - businessInfo - businessValuations - cashflowStatements - creditScore - customers - deposits - estimates - financialBenchmarking - financialForecasts - financialRatios - fraudRiskMetrics - incomeStatements - inventory - invoiceCreditNotes - invoicePayments - invoices - journalEntries - journals - probabilityOfDefault - purchaseOrders - refunds - taxBenchmarking - taxRates - taxAuthority - trackingCategories - trialBalances - vendors - paymentMethods - portfolioMetrics - expenses - contacts - vendorBankAccounts - customerBankAccounts - billPaymentRequests - payrollTransactions - transactions - products - orders - disputes - bankAccounts - bankTransactions - bankAssets fullSync: type: boolean default: false required: - businessName - serviceName - dataType PaginationMetaData: type: object properties: offset: type: number readOnly: true limit: type: number readOnly: true count: type: number readOnly: true required: - offset - limit - count Error403ResponseDto: type: object properties: error: readOnly: true allOf: - $ref: '#/components/schemas/Error403Dto' payload: type: object readOnly: true example: {} required: - error - payload DataSyncData: type: object properties: connectionId: type: string readOnly: true example: CON-94652dff-06ab-4b97-bd1b-f91adf7048c3 dataTypes: readOnly: true type: array items: $ref: '#/components/schemas/DataType' syncTime: type: number example: '1.234' percentageCompleted: type: number example: '75.89' required: - connectionId - dataTypes Error500Dto: type: object properties: error: type: string readOnly: true example: Internal Server Error message: readOnly: true example: - INTERNAL_ERROR type: array items: type: string statusCode: type: number readOnly: true example: 500 required: - error - message - statusCode Error403Dto: type: object properties: statusCode: type: number readOnly: true example: 403 message: readOnly: true example: - Forbidden resource type: array items: type: string error: type: string readOnly: true example: Forbidden required: - statusCode - message - error DataSyncMeta: type: object properties: serviceName: type: string readOnly: true example: xero enum: - quickbooks - xero - freshbooks - quickbooksDesktop - sageIntacct - sageBusinessCloud - oracleNetsuite - dynamicsBusinessCentral - dynamics365Finance - wave - zohoBooks - myob businessName: type: string readOnly: true example: Demo Business required: - serviceName - businessName Error500ResponseDto: type: object properties: error: readOnly: true allOf: - $ref: '#/components/schemas/Error500Dto' payload: type: object readOnly: true required: - error - payload securitySchemes: bearer: scheme: bearer bearerFormat: JWT type: http