Tidy it up

v0.0.1
Vernon Keenan 2021-01-08 09:19:58 -08:00
parent 6b107b7380
commit 7ba47f581e
11 changed files with 25762 additions and 69 deletions

View File

@ -1,160 +1,108 @@
TAXNEXUS_VERSION ?= 1.2.7 .PHONY: swagger
TAXNEXUS_REPO_NAME = rules
TAXNEXUS_BUILD_ENV ?= dev
TEST_IP = 10.8.0.205
TAXNEXUS_REGISTRY_PUB = docker.io
TAXNEXUS_REGISTRY_PRIV = hub.tnxs.net
.PHONY: build run upload swagger docs apex mysql
run:
docker run \
-v /etc/taxnexus:/etc/taxnexus \
--network=fabric-net \
--log-driver=gelf --log-opt gelf-address=udp://packrat.noc.tnxs.net:12201 \
--ip=$(TEST_IP) \
--publish $(TEST_PORT):8080/tcp \
taxnexus/$(TAXNEXUS_REPO_NAME)_$(TAXNEXUS_BUILD_ENV):latest
upload:
# docker push $(TAXNEXUS_REGISTRY_PUB)/taxnexus/$(TAXNEXUS_REPO_NAME)_$(TAXNEXUS_BUILD_ENV):$(TAXNEXUS_VERSION)
# docker push $(TAXNEXUS_REGISTRY_PUB)/taxnexus/$(TAXNEXUS_REPO_NAME)_$(TAXNEXUS_BUILD_ENV):latest
docker push $(TAXNEXUS_REGISTRY_PRIV)/taxnexus/$(TAXNEXUS_REPO_NAME)/$(TAXNEXUS_REPO_NAME)_$(TAXNEXUS_BUILD_ENV):$(TAXNEXUS_VERSION)
docker push $(TAXNEXUS_REGISTRY_PRIV)/taxnexus/$(TAXNEXUS_REPO_NAME)/$(TAXNEXUS_REPO_NAME)_$(TAXNEXUS_BUILD_ENV):latest
swagger: swagger:
# #
# generate auth # generate auth
# #
rm -rf ./api rm -rf ./api
mkdir -p api/auth mkdir -p api/v0.0.1/auth
swagger generate client \ swagger generate client \
--log-output=./swagger/logs/generate-auth-client.log \ --log-output=./swagger/logs/generate-auth-client.log \
--copyright-file=./build/COPYRIGHT \ --copyright-file=./build/COPYRIGHT \
--name=auth \ --name=auth \
--spec=./swagger/auth-taxnexus.yaml \ --spec=./swagger/auth-taxnexus.yaml \
--target=./api/auth \ --target=./api/v0.0.1/auth \
--client-package=auth-client \ --client-package=auth-client \
--model-package=auth-models \ --model-package=auth-models \
--principal=app.User --principal=app.User
# #
# generate crm # generate crm
# #
mkdir api/crm mkdir api/v0.0.1/crm
swagger generate client \ swagger generate client \
--log-output=./swagger/logs/generate-crm-client.log \ --log-output=./swagger/logs/generate-crm-client.log \
--copyright-file=./build/COPYRIGHT \ --copyright-file=./build/COPYRIGHT \
--name=crm \ --name=crm \
--spec=./swagger/crm-taxnexus.yaml \ --spec=./swagger/crm-taxnexus.yaml \
--target=./api/crm \ --target=./api/v0.0.1/crm \
--client-package=crm-client \ --client-package=crm-client \
--model-package=crm-models \ --model-package=crm-models \
--principal=app.User --principal=app.User
# #
# generate devops # generate devops
# #
mkdir api/devops mkdir api/v0.0.1/devops
swagger generate client \ swagger generate client \
--log-output=./swagger/logs/generate-devops-client.log \ --log-output=./swagger/logs/generate-devops-client.log \
--copyright-file=./build/COPYRIGHT \ --copyright-file=./build/COPYRIGHT \
--name=devops \ --name=devops \
--spec=./swagger/devops-taxnexus.yaml \ --spec=./swagger/devops-taxnexus.yaml \
--target=./api/devops \ --target=./api/v0.0.1/devops \
--client-package=devops-client \ --client-package=devops-client \
--model-package=devops-models \ --model-package=devops-models \
--principal=app.User --principal=app.User
# #
# generate geo # generate geo
# #
mkdir api/geo mkdir api/v0.0.1/geo
swagger generate client \ swagger generate client \
--log-output=./swagger/logs/generate-geo-client.log \ --log-output=./swagger/logs/generate-geo-client.log \
--copyright-file=./build/COPYRIGHT \ --copyright-file=./build/COPYRIGHT \
--name=geo \ --name=geo \
--spec=./swagger/geo-taxnexus.yaml \ --spec=./swagger/geo-taxnexus.yaml \
--target=./api/geo \ --target=./api/v0.0.1/geo \
--client-package=geo-client \ --client-package=geo-client \
--model-package=geo-models \ --model-package=geo-models \
--principal=app.User --principal=app.User
# #
# generate ledger # generate ledger
# #
mkdir api/ledger mkdir api/v0.0.1/ledger
swagger generate client \ swagger generate client \
--log-output=./swagger/logs/generate-ledger-client.log \ --log-output=./swagger/logs/generate-ledger-client.log \
--copyright-file=./build/COPYRIGHT \ --copyright-file=./build/COPYRIGHT \
--name=ledger \ --name=ledger \
--spec=./swagger/ledger-taxnexus.yaml \ --spec=./swagger/ledger-taxnexus.yaml \
--target=./api/ledger \ --target=./api/v0.0.1/ledger \
--client-package=ledger-client \ --client-package=ledger-client \
--model-package=ledger-models \ --model-package=ledger-models \
--principal=app.User --principal=app.User
# #
# generate ops # generate ops
# #
mkdir api/ops mkdir api/v0.0.1/ops
swagger generate client \ swagger generate client \
--log-output=./swagger/logs/generate-ops-client.log \ --log-output=./swagger/logs/generate-ops-client.log \
--copyright-file=./build/COPYRIGHT \ --copyright-file=./build/COPYRIGHT \
--name=ops \ --name=ops \
--spec=./swagger/ops-taxnexus.yaml \ --spec=./swagger/ops-taxnexus.yaml \
--target=./api/ops \ --target=./api/v0.0.1/ops \
--client-package=ops-client \ --client-package=ops-client \
--model-package=ops-models \ --model-package=ops-models \
--principal=app.User --principal=app.User
# #
# generate regs # generate regs
# #
mkdir api/regs mkdir api/v0.0.1/regs
swagger generate client \ swagger generate client \
--log-output=./swagger/logs/generate-regs-client.log \ --log-output=./swagger/logs/generate-regs-client.log \
--copyright-file=./build/COPYRIGHT \ --copyright-file=./build/COPYRIGHT \
--name=regs \ --name=regs \
--spec=./swagger/regs-taxnexus.yaml \ --spec=./swagger/regs-taxnexus.yaml \
--target=./api/regs \ --target=./api/v0.0.1/regs \
--client-package=regs-client \ --client-package=regs-client \
--model-package=regs-models \ --model-package=regs-models \
--principal=app.User --principal=app.User
# #
# generate workflow # generate workflow
# #
mkdir api/workflow mkdir api/v0.0.1/workflow
swagger generate client \ swagger generate client \
--log-output=./swagger/logs/generate-workflow-client.log \ --log-output=./swagger/logs/generate-workflow-client.log \
--copyright-file=./build/COPYRIGHT \ --copyright-file=./build/COPYRIGHT \
--name=workflow \ --name=workflow \
--spec=./swagger/workflow-taxnexus.yaml \ --spec=./swagger/workflow-taxnexus.yaml \
--target=./api/workflow \ --target=./api/v0.0.1/workflow \
--client-package=workflow-client \ --client-package=workflow-client \
--model-package=workflow-models \ --model-package=workflow-models \
--principal=app.User --principal=app.User
avro:
# generate avro stubs
#
rm -rf swagger/avro
mkdir swagger/avro
openapi-generator generate \
--generator-name avro-schema \
--input-spec ./swagger/rules-taxnexus.yaml \
--output ./swagger/avro \
build:
# docker build
go mod tidy
docker build \
--tag $(TAXNEXUS_REGISTRY_PUB)/taxnexus/$(TAXNEXUS_REPO_NAME)_$(TAXNEXUS_BUILD_ENV):$(TAXNEXUS_VERSION) \
--tag $(TAXNEXUS_REGISTRY_PUB)/taxnexus/$(TAXNEXUS_REPO_NAME)_$(TAXNEXUS_BUILD_ENV):latest \
--tag $(TAXNEXUS_REGISTRY_PRIV)/taxnexus/$(TAXNEXUS_REPO_NAME)/$(TAXNEXUS_REPO_NAME)_$(TAXNEXUS_BUILD_ENV):$(TAXNEXUS_VERSION) \
--tag $(TAXNEXUS_REGISTRY_PRIV)/taxnexus/$(TAXNEXUS_REPO_NAME)/$(TAXNEXUS_REPO_NAME)_$(TAXNEXUS_BUILD_ENV):latest \
--file ./build/Dockerfile \
.
mysql:
rm -rf swagger/mysql
mkdir swagger/mysql
docker run --rm \
-v ${PWD}:/local openapitools/openapi-generator-cli generate \
-i /local/swagger/rules-taxnexus.yaml \
-g mysql-schema \
-o /local/swagger/mysql

