swagger: "2.0"
info:
  version: 1.3.0
  title: "ledger"
  description: "Ledger Microservice"
  termsOfService: "http://taxnexus.net/terms/"
  contact:
    email: "noc@taxnexus.net"
  license:
    name: "Proprietary - Copyright (c) 2018-2020 by Taxnexus, Inc."
schemes:
  - "http"
basePath: "/v1"
host: "ledger.fabric.tnxs.net:8080"
securityDefinitions:
  ApiKeyAuth:
    type: "apiKey"
    in: "header"
    name: "X-API-Key"
security:
  - ApiKeyAuth: []
consumes:
  - "application/json"
produces:
  - "application/json"
parameters:
  AccountingRuleRequest:
    description: An array of Accounting Rule records
    in: body
    name: AccountingRuleRequest
    required: true
    schema:
      $ref: "#/definitions/AccountingRuleRequest"
  AccountingRulesetRequest:
    description: An array of Accounting Ruleset records
    in: body
    name: AccountingRulesetRequest
    required: true
    schema:
      $ref: "#/definitions/AccountingRulesetRequest"
  CoaRequest:
    description: An array of Coa records
    in: body
    name: CoaRequest
    required: true
    schema:
      $ref: "#/definitions/CoaRequest"
  GlAccountRequest:
    description: An array of new GL Account records
    in: body
    name: GlAccountRequest
    required: true
    schema:
      $ref: "#/definitions/GlAccountRequest"
  GlBalanceIdQueryRequired:
    description: Taxnexus Record Id of a GL Balance Record
    in: query
    name: GlBalanceId
    required: true
    type: string
  GlBalanceRequest:
    description: An array of new GL Balance records
    in: body
    name: GlBalanceRequest
    required: true
    schema:
      $ref: "#/definitions/GlBalanceRequest"
  JournalEntryRequest:
    description: An array of Journal Entry records
    in: body
    name: JournalEntryRequest
    required: true
    schema:
      $ref: "#/definitions/JournalEntryRequest"
  PeriodRequest:
    description: An array of Period records
    in: body
    name: PeriodRequest
    required: true
    schema:
      $ref: "#/definitions/PeriodRequest"
  yearQuery:
    description: The year of the report
    in: query
    name: year
    required: false
    type: number
    format: int64
  quarterQuery:
    description: The Quarter Number (1,2,3,4) of the report
    in: query
    name: quarter
    required: false
    type: number
    format: int64
  monthQuery:
    description: The Month Number (1,2, ..., 12) of the report
    in: query
    name: month
    required: false
    type: number
    format: int64
  accountIdQuery:
    description: Taxnexus Record Id of an Account
    in: query
    name: accountId
    required: false
    type: string
  accountIdQueryRequired:
    description: Taxnexus Record Id of an Account
    in: query
    name: accountId
    required: true
    type: string
  accountNumberQuery:
    description:
      The Taxnexus Account Number of the Account to be used a record
      retrieval
    in: query
    name: accountNumber
    required: false
    type: string
  coaIdQuery:
    description: Taxnexus Id of the Chart of Accounts to be retrieved
    in: query
    name: coaId
    required: false
    type: string
  companyIdQuery:
    description: Taxnexus Record Id of a Company
    in: query
    name: companyId
    required: false
    type: string
  dateFromQuery:
    description: The Starting Date for an object retrieval
    in: query
    name: dateFrom
    required: false
    type: string
  dateQuery:
    description: The Date for an object retrieval
    in: query
    name: date
    required: false
    type: string
  dateToQuery:
    description: The Ending Date for an object retrieval
    in: query
    name: dateTo
    required: false
    type: string
  glAccountIdQuery:
    description: Taxnexus Record Id of Gl Account Record
    in: query
    name: glAccountId
    required: false
    type: string
  idQuery:
    description: Taxnexus Record Id
    in: query
    name: id
    required: false
    type: string
  idQueryRequired:
    description: Taxnexus Record Id
    in: query
    name: id
    required: true
    type: string
  limitQuery:
    description: "How many objects to return at one time"
    format: int64
    in: query
    name: limit
    required: false
    type: integer
  nameQuery:
    description: The Name of this Object
    in: query
    name: name
    required: false
    type: string
  offsetQuery:
    description: How many objects to skip? (default 0)
    format: int64
    in: query
    name: offset
    required: false
    type: integer
  periodIdQuery:
    description: Taxnexus Record Id of a Period
    in: query
    name: periodId
    required: false
    type: string
  periodIdQueryRequired:
    description: Taxnexus Record Id of a Period
    in: query
    name: periodId
    required: true
    type: string
