swagger: "2.0"
info:
  version: 1.2.7
  title: render
  description: Print Rendering Microservice
  termsOfService: http://taxnexus.net/terms/
  contact:
    email: "noc@taxnexus.net"
  license:
    name: "Proprietary - Copyright (c) 2018-2021 by Taxnexus, Inc."
  x-apisguru-categories:
    - "compliance"
    - "cannabis"
    - "tax"
  x-origin:
    - format: "swagger"
      url: "https://docs.taxnexus.net/taxnexus-swagger.json"
      version: "2.0"
  x-providerName: "taxnexus.net"
securityDefinitions:
  ApiKeyAuth:
    type: "apiKey"
    in: "header"
    name: "X-API-Key"
schemes:
  - "http"
basePath: "/v1"
host: "render.fabric.tnxs.net:8080"
consumes:
  - "application/json"
produces:
  - "application/json"
parameters:
  X-API-Key:
    name: X-API-Key
    in: "header"
    required: true
    type: string
  accountIdQuery:
    description:
      Taxnexus Id of the Account to be used a record retrieval
    in: query
    name: accountId
    required: false
    type: string
  accountIdQueryRequired:
    description:
      Taxnexus Id of the Account to be used a record retrieval
    in: query
    name: accountId
    required: true
    type: string
  countyIdRequiredQuery:
    description: The County ID
    in: query
    name: countyId
    required: true
    type: string
  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
  dateToQuery:
    description: The Ending Date for an object retrieval
    in: query
    name: dateTo
    required: false
    type: string
  invoiceIdQueryRequired:
    description: Taxnexus Id of the Invoice to be retrieved
    in: query
    name: invoiceId
    required: true
    type: string
  ingestIdQueryRequired:
    description: Taxnexus Id of the Invoice to be retrieved
    in: query
    name: ingestId
    required: true
    type: string
responses:
  AccessForbidden:
    description: "Access forbidden, account lacks access"
    headers:
      Access-Control-Allow-Origin:
        type: string
    schema:
      $ref: "#/definitions/Error"
  Conflict:
    description: Conflict
    headers:
      Access-Control-Allow-Origin:
        type: string
    schema:
      $ref: "#/definitions/Error"
  DocumentResponse:
    headers:
      Access-Control-Allow-Origin:
        type: string
    description: Rendered documents response
    schema:
      $ref: "#/definitions/DocumentResponse"
  InvalidDataError:
    headers:
      Access-Control-Allow-Origin:
        type: string
    description: Invalid data was sent
    schema:
      $ref: "#/definitions/InvalidError"
  NotFound:
    headers:
      Access-Control-Allow-Origin:
        type: string
    description: Resource was not found
    schema:
      $ref: "#/definitions/Error"
  ServerError:
    headers:
      Access-Control-Allow-Origin:
        type: string
    description: Server Internal Error
    schema:
      $ref: "#/definitions/Error"
  Unauthorized:
    headers:
      Access-Control-Allow-Origin:
        type: string
    description: "Access unauthorized, invalid API-KEY was used"
    schema:
      $ref: "#/definitions/Error"
  UnprocessableEntity:
    headers:
      Access-Control-Allow-Origin:
        type: string
    description: "Unprocessable Entity, likely a bad parameter"
    schema:
      $ref: "#/definitions/Error"
  CORSResponse:
    description: CORS OPTIONS response
    headers:
      Access-Control-Allow-Origin:
        type: string
      Access-Control-Allow-Headers:
        type: string
      Access-Control-Allow-Methods:
        type: string
      Access-Control-Expose-Headers:
        type: string
      Access-Control-Max-Age:
        type: string
      Access-Control-Allow-Credentials:
        type: string
      Cache-Control:
        type: string
paths:
  /accounts:
    get:
      description: Generate PDF from an Account ID
      operationId: getRenderAccount
      parameters:
        - $ref: "#/parameters/accountIdQueryRequired"
      responses:
        "200":
          $ref: "#/responses/DocumentResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Generate PDF from an Account ID
      tags:
        - Account
    options:
      description: CORS support
      operationId: accountOptions
      responses:
        "200":
          $ref: "#/responses/CORSResponse"
      tags:
        - cors
  /counties:
    get:
      description: Generate a County Report PDF
      operationId: getRenderCounty
      parameters:
        - $ref: "#/parameters/countyIdRequiredQuery"
      responses:
        "200":
          $ref: "#/responses/DocumentResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Generate PDF from a County ID
      tags:
        - County
    options:
      description: CORS support
      operationId: countyOptions
      responses:
        "200":
          $ref: "#/responses/CORSResponse"
      tags:
        - cors
  /ingests:
    get:
      description: Generate PDF from a Ingest ID
      operationId: getRenderIngests
      parameters:
        - $ref: "#/parameters/ingestIdQueryRequired"
      responses:
        "200":
          $ref: "#/responses/DocumentResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Generate PDF from an Ingest ID
      tags:
        - Ingest
    options:
      description: CORS support
      operationId: ingestOptions
      responses:
        "200":
          $ref: "#/responses/CORSResponse"
      tags:
        - cors
  /invoices:
    get:
      description: Generate PDF from an Invoice ID
      operationId: getRenderInvoice
      parameters:
        - $ref: "#/parameters/invoiceIdQueryRequired"
      responses:
        "200":
          $ref: "#/responses/DocumentResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Generate PDF from an Invoice ID
      tags:
        - Invoice
    options:
      description: CORS support
      operationId: invoiceOptions
      responses:
        "200":
          $ref: "#/responses/CORSResponse"
      tags:
        - cors
  /reports:
    get:
      description:
        Return a month-by-month summary financial report for an Account
      operationId: getRenderReports
      parameters:
        - $ref: "#/parameters/accountIdQueryRequired"
        - $ref: "#/parameters/yearQuery"
        - $ref: "#/parameters/quarterQuery"
        - $ref: "#/parameters/monthQuery"
      responses:
        "200":
          $ref: "#/responses/DocumentResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Financial Summary by Account
      tags:
        - Report
    options:
      description: CORS support
      operationId: reportOptions
      responses:
        "200":
          $ref: "#/responses/CORSResponse"
      tags:
        - cors
  /taxes:
    get:
      description: Return a summary tax report for an Account
      operationId: getRenderTaxes
      parameters:
        - $ref: "#/parameters/accountIdQueryRequired"
        - $ref: "#/parameters/yearQuery"
        - $ref: "#/parameters/quarterQuery"
        - $ref: "#/parameters/monthQuery"
      responses:
        "200":
          $ref: "#/responses/DocumentResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "422":
          $ref: "#/responses/UnprocessableEntity"
        "500":
          $ref: "#/responses/ServerError"
      security:
        - ApiKeyAuth: []
      summary: Tax Summary by Account
      tags:
        - Tax
    options:
      description: CORS support
      operationId: taxOptions
      responses:
        "200":
          $ref: "#/responses/CORSResponse"
      tags:
        - cors
definitions:
  Document:
    properties:
      Filename:
        type: string
      ID:
        type: string
      ParentID:
        type: string
      SagaType:
        type: string
      Title:
        type: string
      URI:
        type: string
    type: object
  DocumentResponse:
    description: An array of reendered documents
    properties:
      Data:
        items:
          $ref: "#/definitions/Document"
        type: array
      Meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  Error:
    properties:
      Code:
        format: int64
        type: integer
      Fields:
        type: string
      Message:
        type: string
    type: object
  InvalidError:
    allOf:
      - $ref: "#/definitions/Error"
      - properties:
          details:
            items:
              type: string
            type: array
        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
  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