494
swagger/auth0.yaml Normal file
View File

@ -0,0 +1,494 @@
swagger: "2.0"
info:
version: "1.2.7"
title: "auth0"
description: "Auth0 Swagger Definition"
termsOfService: "http://taxnexus.net/terms/"
contact:
email: "noc@taxnexus.net"
license:
name: "Proprietary - Copyright (c) 2018-2020 by Taxnexus, Inc."
schemes:
- "https"
host: "taxnexus.auth0.com"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
CredentialsRequest:
name: CredentialsRequest
in: body
required: true
description: Get Authentation Token
schema:
$ref: "#/definitions/CredentialsRequest"
email:
name: email
in: query
type: string
required: true
authHeader:
name: Authorization
in: header
type: string
required: true
UserRequest:
description: An array of User records
in: body
name: UserRequest
required: true
schema:
$ref: "#/definitions/UserRequest"
RoleUsersRequest:
description: An array of User IDs to add to a Role
in: body
name: RoleUsersRequest
required: true
schema:
$ref: "#/definitions/RoleUsersRequest"
UserRolesRequest:
description: An array of User IDs to add to a Role
in: body
name: UserRolesRequest
required: true
schema:
$ref: "#/definitions/UserRolesRequest"
roleId:
name: roleId
description: An Auth0 Role ID
type: string
in: path
required: true
userId:
name: userId
description: An Auth0 User ID
type: string
in: path
required: true
responses:
AccessForbidden:
description: "Access forbidden, account lacks access"
schema:
$ref: "#/definitions/Error"
NotFound:
description: Resource was not found
schema:
$ref: "#/definitions/Error"
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"
UserResponse:
description: Taxnexus Response with User objects
schema:
items:
$ref: "#/definitions/User"
type: array
RoleResponse:
description: Taxnexus Response with User objects
schema:
$ref: "#/definitions/RoleResponse"
CredentialsResponse:
description: Credentials response from Auth0
schema:
$ref: "#/definitions/CredentialsResponse"
paths:
/oauth/token:
post:
summary: post to /oauth/token
operationId: postCredentials
description: Get credential token
parameters:
- $ref: "#/parameters/CredentialsRequest"
tags:
- Auth
responses:
"200":
$ref: "#/responses/CredentialsResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
/api/v2/roles:
get:
summary: Get Roles from Auth0
operationId: getRoles
description: Get Roles from Auth0
tags:
- Role
parameters:
- $ref: "#/parameters/authHeader"
responses:
"200":
$ref: "#/responses/UserResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
/api/v2/roles/{roleId}/users:
post:
summary: Add users to role
operationId: postRoleUsers
description: Add users to role
parameters:
- $ref: "#/parameters/authHeader"
- $ref: "#/parameters/RoleUsersRequest"
- $ref: "#/parameters/roleId"
tags:
- Role
responses:
"200":
description: Role users successfully updated
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"500":
$ref: "#/responses/ServerError"
/api/v2/users/{userId}/roles:
delete:
parameters:
- $ref: "#/parameters/authHeader"
- $ref: "#/parameters/userId"
- $ref: "#/parameters/UserRolesRequest"
tags:
- User
responses:
"204":
description: User roles successfully removed
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"500":
$ref: "#/responses/ServerError"
get:
summary: Get a User's Roles
description: Get a User's Roles
operationId: getUserRoles
parameters:
- $ref: "#/parameters/authHeader"
- $ref: "#/parameters/userId"
tags:
- User
responses:
"200":
$ref: "#/responses/RoleResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"500":
$ref: "#/responses/ServerError"
/api/v2/users:
get:
summary: Get all users from Auth0
operationId: getUsers
description: Get all users from Auth0
parameters:
- $ref: "#/parameters/authHeader"
tags:
- User
responses:
"200":
$ref: "#/responses/UserResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"500":
$ref: "#/responses/ServerError"
/api/v2/users-by-email:
get:
summary: Get a single user from Auth0 by Email Address
operationId: getUserByEmail
description: Get a single user from Auth0 by Email Address
parameters:
- $ref: "#/parameters/authHeader"
- $ref: "#/parameters/email"
tags:
- User
responses:
"200":
$ref: "#/responses/UserResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"500":
$ref: "#/responses/ServerError"
post:
summary: Create new Auth0 user
operationId: postUsers
description: create new Auth0 user
parameters:
- $ref: "#/parameters/authHeader"
- $ref: "#/parameters/UserRequest"
tags:
- User
responses:
"201":
description: New user created
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"409":
description: User already exists
"500":
$ref: "#/responses/ServerError"
definitions:
Error:
properties:
code:
format: int32
type: integer
fields:
type: string
message:
type: string
type: object
Role:
properties:
id:
type: "string"
example: "rol_oWVoMn2Zx2qDSGUL"
name:
type: "string"
example: "Developer"
description:
type: "string"
example: "Taxnexus API Developer"
type: "object"
RoleResponse:
type: object
properties:
roles:
type: array
items:
$ref: "#/definitions/Role"
RoleUsersRequest:
properties:
users:
type: array
items:
type: string
UserRolesRequest:
properties:
roles:
type: array
items:
type: string
CredentialsRequest:
type: object
properties:
client_id:
type: string
client_secret:
type: string
audience:
type: string
grant_type:
type: string
CredentialsResponse:
type: object
properties:
access_token:
type: string
scope:
type: string
expires_in:
type: number
format: int64
token_type:
format: string
NewUser:
type: object
properties:
email:
type: "string"
example: "john.doe@gmail.com"
phone_number:
type: "string"
example: "+199999999999999"
blocked:
type: "boolean"
example: false
email_verified:
type: "boolean"
example: false
phone_verified:
type: "boolean"
example: false
given_name:
type: "string"
example: "John"
family_name:
type: "string"
example: "Doe"
name:
type: "string"
example: "John Doe"
nickname:
type: "string"
example: "Johnny"
picture:
type: "string"
example: "https://secure.gravatar.com/avatar/15626c5e0c749cb912f9d1ad48dba440?s=480&r=pg&d=https%3A%2F%2Fssl.gstatic.com%2Fs2%2Fprofiles%2Fimages%2Fsilhouette80.png"
user_id:
type: "string"
example: "abc"
connection:
type: "string"
example: "Initial-Connection"
password:
type: "string"
example: "secret"
verify_email:
type: "boolean"
example: false
username:
type: "string"
example: "johndoe"
User:
properties:
email:
type: "string"
example: "vern@taxnexus.net"
email_verified:
type: "boolean"
example: true
user_id:
type: "string"
example: "auth0|5b180537157859716f2c9df5"
picture:
type: "string"
example: "https://s.gravatar.com/avatar/a08710b8d49416c729a0da8a9c34cdb0?s=480&r=pg&d=https%3A%2F%2Fcdn.auth0.com%2Favatars%2Fve.png"
nickname:
type: "string"
example: "vern"
identities:
type: "array"
items:
type: "object"
properties:
connection:
type: "string"
example: "Username-Password-Authentication"
provider:
type: "string"
example: "auth0"
user_id:
type: "string"
example: "5b180537157859716f2c9df5"
isSocial:
type: "boolean"
example: false
updated_at:
type: "string"
example: "2020-09-22T19:19:02.706Z"
created_at:
type: "string"
example: "2018-06-06T16:00:55.930Z"
name:
type: "string"
example: "Vernon Keenan"
last_password_reset:
type: "string"
example: "2020-09-21T00:11:47.397Z"
multifactor_last_modified:
type: "string"
example: "2020-09-21T00:30:34.081Z"
family_name:
type: "string"
example: "Keenan"
given_name:
type: "string"
example: "Vernon"
user_metadata:
properties:
taxnexus_email:
type: "string"
example: "vern@taxnexus.net"
taxnexus_firstname:
type: "string"
example: "Vernon"
taxnexus_fullname:
type: "string"
example: "Vernon Keenan"
taxnexus_lastname:
type: "string"
example: "Keenan"
taxnexus_phone:
type: "string"
example: "+15106791900"
type: "object"
app_metadata:
properties:
taxnexus_account_id:
type: "string"
example: "7f661ca6-ae4a-486f-9c3c-cd292685a46d"
taxnexus_contact_id:
type: "string"
example: "9f79dca8-e875-4e2b-a5ad-001a3d32e83d"
taxnexus_user_id:
type: "string"
example: "f04da03d-70ad-46df-a46c-a676388aadd7"
roles:
type: "array"
items:
type: "string"
example:
- "login"
type: "object"
last_ip:
type: "string"
example: "67.188.106.161"
last_login:
type: "string"
example: "2020-09-22T19:19:02.706Z"
logins_count:
type: "number"
example: 178
format: int64
UserRequest:
description: An array Auth0 new user objects
properties:
users:
items:
$ref: "#/definitions/NewUser"
type: array
type: object