responses:
  AccessForbidden:
    description: "Access forbidden, account lacks access"
    schema:
      $ref: "#/definitions/Error"
  AccountingRuleResponse:
    description: Taxnexus Response with Accounting Rule objects
    schema:
      $ref: "#/definitions/AccountingRuleResponse"
  AccountingRulesetResponse:
    description: Taxnexus Response with Accounting Ruleset objects
    schema:
      $ref: "#/definitions/AccountingRulesetResponse"
  CoaResponse:
    description: Taxnexus Response with Chart of Accounts objects
    schema:
      $ref: "#/definitions/CoaResponse"
  Conflict:
    description: Conflict
    schema:
      $ref: "#/definitions/Error"
  DeleteResponse:
    description:
      Taxnexus Response with Message Objects with Delete Status
    schema:
      $ref: "#/definitions/DeleteResponse"
  GlAccountResponse:
    description:
      Taxnexus Response with GL Account objects with Journal Items
    schema:
      $ref: "#/definitions/GlAccountResponse"
  GlBalanceResponse:
    description:
      Taxnexus Response with GL Account objects with Journal Items
    schema:
      $ref: "#/definitions/GlBalanceResponse"
  InvalidDataError:
    description: Invalid data was sent
    schema:
      $ref: "#/definitions/InvalidError"
  JournalEntryResponse:
    description:
      Taxnexus Response with Journal Entry objects with Journal Items
    schema:
      $ref: "#/definitions/JournalEntryResponse"
  JournalItemResponse:
    description: Taxnexus Response with Journal Item objects
    schema:
      $ref: "#/definitions/JournalItemResponse"
  JournalItemSummaryResponse:
    description: Taxnexus Response with Journal Item objects
    schema:
      $ref: "#/definitions/JournalItemSummaryResponse"
  NotFound:
    description: Resource was not found
    schema:
      $ref: "#/definitions/Error"
  PeriodResponse:
    description: Taxnexus Response with Period objects
    schema:
      $ref: "#/definitions/PeriodResponse"
  PutResponse:
    description:
      Taxnexus Response with an array of Message objects in response to
      a PUT
    schema:
      $ref: "#/definitions/PutResponse"
  ServerError:
    description: Server Internal Error
    schema:
      $ref: "#/definitions/Error"
  Unauthorized:
    description: "Access Unauthorized, invalid API-KEY was used"
    schema:
      $ref: "#/definitions/Error"
  UnprocessableEntity:
    description: "Unprocessable Entity, likely a bad parameter"
    schema:
      $ref: "#/definitions/Error"