8798
swagger/blaze-taxnexus.yaml Normal file

File diff suppressed because it is too large Load Diff

1856
swagger/board-taxnexus.yaml Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,323 @@
swagger: "2.0"
info:
version: 1.2.7
title: "gov-gw"
description: "Goverment Services Gateway"
termsOfService: "http://taxnexus.net/terms/"
contact:
email: "noc@taxnexus.net"
license:
name: "Proprietary - Copyright (c) 2018-2020 by Taxnexus, Inc."
securityDefinitions:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
schemes:
- "http"
basePath: "/v1"
host: "localhost"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
addressQuery:
name: address
in: query
description: Postal Address URL encoded; partial addresses allowed
required: false
type: string
countryQuery:
name: country
in: query
description: The Country abbreviation (2 char)
required: false
type: string
limitQuery:
description: How many objects to return at one time
in: query
name: limit
type: number
format: int32
required: false
offsetQuery:
description: How many objects to skip? (default 0)
in: query
name: offset
type: number
format: int32
required: false
placeQuery:
name: place
in: query
description: The City name (must be accompanied by State)
required: false
type: string
stateQuery:
name: state
in: query
description: The State or Province abbreviation (2 char)
required: false
type: string
responses:
AccessForbidden:
description: "Access forbidden, account lacks access"
schema:
$ref: "#/definitions/Error"
Conflict:
description: Conflict
schema:
$ref: "#/definitions/Error"
InvalidDataError:
description: Invalid data was sent
schema:
$ref: "#/definitions/InvalidError"
NotFound:
description: Resource was not found
schema:
$ref: "#/definitions/Error"
ServerError:
description: Server Internal Error
schema:
$ref: "#/definitions/Error"
CoordinateResponse:
description: Taxnexus Response
schema:
$ref: "#/definitions/CoordinateResponse"
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:
/coordinates:
get:
security:
- ApiKeyAuth: []
summary: Get current tax rates for a coordinate
operationId: getCoordinates
description:
Returns full tax information for a specific point on the map
(tax situs). Uses existing Taxnexus Situs for lookup
information.
tags:
- Tax Rates
parameters:
- $ref: "#/parameters/limitQuery"
- $ref: "#/parameters/offsetQuery"
- $ref: "#/parameters/addressQuery"
- $ref: "#/parameters/placeQuery"
- $ref: "#/parameters/stateQuery"
- $ref: "#/parameters/countryQuery"
responses:
"200":
$ref: "#/responses/CoordinateResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
definitions:
Coordinate:
properties:
country:
description: Geocoder Country
type: string
countryid:
description: Taxnexus Country ID
type: string
county:
description: Geocoder County
type: string
countyid:
description: Taxnexus County ID
type: string
focus:
description: Situs Focus for tax determination
type: string
formattedaddress:
description: Formatted Address from Geocoder
type: string
id:
description: Taxnexus Coordinate Record Id
type: string
isdistrict:
description: Situs Incorporated District?
type: boolean
latitude:
description: Latitude of coordinate
type: number
longitude:
description: Longitude of coordinate
type: number
name:
description: Coordinate Name from Search Text
type: string
neighborhood:
description: Geocoder Neighborhood
type: string
place:
description: Geocoder Place
type: string
placegeocode:
description:
The Taxnexus Geocode for this rated location (place or county)
type: string
placeid:
description: Taxnexus Place ID
type: string
postalcode:
description: Geocoder Postal Code
type: string
ref:
description: External System reference ID
type: string
state:
description: Geocoder State/Province name
type: string
stateid:
description: Taxnexus State ID
type: string
status:
description: The status of the coordinate in Taxnexus
type: string
street:
description: Geocoder Street Name (only)
type: string
streetnumber:
description: Geocoder Streen number
type: string
taxtypes:
items:
$ref: "#/definitions/TaxTypeID"
type: array
uuid:
description: Unique identifier assigned at creation
type: string
type: object
CoordinateRequest:
description: An array of Coordinate Request Items
properties:
data:
items:
$ref: "#/definitions/CoordinateRequestItem"
type: array
meta:
$ref: "#/definitions/RequestMeta"
required:
- meta
- data
type: object
CoordinateRequestItem:
description: A single Coordinate Request item
properties:
address:
description: The address to be translated
type: string
ref:
description: Source record reference
type: string
type: object
CoordinateResponse:
description: An array of Coordinate objects
properties:
data:
items:
$ref: "#/definitions/Coordinate"
type: array
meta:
$ref: "#/definitions/ResponseMeta"
type: object
Error:
properties:
code:
format: int32
type: integer
message:
type: string
type: object
InvalidError:
allOf:
- $ref: "#/definitions/Error"
- properties:
details:
items:
type: string
type: array
type: object
Pagination:
properties:
limit:
format: int32
type: integer
pagesize:
format: int32
type: integer
poffset:
format: int32
type: integer
setsize:
format: int32
type: integer
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
TaxTypeID:
properties:
taxtypeid:
type: string

File diff suppressed because it is too large Load Diff

92
swagger/pdf-taxnexus.yaml Normal file
View File

@ -0,0 +1,92 @@
swagger: "2.0"
info:
version: 1.2.7
title: "pdf"
description: "PDF Delivery"
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: "pdf.fabric.tnxs.net:8080"
consumes:
- "application/json"
produces:
- "application/json"
responses:
AccessForbidden:
description: "Access forbidden, account lacks access"
schema:
$ref: "#/definitions/Error"
NotFound:
description: Resource was not found
schema:
$ref: "#/definitions/Error"
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:
/pdfs/{pdfId}:
get:
description: Return a PDF from the datastore
operationId: getPDF
parameters:
- name: pdfId
in: path
description: Taxnexus Record ID
required: true
type: string
produces:
- application/pdf
responses:
"200":
headers:
Content-Disposition:
type: string
description: Specifies download file name
Content-Length:
type: number
format: int32
description: The size of the file
Content-Location:
type: string
description: The URL of the document
description: A PDF file
schema:
type: file
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
summary: Send a PDF in response to an identifier
tags:
- Pdf
definitions:
Error:
properties:
Code:
format: int64
type: integer
Fields:
type: string
Message:
type: string
type: object

766
swagger/plex-taxnexus.yaml Normal file
View File