paths:
  /accountingrules:
    get:
      description: Return a list of Accounting Rules
      operationId: getAccountingRules
      parameters:
        - $ref: "#/parameters/accountIdQueryRequired"
        - $ref: "#/parameters/idQuery"
        - $ref: "#/parameters/limitQuery"
        - $ref: "#/parameters/offsetQuery"
      responses:
        "200":
          $ref: "#/responses/AccountingRuleResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      summary: Get a list of Accounting Rules
      tags:
        - AccountingRule
    post:
      description: Create new Accounting Rules
      operationId: postAccountingRules
      parameters:
        - $ref: "#/parameters/AccountingRuleRequest"
      responses:
        "200":
          $ref: "#/responses/AccountingRuleResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      summary: Create new Accounting Rules
      tags:
        - AccountingRule
  /accountingrulesets:
    get:
      description: Return a list of available Accounting Rulessets
      operationId: getAccountingRulesets
      parameters:
        - $ref: "#/parameters/accountIdQueryRequired"
        - $ref: "#/parameters/limitQuery"
        - $ref: "#/parameters/offsetQuery"
      responses:
        "200":
          $ref: "#/responses/AccountingRulesetResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      summary: Get a list of Accounting Rulessets
      tags:
        - AccountingRuleset
    post:
      description: Create new Accounting Rulessets
      operationId: postAccountingRulesets
      parameters:
        - $ref: "#/parameters/AccountingRulesetRequest"
      responses:
        "200":
          $ref: "#/responses/AccountingRulesetResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      summary: Create new Accounting Rulessets
      tags:
        - AccountingRuleset
  /coas:
    get:
      operationId: getCoas
      parameters:
        - $ref: "#/parameters/coaIdQuery"
        - $ref: "#/parameters/accountIdQuery"
        - $ref: "#/parameters/dateFromQuery"
        - $ref: "#/parameters/dateToQuery"
      responses:
        "200":
          $ref: "#/responses/CoaResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      summary: Get Chart of Accounts reports
      tags:
        - Coa
    post:
      operationId: postCoas
      parameters:
        - $ref: "#/parameters/CoaRequest"
      responses:
        "200":
          $ref: "#/responses/CoaResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      summary: Create New Accounting Report
      tags:
        - Coa
  /glaccounts:
    get:
      description: Return a list of available General  Accounts
      operationId: getGlAccounts
      parameters:
        - $ref: "#/parameters/accountIdQuery"
        - $ref: "#/parameters/idQuery"
        - $ref: "#/parameters/limitQuery"
        - $ref: "#/parameters/offsetQuery"
      responses:
        "200":
          $ref: "#/responses/GlAccountResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      summary: Get a list of General  Accounts
      tags:
        - GlAccount
    post:
      description: Create new GL Accounts
      operationId: postGlAccounts
      parameters:
        - $ref: "#/parameters/GlAccountRequest"
      responses:
        "200":
          $ref: "#/responses/GlAccountResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      summary: Create new GL Accounts
      tags:
        - GlAccount
  /glbalances:
    get:
      description:
        Return a list of General  Account Balances for a Taxnexus
        Account
      operationId: getGlBalances
      parameters:
        - $ref: "#/parameters/accountIdQuery"
        - $ref: "#/parameters/glAccountIdQuery"
        - $ref: "#/parameters/idQuery"
        - $ref: "#/parameters/periodIdQuery"
      responses:
        "200":
          $ref: "#/responses/GlBalanceResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      summary: Get one or more General  Account Balance records
      tags:
        - GlBalance
    post:
      description: Insert new GL Balance records
      operationId: postGlBalances
      parameters:
        - $ref: "#/parameters/GlBalanceRequest"
      responses:
        "200":
          $ref: "#/responses/GlBalanceResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      summary: Insert a GL Balance
      tags:
        - GlBalance
  /journalentries:
    get:
      description:
        Return a list of Journal Entries by by Journal Entry ID
      operationId: getJournalEntries
      parameters:
        - $ref: "#/parameters/accountIdQuery"
        - $ref: "#/parameters/dateFromQuery"
        - $ref: "#/parameters/dateToQuery"
        - $ref: "#/parameters/idQuery"
        - $ref: "#/parameters/limitQuery"
        - $ref: "#/parameters/offsetQuery"
      responses:
        "200":
          $ref: "#/responses/JournalEntryResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      summary: Get a list of Journal Entries
      tags:
        - JournalEntry
    post:
      description: Create new Journal Entry Records
      operationId: postJournalEntries
      parameters:
        - $ref: "#/parameters/JournalEntryRequest"
      responses:
        "200":
          $ref: "#/responses/JournalEntryResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      summary: Create new Journal Entry Records
      tags:
        - JournalEntry
  /journalitems:
    get:
      description:
        "Get summaries of Journal Items by year, month and Quarter"
      operationId: getJournalItems
      parameters:
        - $ref: "#/parameters/accountIdQueryRequired"
        - $ref: "#/parameters/yearQuery"
        - $ref: "#/parameters/quarterQuery"
        - $ref: "#/parameters/monthQuery"
      responses:
        "200":
          $ref: "#/responses/JournalItemSummaryResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      summary: Get a Journal Item report
      tags:
        - JournalItem
  /periods:
    get:
      description: Return a list of Periods for an Account
      operationId: getPeriods
      parameters:
        - $ref: "#/parameters/accountIdQuery"
        - $ref: "#/parameters/dateQuery"
        - $ref: "#/parameters/periodIdQuery"
        - $ref: "#/parameters/limitQuery"
        - $ref: "#/parameters/offsetQuery"
      responses:
        "200":
          $ref: "#/responses/PeriodResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      summary: Get a list of Periods
      tags:
        - Period
    post:
      description: Update Period records
      operationId: postPeriods
      parameters:
        - $ref: "#/parameters/PeriodRequest"
      responses:
        "200":
          $ref: "#/responses/PeriodResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      summary: Create new Periods
      tags:
        - Period