@ -0,0 +1,766 @@
swagger: "2.0"
info:
version: 1.2.7
title: "plex"
description: "System Operations Microservice"
termsOfService: "http://taxnexus.net/terms/"
contact:
email: "noc@taxnexus.net"
license:
name: "Proprietary - Copyright (c) 2018-2020 by Taxnexus, Inc."
securityDefinitions:
ApiKeyAuth:
type: "apiKey"
in: "header"
name: "X-API-Key"
security:
- ApiKeyAuth: []
schemes:
- "http"
basePath: "/v1"
host: "plex.fabric.tnxs.net:8080"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
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
monthQuery:
description: "The Month Number (1,2, ..., 12) of the report"
format: int64
in: query
name: month
required: false
type: number
quarterQuery:
description: "The Quarter Number (1,2,3,4) of the report"
format: int64
in: query
name: quarter
required: false
type: number
semiannualQuery:
description: The Semiannual Number (1,2) of the report
format: int64
in: query
name: semiannual
required: false
type: number
yearQuery:
description: The year of the report
format: int64
in: query
name: year
required: false
type: number
responses:
AccessForbidden:
description: "Access forbidden, account lacks access"
schema:
$ref: "#/definitions/Error"
NotFound:
description: Resource was not found
schema:
$ref: "#/definitions/Error"
ServerError:
description: Server Internal Error
schema:
$ref: "#/definitions/Error"
TaxSummaryResponse:
description: Taxnexus Response with TaxSummaryResponse Objects
schema:
$ref: "#/definitions/TaxSummaryResponse"
InvoiceSummaryResponse:
description: Taxnexus Response with TaxSummaryResponse Objects
schema:
$ref: "#/definitions/InvoiceSummaryResponse"
InvoiceItemSummaryResponse:
description: Taxnexus Response with TaxSummaryResponse Objects
schema:
$ref: "#/definitions/InvoiceItemSummaryResponse"
TaxReturnResponse:
description: The California CDTFA Sales and Use Tax Return
schema:
$ref: "#/definitions/TaxReturnResponse"
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"
UseTaxResponse:
description: Taxnexus Response with TaxSummaryResponse Objects
schema:
$ref: "#/definitions/UseTaxResponse"
paths:
/invoices:
get:
description: Return invoice summaries by month for an Account
operationId: getInvoices
parameters:
- $ref: "#/parameters/accountIdQuery"
- $ref: "#/parameters/yearQuery"
- $ref: "#/parameters/quarterQuery"
- $ref: "#/parameters/monthQuery"
- $ref: "#/parameters/semiannualQuery"
responses:
"200":
$ref: "#/responses/InvoiceSummaryResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
summary: Return invoice summaries by month
tags:
- Invoice
/invoices/medicinal:
get:
description: Return medicinal revenue summary by period specified
operationId: getMedicinal
parameters:
- $ref: "#/parameters/accountIdQuery"
- $ref: "#/parameters/yearQuery"
- $ref: "#/parameters/quarterQuery"
- $ref: "#/parameters/monthQuery"
- $ref: "#/parameters/semiannualQuery"
responses:
"200":
$ref: "#/responses/InvoiceSummaryResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
summary: Return medicinal revenue summary by period specified
tags:
- Invoice
/invoiceitems:
get:
description: Return invoiceitem summaries by month for an Account
operationId: getInvoiceitems
parameters:
- $ref: "#/parameters/accountIdQuery"
- $ref: "#/parameters/yearQuery"
- $ref: "#/parameters/quarterQuery"
- $ref: "#/parameters/monthQuery"
- $ref: "#/parameters/semiannualQuery"
responses:
"200":
$ref: "#/responses/InvoiceItemSummaryResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
summary: Return invoice item summaries by month
tags:
- InvoiceItem
/taxes/districts:
get:
description: Return district summary tax reports for an Account
operationId: getDistrictTaxes
parameters:
- $ref: "#/parameters/accountIdQuery"
- $ref: "#/parameters/yearQuery"
- $ref: "#/parameters/quarterQuery"
- $ref: "#/parameters/monthQuery"
- $ref: "#/parameters/semiannualQuery"
responses:
"200":
$ref: "#/responses/TaxSummaryResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
summary: Return summary tax reports for an Account
tags:
- Tax
/taxes/usetax:
get:
description: Return use tax summaries for an Account
operationId: getUseTax
parameters:
- $ref: "#/parameters/accountIdQuery"
- $ref: "#/parameters/yearQuery"
- $ref: "#/parameters/quarterQuery"
- $ref: "#/parameters/monthQuery"
- $ref: "#/parameters/semiannualQuery"
responses:
"200":
$ref: "#/responses/UseTaxResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
summary: Return use tax summaries for an Account
tags:
- Tax
/taxreturns/salesanduse:
get:
description: Return CDTFA Sales & Use Tax Return
operationId: getSalesAndUseTaxReturn
parameters:
- $ref: "#/parameters/accountIdQuery"
- $ref: "#/parameters/yearQuery"
- $ref: "#/parameters/quarterQuery"
- $ref: "#/parameters/monthQuery"
- $ref: "#/parameters/semiannualQuery"
responses:
"200":
$ref: "#/responses/TaxReturnResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
summary: TaxReturn use tax summaries for an Account
tags:
- Tax
definitions:
AdditionalDeductions:
properties:
Amount:
type: number
Description:
type: string
NonTaxableAmount:
type: number
type: object
DistrictTaxes:
properties:
Adjustments:
type: number
format: double
County:
type: string
District:
type: string
DistrictTaxDue:
type: number
format: double
NetTaxableAmount:
type: number
Rate:
type: number
format: double
TaxableAmount:
type: number
format: double
type: object
Error:
properties:
Code:
format: int64
type: number
Fields:
type: string
Message:
type: string
type: object
InvoiceItemSummary:
properties:
COGS:
format: double
type: number
PeriodName:
description: The Period Name of the summary line
type: string
PlaceGeocode:
description: Taxnexus Geocode for this group of item summaries
type: string
ShippingHandling:
format: double
type: number
Subtotal:
format: double
type: number
TaxnexusCode:
type: string
type: object
InvoiceItemSummaryResponse:
description: An array of Invoice Item Summary Reporting Objects
properties:
Data:
items:
$ref: "#/definitions/InvoiceItemSummary"
type: array
Meta:
$ref: "#/definitions/ResponseMeta"
type: object
InvoiceSummary:
properties:
Amount:
format: double
type: number
BusinessTax:
format: double
type: number
CannabisTax:
format: double
type: number
EstimatedAmount:
format: double
type: number
EstimatedBusinessTax:
format: double
type: number
EstimatedCOGS:
format: double
type: number
EstimatedCannabisTax:
format: double
type: number
EstimatedDiscount:
format: double
type: number
EstimatedSalesTax:
format: double
type: number
EstimatedSubtotal:
format: double
type: number
PeriodName:
description: The Period Name of the summary line
type: string
PlaceGeocode:
description: Taxnexus Geocode for this group of item summaries
format: string
SalesRegulation:
type: string
SalesTax:
format: double
type: number
Subtotal:
format: double
type: number
type: object
InvoiceSummaryResponse:
description: An array of Invoice Summary Reporting Objects
properties:
Data:
items:
$ref: "#/definitions/InvoiceSummary"
type: array
Meta:
$ref: "#/definitions/ResponseMeta"
type: object
Pagination:
properties:
Limit:
format: int64
type: integer
Offset:
format: int64
type: integer
PageSize:
format: int64
type: integer
SetSize:
format: int64
type: integer
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
TaxReturn:
properties:
AdditionalDeductions:
items:
$ref: "#/definitions/AdditionalDeductions"
type: array
AdditionalDeductionsAmount:
format: double
type: number
AssetSales:
type: number
format: double
SummaryReport:
$ref: "#/definitions/TaxReturnPanel"
EstimatedReport:
$ref: "#/definitions/TaxReturnPanel"
CountyReports:
items:
$ref: "#/definitions/TaxReturnPanel"
type: array
DistrictReports:
items:
$ref: "#/definitions/TaxReturnPanel"
type: array
DistrictTaxes:
items:
$ref: "#/definitions/DistrictTaxes"
type: array
ExcessTaxCollected:
type: number
format: double
FixturesAndEquipment:
type: number
format: double
FoodSales:
type: number
format: double
GovSales:
type: number
format: double
Interest:
type: number
format: double
InterstateSales:
type: number
format: double
Name:
type: string
Code:
type: string
Month:
type: number
format: int64
Year:
type: number
format: int64
Quarter:
type: number
format: int64
PeriodHeaders:
type: array
items:
type: string
NetTaxableAmountToBeReported:
type: number
format: double
NonTaxableLabor:
type: number
format: double
Penalty:
type: number
format: double
RemainingTax:
type: number
format: double
ResaleSales:
type: number
format: double
SalesTaxIncluded:
type: number
format: double
TaxDue:
type: number
format: double
TotalSales:
format: double
type: number
TotalSalesAndPurchases:
type: number
format: double
TotalTax:
type: number
format: double
TotalTaxDueBeforeCredits:
type: number
format: double
TotalTaxPrepayments:
type: number
format: double
UseTaxSales:
format: double
type: number
type: object
TaxReturnPanel:
properties:
BusinessTaxes:
items:
type: number
type: array
BusinessTaxesTotal:
format: double
type: number
COGS:
items:
type: number
format: double
type: array
COGSTotal:
type: number
format: double
CannabisRevenue:
items:
type: number
format: double
type: array
CannabisRevenueTotal:
format: double
type: number
ColumnHeaders:
items:
type: string
type: array
CountyName:
type: string
CountySalesTaxRate:
format: double
type: number
DistrictCombinedRate:
format: double
type: number
DistrictSalesTaxRate:
format: double
type: number
DistrictType:
type: string
ExciseTaxes:
items:
format: double
type: number
type: array
ExciseTaxesTotal:
type: number
format: double
Geocode:
type: string
HasDistrictTaxes:
type: boolean
MerchRevenue:
items:
format: double
type: number
type: array
MerchRevenueTotal:
format: double
type: number
PreTaxRevenue:
items:
type: number
format: double
type: array
PreTaxRevenueTotal:
type: number
format: double
SalesTaxBasis:
items:
format: double
type: number
type: array
SalesTaxBasisTotal:
type: number
format: double
SalesTaxTotal:
type: number
format: double
SalesTaxes:
items:
type: number
format: double
type: array
StateSalesTaxRate:
type: number
format: double
TaxExemptRevenue:
items:
type: number
format: double
type: array
TaxExemptRevenueTotal:
format: double
type: number
Title:
type: string
type: object
TaxReturnResponse:
description: An array of Tax Return Objects
properties:
Data:
items:
$ref: "#/definitions/TaxReturn"
type: array
Meta:
$ref: "#/definitions/ResponseMeta"
type: object
TaxSummary:
properties:
Amount:
format: double
type: number
Category:
description: Tax Type Category
type: string
EffectiveRate:
format: double
type: number
Month:
description: Month Number
format: int64
type: number
PeriodName:
description: The Period Name of the summary line
type: string
PlaceGeocode:
description: The Taxnexus Geocode of the summary line
type: string
Quarter:
description: Quarter Number
format: int64
type: number
RevenueBase:
format: double
type: number
RevenueNet:
format: double
type: number
RevenueNotTaxable:
format: double
type: number
TaxExemptRevenue:
format: double
type: number
TaxOnTax:
format: double
type: number
TaxRate:
format: double
type: number
TaxTypeID:
description:
Taxnexus ID of the TaxType for which this transaction is made
type: string
TaxTypeName:
description: Tax or Fee Name
type: string
Year:
description: Year Number
format: int64
type: number
type: object
TaxSummaryResponse:
description: An array of Tax Summary Reporting Objects
properties:
Data:
items:
$ref: "#/definitions/TaxSummary"
type: array
Meta:
$ref: "#/definitions/ResponseMeta"
type: object
UseTax:
properties:
Amount:
format: double
type: number
RevenueBase:
format: double
type: number
RevenueNet:
format: double
type: number
RevenueNotTaxable:
format: double
type: number
TaxExemptRevenue:
format: double
type: number
TaxOnTax:
format: double
type: number
TaxRate:
format: double
type: number
type: object
UseTaxResponse:
description: An array of Use Tax Reporting Objects
properties:
Data:
items:
$ref: "#/definitions/UseTax"
type: array
Meta:
$ref: "#/definitions/ResponseMeta"
type: object