definitions:
  AccountingRule:
    description:
      Rules used to assign transactions to the proper GL accounts
    properties:
      AcountID:
        description: The Account ID for whom this Account Rule exists
        type: string
      COGSAccountID:
        description:
          The Taxnexus ID of the Cost of Goods Sold account to be used
          for this Accounting Rule
        type: string
      COGSAccountName:
        description: COGS Account Name
        type: string
      Code:
        description: The Code used for Accounting Rule Lookups
        type: string
      CreatedByID:
        description: Created By
        type: string
      CreatedDate:
        description: Created Date
        type: string
      CreditAccountID:
        description:
          The Taxnexus ID of the GL Account that is the Credit Account
          to be used in this Accounting Rule
        type: string
      CreditAccountName:
        description: Credit Account Name
        type: string
      DebitAccountID:
        description:
          The GL Account that is the Debit Account to be used in this
          Accounting Rule
        type: string
      DebitAccountName:
        description: Debit Account Name
        type: string
      Description:
        description: Description
        type: string
      ID:
        description: Taxnexus Record Id
        type: string
      InventoryAccountID:
        description:
          The Taxnexus ID of the GL Account that is the Inventory
          Account to be used in this Accounting Rule
        type: string
      InventoryAccountName:
        description: Inventory Account Name
        type: string
      IsDeferred:
        description:
          "Is this a deferred tax, not to be charged on the invoice?"
        type: boolean
      LastModifiedByID:
        description: Last Modified By
        type: string
      LastModifiedDate:
        description: Last Modified Date
        type: string
      ParentFK:
        description: Parent Foreign Key
        type: string
      Proportion:
        description:
          The Proportion of Revenue which is governed by this Accounting
          Rule; used for proportional taxing of products and services
        type: number
      TenantID:
        description: Tenant that owns this object instance
        type: string
    type: object
  AccountingRuleRequest:
    description: An array of Accounting Rule objects
    properties:
      Data:
        items:
          $ref: "#/definitions/AccountingRule"
        type: array
    type: object
  AccountingRuleResponse:
    description: An array of Accounting Rule objects
    properties:
      Data:
        items:
          $ref: "#/definitions/AccountingRule"
        type: array
      Meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  AccountingRuleset:
    description:
      Master record for holding a set of accounting rules applied during
      GL processing
    properties:
      AccountID:
        description: Taxnexus Account ID
        type: string
      Code:
        description: Accounting Ruleset Code
        type: string
      CreatedByID:
        description: Created By
        type: string
      CreatedDate:
        description: Created Date
        type: string
      Description:
        description: Ruleset Description
        type: string
      ID:
        description: Taxnexus Record Id
        type: string
      Items:
        description: The Accounting Rules associated with this Ruleset
        items:
          $ref: "#/definitions/AccountingRulesetItem"
        type: array
      LastModifiedByID:
        description: Last Modified By
        type: string
      LastModifiedDate:
        description: Last Modified Date
        type: string
      TenantID:
        description: Tenant that owns this object instance
        type: string
    type: object
  AccountingRulesetItem:
    properties:
      AccountingRuleCode:
        description: The code of the rule in this ruleset
        type: string
      ID:
        description: Taxnexus Record Id
        type: string
      TenantID:
        description: Tenant that owns this object instance
        type: string
    type: object
  AccountingRulesetRequest:
    description: An array of Accounting Ruleset objects
    properties:
      Data:
        items:
          $ref: "#/definitions/AccountingRuleset"
        type: array
    type: object
  AccountingRulesetResponse:
    description: An array of Accounting Ruleset objects
    properties:
      Data:
        items:
          $ref: "#/definitions/AccountingRuleset"
        type: array
      Meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  Coa:
    description: Chart of Accounts Report
    properties:
      AccountID:
        description: Taxnexus Account ID
        type: string
      CreatedByID:
        description: Created By User ID
        type: string
      CreatedDate:
        description: Created Date
        type: string
      Description:
        description: Description
        type: string
      EndDate:
        description: End Date
        type: string
      EndPeriodID:
        description: Ending Period Taxnexus ID
        type: string
      ID:
        description: Record Id
        type: string
      Items:
        items:
          $ref: "#/definitions/CoaItem"
        type: array
      LastModifiedByID:
        description: Last Modified By User ID
        type: string
      LastModifiedDate:
        description: Last Modified Date
        type: string
      StartDate:
        description: Start Date
        type: string
      StartPeriodID:
        description: Starting Period Taxnexus ID
        type: string
      Status:
        description: CoA Status
        type: string
    type: object
  CoaItem:
    properties:
      CoaID:
        description: Parent Chart of Accounts record D
        type: string
      CreatedByID:
        description: Created By User ID
        type: string
      CreatedDate:
        description: Created Date
        type: string
      Credits:
        description: The Credit Balance for this item
        format: double
        type: number
      Debits:
        description: The Debit Balance for this item
        format: double
        type: number
      GLAccountName:
        description: The General Ledger account name
        type: string
      ID:
        description: Record Id
        type: string
      LastModifiedByID:
        description: Last Modified By User ID
        type: string
      LastModifiedDate:
        description: Last Modified Date
        type: string
      PeriodName:
        description: The name of the Period for this COA Item
        type: string
      ProductCode:
        description: The Product Code value for this CoA Item
        type: string
      SalesRegulation:
        description: The Sales Regulation value for this CoA Item
        type: string
      TaxnexusCode:
        description: The Taxnexus Code value for this CoA Item
        type: string
    type: object
  CoaRequest:
    description: An array of Accounting Report objects
    properties:
      Data:
        items:
          $ref: "#/definitions/Coa"
        type: array
    type: object
  CoaResponse:
    description: An array of Accounting Report objects
    properties:
      Data:
        items:
          $ref: "#/definitions/Coa"
        type: array
      Meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  DeleteResponse:
    properties:
      Data:
        items:
          $ref: "#/definitions/Message"
        type: array
      Meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  Error:
    properties:
      Message:
        type: string
      code:
        format: int64
        type: integer
      fields:
        type: string
    type: object
  GlAccount:
    properties:
      AccountID:
        description: Taxnexus Account that owns ths GL account
        type: string
      AccountLevel:
        description: Account Level
        type: number
      AccountName:
        description: Account Name
        type: string
      AccountSign:
        description: Account Sign
        type: string
      AccountType:
        description: Account Type
        type: string
      Balances:
        description: The GL Balances associated with this GL account
        items:
          $ref: "#/definitions/GlBalance"
        type: array
      CreatedByID:
        description: Created By User ID
        type: string
      CreatedDate:
        description: Created Date
        type: string
      Description:
        description: Description
        type: string
      ID:
        description: Taxnexus Record Id Only; not used in POST
        type: string
      IsActive:
        description: Is Active?
        type: boolean
      IsBankAccount:
        description: Is Bank Account ?
        type: boolean
      IsSummary:
        description: Is Summary?
        type: boolean
      LastModifiedByID:
        description: Last Modified By User ID
        type: string
      LastModifiedDate:
        description: Last Modified Date
        type: string
      Name:
        description: Display value for GL Account
        type: string
      ParentFK:
        description: Parent Foreign Key
        type: string
      Ref:
        description: "Source System identifier for this record, if any"
        type: string
      Status:
        description: Status
        type: string
      TenantID:
        description: Tenant that owns this object instance
        type: string
      accountNumber:
        description: Account Number
        type: number
      parentGLAccountID:
        description: Parent GL Account ID
        type: string
    type: object
  GlAccountRequest:
    properties:
      Data:
        items:
          $ref: "#/definitions/GlAccount"
        type: array
    type: object
  GlAccountResponse:
    description: An array of GL Account Objects
    properties:
      Data:
        items:
          $ref: "#/definitions/GlAccount"
        type: array
      Meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  GlBalance:
    properties:
      AccountName:
        description: Account Name
        type: string
      Amount:
        description: Amount
        type: number
      CloseDate:
        description: Close Date
        type: string
      CreatedByID:
        description: Created By User ID
        type: string
      CreatedDate:
        description: Created Date
        type: string
      Credits:
        description: Credits
        type: number
      Debits:
        description: Debits
        type: number
      Description:
        description: Description
        type: string
      GLAccountDisplay:
        description: GL Account Display Value
        type: string
      GLAccountID:
        description: GL Account
        type: string
      ID:
        description: Taxnexus Record Id Only; not used in POST
        type: string
      LastModifiedByID:
        description: Last Modified By User ID
        type: string
      LastModifiedDate:
        description: Last Modified Date
        type: string
      PeriodID:
        description: Period ID
        type: string
      Ref:
        description: "Source System identifier for this record, if any"
        type: string
      RollupCredits:
        description: Rollup Credits
        type: number
      RollupDebits:
        description: Rollup Debits
        type: number
      Status:
        description: Status
        type: string
      TenantID:
        description: Tenant that owns this object instance
        type: string
    type: object
  GlBalanceRequest:
    properties:
      Data:
        items:
          $ref: "#/definitions/GlBalance"
        type: array
    type: object
  GlBalanceResponse:
    description: An array of GL Balance Objects
    properties:
      Data:
        items:
          $ref: "#/definitions/GlBalance"
        type: array
      Meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  InvalidError:
    allOf:
      - $ref: "#/definitions/Error"
      - properties:
          details:
            items:
              type: string
            type: array
        type: object
  JournalEntry:
    properties:
      AccountID:
        description: Account ID
        type: string
      Balanced:
        description: Balanced?
        type: boolean
      CreatedByID:
        description: Created By User ID
        type: string
      CreatedDate:
        description: Created Date
        type: string
      Credits:
        description: Credits
        type: number
      Debits:
        description: Debits
        type: number
      Description:
        description: Description
        type: string
      ID:
        description: Taxnexus Record Id
        type: string
      IngestID:
        description: Rating Ingest ID
        type: string
      Items:
        description:
          The Journal Items associated with this Journal Entry
        items:
          $ref: "#/definitions/JournalItem"
        type: array
      JournalDate:
        description: Journal Date
        type: string
      LastModifiedByID:
        description: Last Modified By User ID
        type: string
      LastModifiedDate:
        description: Last Modified Date
        type: string
      ParentFK:
        description: Parent Foreign Key
        type: string
      PeriodID:
        description:
          The ID of the period in which this Journal Entry occurs
        type: string
      Posted:
        description: Posted
        type: boolean
      Ref:
        description: "Source System identifier for this record, if any"
        type: string
      SalesRegulation:
        description: Sales Regulation
        type: string
      Status:
        description: Status
        type: string
      TenantID:
        description: Tenant that owns this object instance
        type: string
    type: object
  JournalEntryRequest:
    description: An array of Journal Entry objects with Journal Items
    properties:
      Data:
        items:
          $ref: "#/definitions/JournalEntry"
        type: array
    type: object
  JournalEntryResponse:
    description: An array of Journal Entry objects with Journal Items
    properties:
      Data:
        items:
          $ref: "#/definitions/JournalEntry"
        type: array
      Meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  JournalItem:
    properties:
      CreatedByID:
        description: Created By User ID
        type: string
      CreatedDate:
        description: Created Date
        type: string
      Credit:
        description: Credit value for this Journal Item
        type: number
      Debit:
        description: Debit value for this Journal Item
        type: number
      GLAccountDisplay:
        description: GL Account Display Value
        type: string
      GLAccountID:
        description: GL Account ID
        type: string
      GLBalanceID:
        description: GL Balance ID
        type: string
      InvoiceItemID:
        description: Invoice Item ID
        type: string
      JournalEntryID:
        description: Journal Entry ID
        type: string
      LastModifiedByID:
        description: Last Modified By User ID
        type: string
      LastModifiedDate:
        description: Last Modified Date
        type: string
      POItemID:
        description: PO Item ID
        type: string
      ProducCode:
        description: Product Code
        type: string
      ProductID:
        description: Product ID
        type: string
      ReferenceType:
        description: Reference Type
        type: string
      SalesRegulation:
        description: The Sales Regulation value for this CoA Item
        type: string
      TaxTransactionID:
        description: Tax Transaction ID
        type: string
      TaxnexusCodeDisplay:
        description: Taxnexus Code Display Value
        type: string
      TaxnexusCodeID:
        description: Taxnexus Code ID
        type: string
      TenantID:
        description: Tenant that owns this object instance
        type: string
      id:
        description: Taxnexus Record Id Only; not used in POST
        type: string
    type: object
  JournalItemResponse:
    description: "An array of Journal Item objects "
    properties:
      Data:
        items:
          $ref: "#/definitions/JournalItem"
        type: array
      Meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  JournalItemSummary:
    properties:
      Credits:
        format: double
        type: number
      Debits:
        format: double
        type: number
      GLAccountName:
        type: string
      GLBalanceID:
        type: string
      MonthNumber:
        format: int64
        type: number
      PeriodName:
        type: string
      QuarterNumber:
        format: int64
        type: number
      YearNumber:
        format: int64
        type: number
    type: object
  JournalItemSummaryResponse:
    description: "An array of Journal Item Summary objects "
    properties:
      Data:
        items:
          $ref: "#/definitions/JournalItemSummary"
        type: array
      Meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  Message:
    properties:
      Message:
        type: string
      Ref:
        type: string
      Status:
        format: int64
        type: integer
    type: object
  Pagination:
    properties:
      Limit:
        format: int64
        type: integer
      POffset:
        format: int64
        type: integer
      PageSize:
        format: int64
        type: integer
      SetSize:
        format: int64
        type: integer
    type: object
  Period:
    properties:
      AccountID:
        description: Account that owns this Period
        type: string
      CompanyID:
        description: Company
        type: string
      CreatedByID:
        description: Created By User ID
        type: string
      CreatedDate:
        description: Created Date
        type: string
      Days:
        description: Days
        format: int64
        type: number
      EndDate:
        description: End Date
        type: string
      ID:
        description: Taxnexus Record Id
        type: string
      LastModifiedByID:
        description: Last Modified By User ID
        type: string
      LastModifiedDate:
        description: Last Modified Date
        type: string
      Month:
        description: Month number
        format: int64
        type: number
      Name:
        description: Period Name
        type: string
      Quarter:
        description: Quarter Number
        format: int64
        type: number
      Ref:
        description: "Source System identifier for this record, if any"
        type: string
      Semiannual:
        description: The Semiannual period in numeric format
        format: int64
        type: number
      StartDate:
        description: Start Date
        type: string
      Status:
        description: Status
        type: string
      TenantID:
        description: Tenant that owns this object instance
        type: string
      Year:
        description: Year number
        format: int64
        type: number
    type: object
  PeriodRequest:
    properties:
      Data:
        items:
          $ref: "#/definitions/Period"
        type: array
    type: object
  PeriodResponse:
    description: An array of period objects
    properties:
      Data:
        items:
          $ref: "#/definitions/Period"
        type: array
      Meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  PutResponse:
    properties:
      Data:
        items:
          $ref: "#/definitions/Message"
        type: array
      Meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  RequestMeta:
    properties:
      TaxnexusAccount:
        description: Taxnexus Account Number of the Reseller or OEM
        type: string
    required:
      - TaxnexusAccount
    type: object
  ResponseMeta:
    properties:
      Contact:
        description: Microservice Contact Info
        type: string
      Copyright:
        description: Copyright Info
        type: string
      License:
        description: License Information and Restrictions
        type: string
      OperationID:
        description: Operation ID
        type: string
      Pagination:
        $ref: "#/definitions/Pagination"
      RequestIP:
        description: Request IP Address
        type: string
      RequestType:
        description: Request Type
        type: string
      RequestURL:
        description: Request URL
        type: string
      ServerInfo:
        description: Data Server Info
        type: string
      ServerResponseTime:
        description: Data Server Response Time (ms)
        type: string
      ServerTimestamp:
        description: Backend Server Timestamp
        type: string
      TaxnexusAccount:
        description:
          Taxnexus Account Number used for recording transactions
        type: string
    type: object