View File

@ -0,0 +1,470 @@
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-2020 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

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,720 @@
swagger: "2.0"
host: "vendor-gw.fabric.tnxs.net:8080"
securityDefinitions:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
security:
- ApiKeyAuth: []
basePath: "/v1"
schemes:
- "http"
info:
version: 1.2.7
title: "vendor-gw"
contact:
email: "noc@taxnexus.net"
license:
name: "Proprietary"
termsOfService: "https://www.taxnexus.com/terms/"
description: |
# Taxnexus Vendor Gateway
consumes:
- "application/json"
produces:
- "application/json"
parameters:
itemNumberPath:
description: The Item Number
in: path
name: item
required: true
type: string
itemNumberQuery:
description: The Item Number
in: query
name: item
required: false
type: string
lastModifiedEndQuery:
description: The last modified end timestamp
in: query
name: endDate
required: false
type: string
lastModifiedStartQuery:
description: The last modified start timestamp
in: query
name: startDate
required: false
type: string
licenseNumberQuery:
description: The Licnese Number for the query
in: query
name: license
required: false
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 the Object
in: query
name: name
required: false
type: string
offsetQuery:
description: How many objects to skip
format: int64
in: query
name: offset
required: false
type: integer
partnerKeyQuery:
description: The Partner Key
in: query
name: partner
required: false
type: string
poIdQuery:
description: The ID Purchase Order to be retrieved
in: query
name: poId
required: false
type: string
stateCodeQuery:
description: The 2-character State Code
in: query
name: state
required: true
type: string
taxnexusUserQuery:
description: Taxnexus User Account Number (T0000001)
in: query
name: user
required: true
type: string
userKeyQuery:
description: The Taxnexus User's Key on the Vendor API
in: query
name: user
required: true
type: string
vendorQuery:
description: The name of the Vendor Gateway to be used
enum:
- blaze
- metrc
in: query
name: vendor
required: false
type: string
responses:
AccessForbidden:
description: Access forbidden, account lacks access
schema:
$ref: "#/definitions/Error"
Conflict:
description: Conflict
schema:
$ref: "#/definitions/Error"
InvalidDataError:
description: Invalid data was sent
schema:
$ref: "#/definitions/InvalidError"
InvoiceResponse:
description: An array of Invoice (full) objects
schema:
$ref: "#/definitions/InvoiceResponse"
AccountResponse:
description: An array of AccountBasic objects
schema:
$ref: "#/definitions/AccountResponse"
NotFound:
description: Resource was not found
schema:
$ref: "#/definitions/Error"
PurchaseOrderResponse:
description: An array of Purchase Order objects
schema:
$ref: "#/definitions/PurchaseOrderResponse"
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:
/accounts:
get:
tags:
- Accounts
operationId: getAccounts
description:
Get the Stores, Accounts or other entities that correspond to
locations
parameters:
- $ref: "#/parameters/licenseNumberQuery"
- $ref: "#/parameters/partnerKeyQuery"
- $ref: "#/parameters/stateCodeQuery"
- $ref: "#/parameters/userKeyQuery"
- $ref: "#/parameters/vendorQuery"
responses:
"200":
$ref: "#/responses/AccountResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
summary: Get Accounts for this User
/invoices:
get:
summary: Get a list of Invoices
operationId: getInvoices
description: Return a list of available Taxnexus Invoices
tags:
- Invoices
parameters:
- $ref: "#/parameters/itemNumberQuery"
- $ref: "#/parameters/lastModifiedEndQuery"
- $ref: "#/parameters/lastModifiedStartQuery"
- $ref: "#/parameters/licenseNumberQuery"
- $ref: "#/parameters/limitQuery"
- $ref: "#/parameters/offsetQuery"
- $ref: "#/parameters/partnerKeyQuery"
- $ref: "#/parameters/stateCodeQuery"
- $ref: "#/parameters/userKeyQuery"
- $ref: "#/parameters/vendorQuery"
responses:
"200":
description:
A list of Invoices for this User was retrieved successfully
schema:
$ref: "#/definitions/InvoiceResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
/pos:
get:
summary: Get a list of Purchase Orders
operationId: getPos
description: Return a list of available Purchase Orders
tags:
- PurchaseOrders
parameters:
- $ref: "#/parameters/lastModifiedEndQuery"
- $ref: "#/parameters/lastModifiedStartQuery"
- $ref: "#/parameters/licenseNumberQuery"
- $ref: "#/parameters/limitQuery"
- $ref: "#/parameters/offsetQuery"
- $ref: "#/parameters/partnerKeyQuery"
- $ref: "#/parameters/poIdQuery"
- $ref: "#/parameters/stateCodeQuery"
- $ref: "#/parameters/userKeyQuery"
- $ref: "#/parameters/vendorQuery"
responses:
"200":
$ref: "#/responses/PurchaseOrderResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
definitions:
AccountBasic:
properties:
AccountNumber:
description: Account Number
type: string
BillingAddress:
$ref: "#/definitions/Address"
BillingContact:
$ref: "#/definitions/ContactBasic"
ID:
description: Taxnexus Record Id Only; not used in POST
type: string
License:
$ref: "#/definitions/LicenseBasic"
Name:
description: Account Name
type: string
ParentFK:
description:
UUID Reference the master record that owns this item
type: string
Phone:
description: Phone number
type: string
Ref:
description: "Source System identifier for this record, if any"
type: string
ShippingAddress:
$ref: "#/definitions/Address"
ShippingContact:
$ref: "#/definitions/ContactBasic"
Type:
description: Account Type
type: string
UUID:
description: Unique Taxnexus ID
type: string
Website:
description: Account Website
type: string
type: object
AccountResponse:
properties:
data:
items:
$ref: "#/definitions/AccountBasic"
type: array
meta:
$ref: "#/definitions/ResponseMeta"
type: object
Address:
properties:
City:
description: City
type: string
Country:
description: Country full name
type: string
CountryCode:
description: Country Code
type: string
Postalcode:
description: Postal Code
type: string
State:
description: State full name
type: string
StateCode:
description: State Code
type: string
Street:
description: Street number and name
type: string
type: object
ContactBasic:
properties:
AccountID:
description: Contact Account Id
type: string
Email:
description: Email
type: string
ID:
description: Taxnexus Record Id Only; not used in POST
type: string
MailingAddress:
$ref: "#/definitions/Address"
MobilePhone:
description: Mobile
type: string
Name:
description: Name
type: string
ParentFK:
description:
UUID Reference the master record that owns this item
type: string
Ref:
description: Source System identifier for this record, if any
type: string
UUID:
description: Unique Taxnexus ID
type: string
type: object
Error:
properties:
error:
type: string
status:
maximum: 600
minimum: 100
type: integer
type: object
InvalidError:
allOf:
- $ref: "#/definitions/Error"
- properties:
details:
items:
type: string
type: array
type: object
InvoiceBasic:
properties:
AccountID:
description:
Account Identifier from Source System; copied to the Tax
Transaction result records
type: string
AccountName:
description:
Account Name from source system (not used in tax calculations)
type: string
Amount:
description: Invoice Amount; ignored in tax calculation
format: double
type: number
AmountDue:
description: Amount Due; ignored in tax calculations
format: double
type: number
BusinessAddress:
$ref: "#/definitions/Address"
CustomerID:
description:
The Customer ID linked to this invoice from the source system
type: string
EstimatedAmount:
description: Invoice Total from source system
format: double
type: number
EstimatedCannabisTax:
description: Cannabis Tax from source system
format: double
type: number
EstimatedCOGS:
description: Cost of Goods Sold from source system
type: number
format: double
EstimatedDiscount:
description:
An amount the Invoice is discounted in source Invoice
format: double
type: number
EstimatedBusinessTax:
description: Business Tax from source system
format: double
type: number
EstimatedSalesTax:
description: Sales Tax from source system
format: double
type: number
EstimatedSubtotal:
description: Subtotal from source system
format: double
type: number
JobID:
description: Taxnexus Job ID
type: string
ID:
description: Taxnexus Record Id Only; not used in POST
type: string
InvoiceDate:
description:
Invoice Date; should be date only or correct time zone if in
time notation
type: string
InvoiceNumber:
description:
Source System Customer-Facing Invoice Number; ignored in tax
calculation
type: string
Items:
description: The items associated with this Invoice
items:
$ref: "#/definitions/ItemBasic"
type: array
ParentFK:
description:
UUID Reference to a master record that owns this item
type: string
Ref:
description:
Source System identifier for this record, if any; copied to
invoiceid in Tax Transaction result records
type: string
SalesRegulation:
description:
Sales Regulation Type; must be one of the listed values
type: string
ShippingHandling:
description:
The total amount of shipping and delivery charges on this
invoice from the source system
format: double
type: number
Status:
description:
Status used by for Billing Balances; ignored in tax
calculation
type: string
Subtotal:
description: Subtotal (not used in tax calculation)
format: double
type: number
Type:
description: Invoice Type (not used in tax calculation)
type: string
UUID:
description: Unique Taxnexus Id assigned during ingest
type: string
type: object
InvoiceResponse:
properties:
data:
items:
$ref: "#/definitions/InvoiceBasic"
type: array
meta:
$ref: "#/definitions/ResponseMeta"
type: object
ItemBasic:
properties:
COGS:
description: Cost of Goods Sold for this Item
example: 0
type: number
Description:
description: Line Item Description (not used in tax calculation)
example: string
type: string
ID:
description: Taxnexus Record Id Only; not used in POST
example: string
type: string
InvoiceID:
description: Source System Parent Foreign Key to Invoice
example: string
type: string
ListPrice:
description: The pre-discount price of the item
example: 0
type: number
MRCInterval:
description: The pre-discount price of the item
example: 0
format: int64
type: number
ParentFK:
description:
UUID Reference the master record that owns this item
example: string
type: string
ProductCode:
description: Product Code (not used in tax calculation)
example: string
type: string
Quantity:
description: Quantity
example: 0
type: number
Ref:
description:
"Source System identifier for this record, if any; copied to
invoiceitemid in Tax Transaction result records"
example: string
type: string
SalesRegulation:
description: Sales Regulation Type
example: string
type: string
ShippingHandling:
description: Shipping & Handling and Delivery Fees for this Item
example: 0
type: number
Subtotal:
description: Subtotal (not used in tax calculation)
example: 0
type: number
TaxnexusCode:
description: Taxnexus Code
example: string
type: string
UnitPrice:
description: Unit Price
example: 0
type: number
Units:
description: The Unit of Measure for this item
type: string
UUID:
description: Unique Taxnexus ID
example: string
type: string
type: object
LicenseBasic:
properties:
DateIssued:
description: Date Issued
type: string
ExpirationDate:
description: Expiration Date
type: string
ID:
description: Taxnexus Record Id
type: string
IsCanceled:
description: Is Canceled?
type: boolean
IsRevoked:
description: Is Revoked?
type: boolean
LicenseType:
description: License State and Type
type: string
Name:
description: License Number
type: string
ParentFK:
description:
UUID Reference the master record that owns this item
type: string
Ref:
description: Source System identifier for this record, if any
type: string
Status:
description: License Status
type: string
UUID:
description: Unique Taxnexus ID
type: string
type: object
Pagination:
properties:
next_link:
type: string
p_limit:
format: int64
type: integer
p_offset:
format: int64
type: integer
page_size:
format: int64
type: integer
set_size:
format: int64
type: integer
type: object
PurchaseOrderBasic:
properties:
AccountID:
description: Account ID
type: string
Amount:
description: Purchase Order Amount
format: float64
type: number
AmountDue:
description: Amount Due
type: number
BusinessAddress:
$ref: "#/definitions/Address"
ID:
description: Order Id
type: string
Items:
items:
$ref: "#/definitions/ItemBasic"
type: array
ParentFK:
description:
UUID Reference the master record that owns this item
type: string
PODate:
description: Purcahse Order Date
type: string
PONumber:
description: Purchase Order Number
type: string
Ref:
description: Source System identifier for this record, if any
type: string
SalesRegulation:
description: Sales Regulation Type
type: string
Status:
description: Status
type: string
Subtotal:
description: Subtotal
format: float64
type: number
Type:
description: Type
type: string
UUID:
description: Unique Taxnexus ID
type: string
type: object
PurchaseOrderResponse:
properties:
data:
items:
$ref: "#/definitions/PurchaseOrderBasic"
type: array
meta:
$ref: "#/definitions/ResponseMeta"
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