First commit

main v0.1.1
Vernon Keenan 2023-09-12 03:42:13 +00:00
commit e2d3ad3a4e
104 changed files with 23849 additions and 0 deletions

20
.gitignore vendored Normal file
View File

@ -0,0 +1,20 @@
# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib
# Test binary, build with `go test -c`
*.test
# Output of the go coverage tool, specifically when used with LiteIDE
*.out
*.log
/swagger/docs/*
/.sfdx/*
/swagger/apex/*
/swagger/mysql/*
/swagger/logs/*
/swagger/graphql/*

3
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,3 @@
{
"cSpell.words": ["Gitea", "taxnexus"]
}

9
LICENSE Normal file
View File

@ -0,0 +1,9 @@
Copyright (c) 2012-2022, Taxnexus, Inc. All rights reserved.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

52
Makefile Normal file
View File

@ -0,0 +1,52 @@
.PHONY: swagger
swagger:
cp ../auth/swagger/auth-work.yaml ./swagger
cp ../auth/swagger/auth-work.yaml ./swagger/external
cp ../workflow/swagger/workflow-work.yaml ./swagger
cp ../workflow/swagger/workflow-work.yaml ./swagger/external
#
rm -rf api
#
# generate auth client
#
mkdir -p api/auth
swagger generate client \
--log-output=./swagger/logs/generate-auth-client.log \
--copyright-file=./build/COPYRIGHT \
--name=auth \
--spec=./swagger/auth-work.yaml \
--target=./api/auth \
--client-package=auth-client \
--model-package=auth-models \
--principal=app.User
#
# update external auth client
#
sed -i 's|"http"|"https"|g' ./swagger/external/auth-work.yaml
sed -i 's|auth.work.com:8080|gw.tnxs.net|g' ./swagger/external/auth-work.yaml
sed -i 's|"/v1"|"/vk/auth/v1"|g' ./swagger/external/auth-work.yaml
#
# generate workflow client
#
mkdir api/workflow
swagger generate client \
--log-output=./swagger/logs/generate-workflow-client.log \
--copyright-file=./build/COPYRIGHT \
--name=workflow \
--spec=./swagger/workflow-work.yaml \
--target=./api/workflow \
--client-package=workflow-client \
--model-package=workflow-models \
--principal=app.User
#
# update external workflow client
#
sed -i 's|"http"|"https"|g' ./swagger/external/workflow-work.yaml
sed -i 's|workflow.work.com:8080|gw.tnxs.net|g' ./swagger/external/workflow-work.yaml
sed -i 's|"/v1"|"/vk/workflow/v1"|g' ./swagger/external/workflow-work.yaml
#
# copy external swagger files
#
scp ./swagger/external/*.yaml root@whm.noc.tnxs.net:/home/taxassets/www/swagger/external

27
README.md Normal file
View File

@ -0,0 +1,27 @@
# lib
vernonkeenan Shared Libraries (go)
## Dependent Systems
The Gitea server <https://code.tnxs.net> must be up and running with admin access.
## Update Procedure
Prerequisite: All the other repos are cloned locally in adjacent directories.
* Increment branch number in local repo
* Generate all OpenAPI libraries and then cleanup modules
```bash
make swagger
go get -u -f ./...
go mod tidy
```
* Commit and push new branch to GitHub
* On GitHub goto <https://github.com/vernonkeenan/lib/settings/branches> set the new branch to default.
* On GitHub goto <https://github.com/vernonkeenan/lib/releases> and publish a new release for the new branch. Make the new tag the branch name.
* On Gitea goto <https://code.tnxs.net/vernonkeenan/lib/settings> and click Synchronize Now.
* Update the ``go.mod`` line with ``code.tnxs.net/vernonkeenan/lib`` in each project to match the latest version.

View File

@ -0,0 +1,116 @@
// Code generated by go-swagger; DO NOT EDIT.
// (c) 2012-2020 by Taxnexus, Inc.
// All rights reserved worldwide.
// Proprietary product; unlicensed use is not allowed
package auth_client
// This file was generated by the swagger tool.
// Editing this file might prove futile when you re-run the swagger generate command
import (
"github.com/go-openapi/runtime"
httptransport "github.com/go-openapi/runtime/client"
"github.com/go-openapi/strfmt"
"code.tnxs.net/vernonkeenan/lib/api/auth/auth_client/user"
)
// Default auth HTTP client.
var Default = NewHTTPClient(nil)
const (
// DefaultHost is the default Host
// found in Meta (info) section of spec file
DefaultHost string = "auth.vernonkeenan.com:8080"
// DefaultBasePath is the default BasePath
// found in Meta (info) section of spec file
DefaultBasePath string = "/v1"
)
// DefaultSchemes are the default schemes found in Meta (info) section of spec file
var DefaultSchemes = []string{"http"}
// NewHTTPClient creates a new auth HTTP client.
func NewHTTPClient(formats strfmt.Registry) *Auth {
return NewHTTPClientWithConfig(formats, nil)
}
// NewHTTPClientWithConfig creates a new auth HTTP client,
// using a customizable transport config.
func NewHTTPClientWithConfig(formats strfmt.Registry, cfg *TransportConfig) *Auth {
// ensure nullable parameters have default
if cfg == nil {
cfg = DefaultTransportConfig()
}
// create transport and client
transport := httptransport.New(cfg.Host, cfg.BasePath, cfg.Schemes)
return New(transport, formats)
}
// New creates a new auth client
func New(transport runtime.ClientTransport, formats strfmt.Registry) *Auth {
// ensure nullable parameters have default
if formats == nil {
formats = strfmt.Default
}
cli := new(Auth)
cli.Transport = transport
cli.User = user.New(transport, formats)
return cli
}
// DefaultTransportConfig creates a TransportConfig with the
// default settings taken from the meta section of the spec file.
func DefaultTransportConfig() *TransportConfig {
return &TransportConfig{
Host: DefaultHost,
BasePath: DefaultBasePath,
Schemes: DefaultSchemes,
}
}
// TransportConfig contains the transport related info,
// found in the meta section of the spec file.
type TransportConfig struct {
Host string
BasePath string
Schemes []string
}
// WithHost overrides the default host,
// provided by the meta section of the spec file.
func (cfg *TransportConfig) WithHost(host string) *TransportConfig {
cfg.Host = host
return cfg
}
// WithBasePath overrides the default basePath,
// provided by the meta section of the spec file.
func (cfg *TransportConfig) WithBasePath(basePath string) *TransportConfig {
cfg.BasePath = basePath
return cfg
}
// WithSchemes overrides the default schemes,
// provided by the meta section of the spec file.
func (cfg *TransportConfig) WithSchemes(schemes []string) *TransportConfig {
cfg.Schemes = schemes
return cfg
}
// Auth is a client for auth
type Auth struct {
User user.ClientService
Transport runtime.ClientTransport
}
// SetTransport changes the transport on the client and all its subresources
func (c *Auth) SetTransport(transport runtime.ClientTransport) {
c.Transport = transport
c.User.SetTransport(transport)
}

View File

@ -0,0 +1,167 @@
// Code generated by go-swagger; DO NOT EDIT.
// (c) 2012-2020 by Taxnexus, Inc.
// All rights reserved worldwide.
// Proprietary product; unlicensed use is not allowed
package user
// This file was generated by the swagger tool.
// Editing this file might prove futile when you re-run the swagger generate command
import (
"context"
"net/http"
"time"
"github.com/go-openapi/errors"
"github.com/go-openapi/runtime"
cr "github.com/go-openapi/runtime/client"
"github.com/go-openapi/strfmt"
)
// NewGetUsersParams creates a new GetUsersParams object,
// with the default timeout for this client.
//
// Default values are not hydrated, since defaults are normally applied by the API server side.
//
// To enforce default values in parameter, use SetDefaults or WithDefaults.
func NewGetUsersParams() *GetUsersParams {
return &GetUsersParams{
timeout: cr.DefaultTimeout,
}
}
// NewGetUsersParamsWithTimeout creates a new GetUsersParams object
// with the ability to set a timeout on a request.
func NewGetUsersParamsWithTimeout(timeout time.Duration) *GetUsersParams {
return &GetUsersParams{
timeout: timeout,
}
}
// NewGetUsersParamsWithContext creates a new GetUsersParams object
// with the ability to set a context for a request.
func NewGetUsersParamsWithContext(ctx context.Context) *GetUsersParams {
return &GetUsersParams{
Context: ctx,
}
}
// NewGetUsersParamsWithHTTPClient creates a new GetUsersParams object
// with the ability to set a custom HTTPClient for a request.
func NewGetUsersParamsWithHTTPClient(client *http.Client) *GetUsersParams {
return &GetUsersParams{
HTTPClient: client,
}
}
/*
GetUsersParams contains all the parameters to send to the API endpoint
for the get users operation.
Typically these are written to a http.Request.
*/
type GetUsersParams struct {
/* Apikey.
Service account or developer API key
*/
Apikey *string
timeout time.Duration
Context context.Context
HTTPClient *http.Client
}
// WithDefaults hydrates default values in the get users params (not the query body).
//
// All values with no default are reset to their zero value.
func (o *GetUsersParams) WithDefaults() *GetUsersParams {
o.SetDefaults()
return o
}
// SetDefaults hydrates default values in the get users params (not the query body).
//
// All values with no default are reset to their zero value.
func (o *GetUsersParams) SetDefaults() {
// no default values defined for this parameter
}
// WithTimeout adds the timeout to the get users params
func (o *GetUsersParams) WithTimeout(timeout time.Duration) *GetUsersParams {
o.SetTimeout(timeout)
return o
}
// SetTimeout adds the timeout to the get users params
func (o *GetUsersParams) SetTimeout(timeout time.Duration) {
o.timeout = timeout
}
// WithContext adds the context to the get users params
func (o *GetUsersParams) WithContext(ctx context.Context) *GetUsersParams {
o.SetContext(ctx)
return o
}
// SetContext adds the context to the get users params
func (o *GetUsersParams) SetContext(ctx context.Context) {
o.Context = ctx
}
// WithHTTPClient adds the HTTPClient to the get users params
func (o *GetUsersParams) WithHTTPClient(client *http.Client) *GetUsersParams {
o.SetHTTPClient(client)
return o
}
// SetHTTPClient adds the HTTPClient to the get users params
func (o *GetUsersParams) SetHTTPClient(client *http.Client) {
o.HTTPClient = client
}
// WithApikey adds the apikey to the get users params
func (o *GetUsersParams) WithApikey(apikey *string) *GetUsersParams {
o.SetApikey(apikey)
return o
}
// SetApikey adds the apikey to the get users params
func (o *GetUsersParams) SetApikey(apikey *string) {
o.Apikey = apikey
}
// WriteToRequest writes these params to a swagger request
func (o *GetUsersParams) WriteToRequest(r runtime.ClientRequest, reg strfmt.Registry) error {
if err := r.SetTimeout(o.timeout); err != nil {
return err
}
var res []error
if o.Apikey != nil {
// query param apikey
var qrApikey string
if o.Apikey != nil {
qrApikey = *o.Apikey
}
qApikey := qrApikey
if qApikey != "" {
if err := r.SetQueryParam("apikey", qApikey); err != nil {
return err
}
}
}
if len(res) > 0 {
return errors.CompositeValidationError(res...)
}
return nil
}

View File

@ -0,0 +1,477 @@
// Code generated by go-swagger; DO NOT EDIT.
// (c) 2012-2020 by Taxnexus, Inc.
// All rights reserved worldwide.
// Proprietary product; unlicensed use is not allowed
package user
// This file was generated by the swagger tool.
// Editing this file might prove futile when you re-run the swagger generate command
import (
"fmt"
"io"
"github.com/go-openapi/runtime"
"github.com/go-openapi/strfmt"
"code.tnxs.net/vernonkeenan/lib/api/auth/auth_models"
)
// GetUsersReader is a Reader for the GetUsers structure.
type GetUsersReader struct {
formats strfmt.Registry
}
// ReadResponse reads a server response into the received o.
func (o *GetUsersReader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) {
switch response.Code() {
case 200:
result := NewGetUsersOK()
if err := result.readResponse(response, consumer, o.formats); err != nil {
return nil, err
}
return result, nil
case 401:
result := NewGetUsersUnauthorized()
if err := result.readResponse(response, consumer, o.formats); err != nil {
return nil, err
}
return nil, result
case 403:
result := NewGetUsersForbidden()
if err := result.readResponse(response, consumer, o.formats); err != nil {
return nil, err
}
return nil, result
case 404:
result := NewGetUsersNotFound()
if err := result.readResponse(response, consumer, o.formats); err != nil {
return nil, err
}
return nil, result
case 422:
result := NewGetUsersUnprocessableEntity()
if err := result.readResponse(response, consumer, o.formats); err != nil {
return nil, err
}
return nil, result
case 500:
result := NewGetUsersInternalServerError()
if err := result.readResponse(response, consumer, o.formats); err != nil {
return nil, err
}
return nil, result
default:
return nil, runtime.NewAPIError("response status code does not match any response statuses defined for this endpoint in the swagger spec", response, response.Code())
}
}
// NewGetUsersOK creates a GetUsersOK with default headers values
func NewGetUsersOK() *GetUsersOK {
return &GetUsersOK{}
}
/*
GetUsersOK describes a response with status code 200, with default header values.
Response with User objects
*/
type GetUsersOK struct {
Payload *auth_models.UserResponse
}
// IsSuccess returns true when this get users o k response has a 2xx status code
func (o *GetUsersOK) IsSuccess() bool {
return true
}
// IsRedirect returns true when this get users o k response has a 3xx status code
func (o *GetUsersOK) IsRedirect() bool {
return false
}
// IsClientError returns true when this get users o k response has a 4xx status code
func (o *GetUsersOK) IsClientError() bool {
return false
}
// IsServerError returns true when this get users o k response has a 5xx status code
func (o *GetUsersOK) IsServerError() bool {
return false
}
// IsCode returns true when this get users o k response a status code equal to that given
func (o *GetUsersOK) IsCode(code int) bool {
return code == 200
}
// Code gets the status code for the get users o k response
func (o *GetUsersOK) Code() int {
return 200
}
func (o *GetUsersOK) Error() string {
return fmt.Sprintf("[GET /users][%d] getUsersOK %+v", 200, o.Payload)
}
func (o *GetUsersOK) String() string {
return fmt.Sprintf("[GET /users][%d] getUsersOK %+v", 200, o.Payload)
}
func (o *GetUsersOK) GetPayload() *auth_models.UserResponse {
return o.Payload
}
func (o *GetUsersOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error {
o.Payload = new(auth_models.UserResponse)
// response payload
if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF {
return err
}
return nil
}
// NewGetUsersUnauthorized creates a GetUsersUnauthorized with default headers values
func NewGetUsersUnauthorized() *GetUsersUnauthorized {
return &GetUsersUnauthorized{}
}
/*
GetUsersUnauthorized describes a response with status code 401, with default header values.
Access Unauthorized, invalid API-KEY was used
*/
type GetUsersUnauthorized struct {
Payload *auth_models.Error
}
// IsSuccess returns true when this get users unauthorized response has a 2xx status code
func (o *GetUsersUnauthorized) IsSuccess() bool {
return false
}
// IsRedirect returns true when this get users unauthorized response has a 3xx status code
func (o *GetUsersUnauthorized) IsRedirect() bool {
return false
}
// IsClientError returns true when this get users unauthorized response has a 4xx status code
func (o *GetUsersUnauthorized) IsClientError() bool {
return true
}
// IsServerError returns true when this get users unauthorized response has a 5xx status code
func (o *GetUsersUnauthorized) IsServerError() bool {
return false
}
// IsCode returns true when this get users unauthorized response a status code equal to that given
func (o *GetUsersUnauthorized) IsCode(code int) bool {
return code == 401
}
// Code gets the status code for the get users unauthorized response
func (o *GetUsersUnauthorized) Code() int {
return 401
}
func (o *GetUsersUnauthorized) Error() string {
return fmt.Sprintf("[GET /users][%d] getUsersUnauthorized %+v", 401, o.Payload)
}
func (o *GetUsersUnauthorized) String() string {
return fmt.Sprintf("[GET /users][%d] getUsersUnauthorized %+v", 401, o.Payload)
}
func (o *GetUsersUnauthorized) GetPayload() *auth_models.Error {
return o.Payload
}
func (o *GetUsersUnauthorized) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error {
o.Payload = new(auth_models.Error)
// response payload
if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF {
return err
}
return nil
}
// NewGetUsersForbidden creates a GetUsersForbidden with default headers values
func NewGetUsersForbidden() *GetUsersForbidden {
return &GetUsersForbidden{}
}
/*
GetUsersForbidden describes a response with status code 403, with default header values.
Access forbidden, account lacks access
*/
type GetUsersForbidden struct {
Payload *auth_models.Error
}
// IsSuccess returns true when this get users forbidden response has a 2xx status code
func (o *GetUsersForbidden) IsSuccess() bool {
return false
}
// IsRedirect returns true when this get users forbidden response has a 3xx status code
func (o *GetUsersForbidden) IsRedirect() bool {
return false
}
// IsClientError returns true when this get users forbidden response has a 4xx status code
func (o *GetUsersForbidden) IsClientError() bool {
return true
}
// IsServerError returns true when this get users forbidden response has a 5xx status code
func (o *GetUsersForbidden) IsServerError() bool {
return false
}
// IsCode returns true when this get users forbidden response a status code equal to that given
func (o *GetUsersForbidden) IsCode(code int) bool {
return code == 403
}
// Code gets the status code for the get users forbidden response
func (o *GetUsersForbidden) Code() int {
return 403
}
func (o *GetUsersForbidden) Error() string {
return fmt.Sprintf("[GET /users][%d] getUsersForbidden %+v", 403, o.Payload)
}
func (o *GetUsersForbidden) String() string {
return fmt.Sprintf("[GET /users][%d] getUsersForbidden %+v", 403, o.Payload)
}
func (o *GetUsersForbidden) GetPayload() *auth_models.Error {
return o.Payload
}
func (o *GetUsersForbidden) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error {
o.Payload = new(auth_models.Error)
// response payload
if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF {
return err
}
return nil
}
// NewGetUsersNotFound creates a GetUsersNotFound with default headers values
func NewGetUsersNotFound() *GetUsersNotFound {
return &GetUsersNotFound{}
}
/*
GetUsersNotFound describes a response with status code 404, with default header values.
Resource was not found
*/
type GetUsersNotFound struct {
Payload *auth_models.Error
}
// IsSuccess returns true when this get users not found response has a 2xx status code
func (o *GetUsersNotFound) IsSuccess() bool {
return false
}
// IsRedirect returns true when this get users not found response has a 3xx status code
func (o *GetUsersNotFound) IsRedirect() bool {
return false
}
// IsClientError returns true when this get users not found response has a 4xx status code
func (o *GetUsersNotFound) IsClientError() bool {
return true
}
// IsServerError returns true when this get users not found response has a 5xx status code
func (o *GetUsersNotFound) IsServerError() bool {
return false
}
// IsCode returns true when this get users not found response a status code equal to that given
func (o *GetUsersNotFound) IsCode(code int) bool {
return code == 404
}
// Code gets the status code for the get users not found response
func (o *GetUsersNotFound) Code() int {
return 404
}
func (o *GetUsersNotFound) Error() string {
return fmt.Sprintf("[GET /users][%d] getUsersNotFound %+v", 404, o.Payload)
}
func (o *GetUsersNotFound) String() string {
return fmt.Sprintf("[GET /users][%d] getUsersNotFound %+v", 404, o.Payload)
}
func (o *GetUsersNotFound) GetPayload() *auth_models.Error {
return o.Payload
}
func (o *GetUsersNotFound) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error {
o.Payload = new(auth_models.Error)
// response payload
if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF {
return err
}
return nil
}
// NewGetUsersUnprocessableEntity creates a GetUsersUnprocessableEntity with default headers values
func NewGetUsersUnprocessableEntity() *GetUsersUnprocessableEntity {
return &GetUsersUnprocessableEntity{}
}
/*
GetUsersUnprocessableEntity describes a response with status code 422, with default header values.
Unprocessable Entity, likely a bad parameter
*/
type GetUsersUnprocessableEntity struct {
Payload *auth_models.Error
}
// IsSuccess returns true when this get users unprocessable entity response has a 2xx status code
func (o *GetUsersUnprocessableEntity) IsSuccess() bool {
return false
}
// IsRedirect returns true when this get users unprocessable entity response has a 3xx status code
func (o *GetUsersUnprocessableEntity) IsRedirect() bool {
return false
}
// IsClientError returns true when this get users unprocessable entity response has a 4xx status code
func (o *GetUsersUnprocessableEntity) IsClientError() bool {
return true
}
// IsServerError returns true when this get users unprocessable entity response has a 5xx status code
func (o *GetUsersUnprocessableEntity) IsServerError() bool {
return false
}
// IsCode returns true when this get users unprocessable entity response a status code equal to that given
func (o *GetUsersUnprocessableEntity) IsCode(code int) bool {
return code == 422
}
// Code gets the status code for the get users unprocessable entity response
func (o *GetUsersUnprocessableEntity) Code() int {
return 422
}
func (o *GetUsersUnprocessableEntity) Error() string {
return fmt.Sprintf("[GET /users][%d] getUsersUnprocessableEntity %+v", 422, o.Payload)
}
func (o *GetUsersUnprocessableEntity) String() string {
return fmt.Sprintf("[GET /users][%d] getUsersUnprocessableEntity %+v", 422, o.Payload)
}
func (o *GetUsersUnprocessableEntity) GetPayload() *auth_models.Error {
return o.Payload
}
func (o *GetUsersUnprocessableEntity) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error {
o.Payload = new(auth_models.Error)
// response payload
if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF {
return err
}
return nil
}
// NewGetUsersInternalServerError creates a GetUsersInternalServerError with default headers values
func NewGetUsersInternalServerError() *GetUsersInternalServerError {
return &GetUsersInternalServerError{}
}
/*
GetUsersInternalServerError describes a response with status code 500, with default header values.
Server Internal Error
*/
type GetUsersInternalServerError struct {
Payload *auth_models.Error
}
// IsSuccess returns true when this get users internal server error response has a 2xx status code
func (o *GetUsersInternalServerError) IsSuccess() bool {
return false
}
// IsRedirect returns true when this get users internal server error response has a 3xx status code
func (o *GetUsersInternalServerError) IsRedirect() bool {
return false
}
// IsClientError returns true when this get users internal server error response has a 4xx status code
func (o *GetUsersInternalServerError) IsClientError() bool {
return false
}
// IsServerError returns true when this get users internal server error response has a 5xx status code
func (o *GetUsersInternalServerError) IsServerError() bool {
return true
}
// IsCode returns true when this get users internal server error response a status code equal to that given
func (o *GetUsersInternalServerError) IsCode(code int) bool {
return code == 500
}
// Code gets the status code for the get users internal server error response
func (o *GetUsersInternalServerError) Code() int {
return 500
}
func (o *GetUsersInternalServerError) Error() string {
return fmt.Sprintf("[GET /users][%d] getUsersInternalServerError %+v", 500, o.Payload)
}
func (o *GetUsersInternalServerError) String() string {
return fmt.Sprintf("[GET /users][%d] getUsersInternalServerError %+v", 500, o.Payload)
}
func (o *GetUsersInternalServerError) GetPayload() *auth_models.Error {
return o.Payload
}
func (o *GetUsersInternalServerError) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error {
o.Payload = new(auth_models.Error)
// response payload
if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF {
return err
}
return nil
}

View File

@ -0,0 +1,86 @@
// Code generated by go-swagger; DO NOT EDIT.
// (c) 2012-2020 by Taxnexus, Inc.
// All rights reserved worldwide.
// Proprietary product; unlicensed use is not allowed
package user
// This file was generated by the swagger tool.
// Editing this file might prove futile when you re-run the swagger generate command
import (
"fmt"
"github.com/go-openapi/runtime"
"github.com/go-openapi/strfmt"
)
// New creates a new user API client.
func New(transport runtime.ClientTransport, formats strfmt.Registry) ClientService {
return &Client{transport: transport, formats: formats}
}
/*
Client for user API
*/
type Client struct {
transport runtime.ClientTransport
formats strfmt.Registry
}
// ClientOption is the option for Client methods
type ClientOption func(*runtime.ClientOperation)
// ClientService is the interface for Client methods
type ClientService interface {
GetUsers(params *GetUsersParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*GetUsersOK, error)
SetTransport(transport runtime.ClientTransport)
}
/*
GetUsers checks API key
Checks for a valid API key, and returns full user record
*/
func (a *Client) GetUsers(params *GetUsersParams, authInfo runtime.ClientAuthInfoWriter, opts ...ClientOption) (*GetUsersOK, error) {
// TODO: Validate the params before sending
if params == nil {
params = NewGetUsersParams()
}
op := &runtime.ClientOperation{
ID: "getUsers",
Method: "GET",
PathPattern: "/users",
ProducesMediaTypes: []string{"application/json"},
ConsumesMediaTypes: []string{"application/json"},
Schemes: []string{"http"},
Params: params,
Reader: &GetUsersReader{formats: a.formats},
AuthInfo: authInfo,
Context: params.Context,
Client: params.HTTPClient,
}
for _, opt := range opts {
opt(op)
}
result, err := a.transport.Submit(op)
if err != nil {
return nil, err
}
success, ok := result.(*GetUsersOK)
if ok {
return success, nil
}
// unexpected success response
// safeguard: normally, absent a default response, unknown success responses return an error above: so this is a codegen issue
msg := fmt.Sprintf("unexpected success response for getUsers: API contract not enforced by server. Client expected to get an error, but got: %T", result)
panic(msg)
}
// SetTransport changes the transport on the client
func (a *Client) SetTransport(transport runtime.ClientTransport) {
a.transport = transport
}

View File

@ -0,0 +1,72 @@
// Code generated by go-swagger; DO NOT EDIT.
// (c) 2012-2020 by Taxnexus, Inc.
// All rights reserved worldwide.
// Proprietary product; unlicensed use is not allowed
package auth_models
// This file was generated by the swagger tool.
// Editing this file might prove futile when you re-run the swagger generate command
import (
"context"
"github.com/go-openapi/strfmt"
"github.com/go-openapi/swag"
)
// Address address
//
// swagger:model Address
type Address struct {
// City
City string `json:"City,omitempty"`
// Country full name
Country string `json:"Country,omitempty"`
// Country Code
CountryCode string `json:"CountryCode,omitempty"`
// Postal Code
PostalCode string `json:"PostalCode,omitempty"`
// State full name
State string `json:"State,omitempty"`
// State Code
StateCode string `json:"StateCode,omitempty"`
// Street number and name
Street string `json:"Street,omitempty"`
}
// Validate validates this address
func (m *Address) Validate(formats strfmt.Registry) error {
return nil
}
// ContextValidate validates this address based on context it is used
func (m *Address) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
return nil
}
// MarshalBinary interface implementation
func (m *Address) MarshalBinary() ([]byte, error) {
if m == nil {
return nil, nil
}
return swag.WriteJSON(m)
}
// UnmarshalBinary interface implementation
func (m *Address) UnmarshalBinary(b []byte) error {
var res Address
if err := swag.ReadJSON(b, &res); err != nil {
return err
}
*m = res
return nil
}

View File

@ -0,0 +1,60 @@
// Code generated by go-swagger; DO NOT EDIT.
// (c) 2012-2020 by Taxnexus, Inc.
// All rights reserved worldwide.
// Proprietary product; unlicensed use is not allowed
package auth_models
// This file was generated by the swagger tool.
// Editing this file might prove futile when you re-run the swagger generate command
import (
"context"
"github.com/go-openapi/strfmt"
"github.com/go-openapi/swag"
)
// Error error
//
// swagger:model Error
type Error struct {
// code
Code int32 `json:"Code,omitempty"`
// fields
Fields string `json:"Fields,omitempty"`
// message
Message string `json:"Message,omitempty"`
}
// Validate validates this error
func (m *Error) Validate(formats strfmt.Registry) error {
return nil
}
// ContextValidate validates this error based on context it is used
func (m *Error) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
return nil
}
// MarshalBinary interface implementation
func (m *Error) MarshalBinary() ([]byte, error) {
if m == nil {
return nil, nil
}
return swag.WriteJSON(m)
}
// UnmarshalBinary interface implementation
func (m *Error) UnmarshalBinary(b []byte) error {
var res Error
if err := swag.ReadJSON(b, &res); err != nil {
return err
}
*m = res
return nil
}

View File

@ -0,0 +1,84 @@
// Code generated by go-swagger; DO NOT EDIT.
// (c) 2012-2020 by Taxnexus, Inc.
// All rights reserved worldwide.
// Proprietary product; unlicensed use is not allowed
package auth_models
// This file was generated by the swagger tool.
// Editing this file might prove futile when you re-run the swagger generate command
import (
"context"
"github.com/go-openapi/strfmt"
"github.com/go-openapi/swag"
)
// ResponseMeta response meta
//
// swagger:model ResponseMeta
type ResponseMeta struct {
// Microservice Contact Info
Contact string `json:"Contact,omitempty"`
// Copyright Info
Copyright string `json:"Copyright,omitempty"`
// Account Number used for recording transactions
ExternalAccount string `json:"ExternalAccount,omitempty"`
// License Information and Restrictions
License string `json:"License,omitempty"`
// Operation ID
OperationID string `json:"OperationID,omitempty"`
// Request IP Address
RequestIP string `json:"RequestIP,omitempty"`
// Request Type
RequestType string `json:"RequestType,omitempty"`
// Request URL
RequestURL string `json:"RequestURL,omitempty"`
// Data Server Info
ServerInfo string `json:"ServerInfo,omitempty"`
// Data Server Response Time (ms)
ServerResponseTime string `json:"ServerResponseTime,omitempty"`
// Backend Server Timestamp
ServerTimestamp string `json:"ServerTimestamp,omitempty"`
}
// Validate validates this response meta
func (m *ResponseMeta) Validate(formats strfmt.Registry) error {
return nil
}
// ContextValidate validates this response meta based on context it is used
func (m *ResponseMeta) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
return nil
}
// MarshalBinary interface implementation
func (m *ResponseMeta) MarshalBinary() ([]byte, error) {
if m == nil {
return nil, nil
}
return swag.WriteJSON(m)
}
// UnmarshalBinary interface implementation
func (m *ResponseMeta) UnmarshalBinary(b []byte) error {
var res ResponseMeta
if err := swag.ReadJSON(b, &res); err != nil {
return err
}
*m = res
return nil
}

View File

@ -0,0 +1,99 @@
// Code generated by go-swagger; DO NOT EDIT.
// (c) 2012-2020 by Taxnexus, Inc.
// All rights reserved worldwide.
// Proprietary product; unlicensed use is not allowed
package auth_models
// This file was generated by the swagger tool.
// Editing this file might prove futile when you re-run the swagger generate command
import (
"context"
"github.com/go-openapi/strfmt"
"github.com/go-openapi/swag"
)
// TenantUser Relationship object that connects users to a tenant
//
// swagger:model TenantUser
type TenantUser struct {
// The makeTenantUser access level for this User
AccessLevel string `json:"AccessLevel,omitempty"`
// Account ID
AccountID string `json:"AccountID,omitempty"`
// Auth0 User ID
Auth0UserID string `json:"Auth0UserID,omitempty"`
// Account Name
CompanyName string `json:"CompanyName,omitempty"`
// Contact ID
ContactID string `json:"ContactID,omitempty"`
// Account
ExternalAccount string `json:"ExternalAccount,omitempty"`
// Tenant active?
TenantActive bool `json:"TenantActive,omitempty"`
// The Tenant ID
TenantID string `json:"TenantID,omitempty"`
// Tenant Name
TenantName string `json:"TenantName,omitempty"`
// Tenant Status
TenantStatus string `json:"TenantStatus,omitempty"`
// Tenant type
TenantType string `json:"TenantType,omitempty"`
// Tenant Version
TenantVersion string `json:"TenantVersion,omitempty"`
// User Email Address
UserEmail string `json:"UserEmail,omitempty"`
// User Full Name
UserFullName string `json:"UserFullName,omitempty"`
// The User ID
UserID string `json:"UserID,omitempty"`
// Username
Username string `json:"Username,omitempty"`
}
// Validate validates this tenant user
func (m *TenantUser) Validate(formats strfmt.Registry) error {
return nil
}
// ContextValidate validates this tenant user based on context it is used
func (m *TenantUser) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
return nil
}
// MarshalBinary interface implementation
func (m *TenantUser) MarshalBinary() ([]byte, error) {
if m == nil {
return nil, nil
}
return swag.WriteJSON(m)
}
// UnmarshalBinary interface implementation
func (m *TenantUser) UnmarshalBinary(b []byte) error {
var res TenantUser
if err := swag.ReadJSON(b, &res); err != nil {
return err
}
*m = res
return nil
}

View File

@ -0,0 +1,388 @@
// Code generated by go-swagger; DO NOT EDIT.
// (c) 2012-2020 by Taxnexus, Inc.
// All rights reserved worldwide.
// Proprietary product; unlicensed use is not allowed
package auth_models
// This file was generated by the swagger tool.
// Editing this file might prove futile when you re-run the swagger generate command
import (
"context"
"strconv"
"github.com/go-openapi/errors"
"github.com/go-openapi/strfmt"
"github.com/go-openapi/swag"
)
// User user
//
// swagger:model User
type User struct {
// API Key
APIKey string `json:"APIKey,omitempty"`
// About Me
AboutMe string `json:"AboutMe,omitempty"`
// Account ID
AccountID string `json:"AccountID,omitempty"`
// address
Address *Address `json:"Address,omitempty"`
// Alias
Alias string `json:"Alias,omitempty"`
// Auth0 User Id
Auth0UserID string `json:"Auth0UserID,omitempty"`
// Nickname
CommunityNickname string `json:"CommunityNickname,omitempty"`
// Company Name
CompanyName string `json:"CompanyName,omitempty"`
// Contact
ContactID string `json:"ContactID,omitempty"`
// Created User ID
CreatedByID string `json:"CreatedByID,omitempty"`
// Date Created
CreatedDate string `json:"CreatedDate,omitempty"`
// Delegated Approver
DelegatedApproverID string `json:"DelegatedApproverID,omitempty"`
// Department
Department string `json:"Department,omitempty"`
// Division
Division string `json:"Division,omitempty"`
// Email address
Email string `json:"Email,omitempty"`
// Employee Number
EmployeeNumber string `json:"EmployeeNumber,omitempty"`
// Time day ends
EndOfDay string `json:"EndOfDay,omitempty"`
// Environment
Environment string `json:"Environment,omitempty"`
// Extension
Extension string `json:"Extension,omitempty"`
// Account
ExternalAccount string `json:"ExternalAccount,omitempty"`
// Fabric API Key
FabricAPIKey string `json:"FabricAPIKey,omitempty"`
// Fax
Fax string `json:"Fax,omitempty"`
// The first name
FirstName string `json:"FirstName,omitempty"`
// Allow Forecasting
ForecastEnabled bool `json:"ForecastEnabled,omitempty"`
// Full Photo URL
FullPhotoURL string `json:"FullPhotoURL,omitempty"`
// ID
ID string `json:"ID,omitempty"`
// Active
IsActive bool `json:"IsActive,omitempty"`
// Is the user enabled for Communities?
IsPortalEnabled bool `json:"IsPortalEnabled,omitempty"`
// Has Profile Photo
IsProphilePhotoActive bool `json:"IsProphilePhotoActive,omitempty"`
// is system controlled
IsSystemControlled bool `json:"IsSystemControlled,omitempty"`
// IP address of last login
LastIP string `json:"LastIP,omitempty"`
// Last login time
LastLogin string `json:"LastLogin,omitempty"`
// Last Modified User ID
LastModifiedByID string `json:"LastModifiedByID,omitempty"`
// Last Modified Date
LastModifiedDate string `json:"LastModifiedDate,omitempty"`
// The Last Name
LastName string `json:"LastName,omitempty"`
// Number of times user has logged in
LoginCount int64 `json:"LoginCount,omitempty"`
// Manager
ManagerID string `json:"ManagerID,omitempty"`
// Mobile
MobilePhone string `json:"MobilePhone,omitempty"`
// Name
Name string `json:"Name,omitempty"`
// Out of office message
OutOfOfficeMessage string `json:"OutOfOfficeMessage,omitempty"`
// Phone
Phone string `json:"Phone,omitempty"`
// Portal Role Level
PortalRole string `json:"PortalRole,omitempty"`
// Profile
ProfileID string `json:"ProfileID,omitempty"`
// Info Emails
ReceivesAdminEmails bool `json:"ReceivesAdminEmails,omitempty"`
// Admin Info Emails
ReceivesAdminInfoEmails bool `json:"ReceivesAdminInfoEmails,omitempty"`
// Email Sender Address
SenderEmail string `json:"SenderEmail,omitempty"`
// Email Sender Name
SenderName string `json:"SenderName,omitempty"`
// Email Signature
Signature string `json:"Signature,omitempty"`
// Small Photo URL
SmallPhotoURL string `json:"SmallPhotoURL,omitempty"`
// The time day starts
StartOfDay string `json:"StartOfDay,omitempty"`
// Tenant ID associated with this user
TenantID string `json:"TenantID,omitempty"`
// tenant users
TenantUsers []*TenantUser `json:"TenantUsers"`
// Time Zone
TimeZone string `json:"TimeZone,omitempty"`
// Title
Title string `json:"Title,omitempty"`
// Role
UserRoleID string `json:"UserRoleID,omitempty"`
// user roles
UserRoles []*UserRole `json:"UserRoles"`
// User Type
UserType string `json:"UserType,omitempty"`
// Username
Username string `json:"Username,omitempty"`
}
// Validate validates this user
func (m *User) Validate(formats strfmt.Registry) error {
var res []error
if err := m.validateAddress(formats); err != nil {
res = append(res, err)
}
if err := m.validateTenantUsers(formats); err != nil {
res = append(res, err)
}
if err := m.validateUserRoles(formats); err != nil {
res = append(res, err)
}
if len(res) > 0 {
return errors.CompositeValidationError(res...)
}
return nil
}
func (m *User) validateAddress(formats strfmt.Registry) error {
if swag.IsZero(m.Address) { // not required
return nil
}
if m.Address != nil {
if err := m.Address.Validate(formats); err != nil {
if ve, ok := err.(*errors.Validation); ok {
return ve.ValidateName("Address")
} else if ce, ok := err.(*errors.CompositeError); ok {
return ce.ValidateName("Address")
}
return err
}
}
return nil
}
func (m *User) validateTenantUsers(formats strfmt.Registry) error {
if swag.IsZero(m.TenantUsers) { // not required
return nil
}
for i := 0; i < len(m.TenantUsers); i++ {
if swag.IsZero(m.TenantUsers[i]) { // not required
continue
}
if m.TenantUsers[i] != nil {
if err := m.TenantUsers[i].Validate(formats); err != nil {
if ve, ok := err.(*errors.Validation); ok {
return ve.ValidateName("TenantUsers" + "." + strconv.Itoa(i))
} else if ce, ok := err.(*errors.CompositeError); ok {
return ce.ValidateName("TenantUsers" + "." + strconv.Itoa(i))
}
return err
}
}
}
return nil
}
func (m *User) validateUserRoles(formats strfmt.Registry) error {
if swag.IsZero(m.UserRoles) { // not required
return nil
}
for i := 0; i < len(m.UserRoles); i++ {
if swag.IsZero(m.UserRoles[i]) { // not required
continue
}
if m.UserRoles[i] != nil {
if err := m.UserRoles[i].Validate(formats); err != nil {
if ve, ok := err.(*errors.Validation); ok {
return ve.ValidateName("UserRoles" + "." + strconv.Itoa(i))
} else if ce, ok := err.(*errors.CompositeError); ok {
return ce.ValidateName("UserRoles" + "." + strconv.Itoa(i))
}
return err
}
}
}
return nil
}
// ContextValidate validate this user based on the context it is used
func (m *User) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
var res []error
if err := m.contextValidateAddress(ctx, formats); err != nil {
res = append(res, err)
}
if err := m.contextValidateTenantUsers(ctx, formats); err != nil {
res = append(res, err)
}
if err := m.contextValidateUserRoles(ctx, formats); err != nil {
res = append(res, err)
}
if len(res) > 0 {
return errors.CompositeValidationError(res...)
}
return nil
}
func (m *User) contextValidateAddress(ctx context.Context, formats strfmt.Registry) error {
if m.Address != nil {
if err := m.Address.ContextValidate(ctx, formats); err != nil {
if ve, ok := err.(*errors.Validation); ok {
return ve.ValidateName("Address")
} else if ce, ok := err.(*errors.CompositeError); ok {
return ce.ValidateName("Address")
}
return err
}
}
return nil
}
func (m *User) contextValidateTenantUsers(ctx context.Context, formats strfmt.Registry) error {
for i := 0; i < len(m.TenantUsers); i++ {
if m.TenantUsers[i] != nil {
if err := m.TenantUsers[i].ContextValidate(ctx, formats); err != nil {
if ve, ok := err.(*errors.Validation); ok {
return ve.ValidateName("TenantUsers" + "." + strconv.Itoa(i))
} else if ce, ok := err.(*errors.CompositeError); ok {
return ce.ValidateName("TenantUsers" + "." + strconv.Itoa(i))
}
return err
}
}
}
return nil
}
func (m *User) contextValidateUserRoles(ctx context.Context, formats strfmt.Registry) error {
for i := 0; i < len(m.UserRoles); i++ {
if m.UserRoles[i] != nil {
if err := m.UserRoles[i].ContextValidate(ctx, formats); err != nil {
if ve, ok := err.(*errors.Validation); ok {
return ve.ValidateName("UserRoles" + "." + strconv.Itoa(i))
} else if ce, ok := err.(*errors.CompositeError); ok {
return ce.ValidateName("UserRoles" + "." + strconv.Itoa(i))
}
return err
}
}
}
return nil
}
// MarshalBinary interface implementation
func (m *User) MarshalBinary() ([]byte, error) {
if m == nil {
return nil, nil
}
return swag.WriteJSON(m)
}
// UnmarshalBinary interface implementation
func (m *User) UnmarshalBinary(b []byte) error {
var res User
if err := swag.ReadJSON(b, &res); err != nil {
return err
}
*m = res
return nil
}

View File

@ -0,0 +1,166 @@
// Code generated by go-swagger; DO NOT EDIT.
// (c) 2012-2020 by Taxnexus, Inc.
// All rights reserved worldwide.
// Proprietary product; unlicensed use is not allowed
package auth_models
// This file was generated by the swagger tool.
// Editing this file might prove futile when you re-run the swagger generate command
import (
"context"
"strconv"
"github.com/go-openapi/errors"
"github.com/go-openapi/strfmt"
"github.com/go-openapi/swag"
)
// UserResponse An array Taxnexus user objects
//
// swagger:model UserResponse
type UserResponse struct {
// data
Data []*User `json:"Data"`
// meta
Meta *ResponseMeta `json:"Meta,omitempty"`
}
// Validate validates this user response
func (m *UserResponse) Validate(formats strfmt.Registry) error {
var res []error
if err := m.validateData(formats); err != nil {
res = append(res, err)
}
if err := m.validateMeta(formats); err != nil {
res = append(res, err)
}
if len(res) > 0 {
return errors.CompositeValidationError(res...)
}
return nil
}
func (m *UserResponse) validateData(formats strfmt.Registry) error {
if swag.IsZero(m.Data) { // not required
return nil
}
for i := 0; i < len(m.Data); i++ {
if swag.IsZero(m.Data[i]) { // not required
continue
}
if m.Data[i] != nil {
if err := m.Data[i].Validate(formats); err != nil {
if ve, ok := err.(*errors.Validation); ok {
return ve.ValidateName("Data" + "." + strconv.Itoa(i))
} else if ce, ok := err.(*errors.CompositeError); ok {
return ce.ValidateName("Data" + "." + strconv.Itoa(i))
}
return err
}
}
}
return nil
}
func (m *UserResponse) validateMeta(formats strfmt.Registry) error {
if swag.IsZero(m.Meta) { // not required
return nil
}
if m.Meta != nil {
if err := m.Meta.Validate(formats); err != nil {
if ve, ok := err.(*errors.Validation); ok {
return ve.ValidateName("Meta")
} else if ce, ok := err.(*errors.CompositeError); ok {
return ce.ValidateName("Meta")
}
return err
}
}
return nil
}
// ContextValidate validate this user response based on the context it is used
func (m *UserResponse) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
var res []error
if err := m.contextValidateData(ctx, formats); err != nil {
res = append(res, err)
}
if err := m.contextValidateMeta(ctx, formats); err != nil {
res = append(res, err)
}
if len(res) > 0 {
return errors.CompositeValidationError(res...)
}
return nil
}
func (m *UserResponse) contextValidateData(ctx context.Context, formats strfmt.Registry) error {
for i := 0; i < len(m.Data); i++ {
if m.Data[i] != nil {
if err := m.Data[i].ContextValidate(ctx, formats); err != nil {
if ve, ok := err.(*errors.Validation); ok {
return ve.ValidateName("Data" + "." + strconv.Itoa(i))
} else if ce, ok := err.(*errors.CompositeError); ok {
return ce.ValidateName("Data" + "." + strconv.Itoa(i))
}
return err
}
}
}
return nil
}
func (m *UserResponse) contextValidateMeta(ctx context.Context, formats strfmt.Registry) error {
if m.Meta != nil {
if err := m.Meta.ContextValidate(ctx, formats); err != nil {
if ve, ok := err.(*errors.Validation); ok {
return ve.ValidateName("Meta")
} else if ce, ok := err.(*errors.CompositeError); ok {
return ce.ValidateName("Meta")
}
return err
}
}
return nil
}
// MarshalBinary interface implementation
func (m *UserResponse) MarshalBinary() ([]byte, error) {
if m == nil {
return nil, nil
}
return swag.WriteJSON(m)
}
// UnmarshalBinary interface implementation
func (m *UserResponse) UnmarshalBinary(b []byte) error {
var res UserResponse
if err := swag.ReadJSON(b, &res); err != nil {
return err
}
*m = res
return nil
}

View File

@ -0,0 +1,90 @@
// Code generated by go-swagger; DO NOT EDIT.
// (c) 2012-2020 by Taxnexus, Inc.
// All rights reserved worldwide.
// Proprietary product; unlicensed use is not allowed
package auth_models
// This file was generated by the swagger tool.
// Editing this file might prove futile when you re-run the swagger generate command
import (
"context"
"github.com/go-openapi/strfmt"
"github.com/go-openapi/swag"
)
// UserRole Relationship object that connects user to a role
//
// swagger:model UserRole
type UserRole struct {
// Account Id
AccountID string `json:"AccountID,omitempty"`
// Linked role ID
Auth0RoleID string `json:"Auth0RoleID,omitempty"`
// Auth0 User ID
Auth0UserID string `json:"Auth0UserID,omitempty"`
// Company Name
CompanyName string `json:"CompanyName,omitempty"`
// Contact ID
ContactID string `json:"ContactID,omitempty"`
// Account Number
ExternalAccount string `json:"ExternalAccount,omitempty"`
// Role description
RoleDescription string `json:"RoleDescription,omitempty"`
// The Role ID
RoleID string `json:"RoleID,omitempty"`
// Role Name
RoleName string `json:"RoleName,omitempty"`
// User Email Address
UserEmail string `json:"UserEmail,omitempty"`
// User Full Name
UserFullName string `json:"UserFullName,omitempty"`
// The User ID
UserID string `json:"UserID,omitempty"`
// Username
Username string `json:"Username,omitempty"`
}
// Validate validates this user role
func (m *UserRole) Validate(formats strfmt.Registry) error {
return nil
}
// ContextValidate validates this user role based on context it is used
func (m *UserRole) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
return nil
}
// MarshalBinary interface implementation
func (m *UserRole) MarshalBinary() ([]byte, error) {
if m == nil {
return nil, nil
}
return swag.WriteJSON(m)
}
// UnmarshalBinary interface implementation
func (m *UserRole) UnmarshalBinary(b []byte) error {
var res UserRole
if err := swag.ReadJSON(b, &res); err != nil {
return err
}
*m = res
return nil
}

20
app/address.go Normal file
View File

@ -0,0 +1,20 @@
package app
// Address address struct
type Address struct {
City string
Country string
CountryCode string
PostalCode string
State string
StateCode string
Street string
}
// ToString returns the full address in a string
func (obj *Address) ToString() string {
return obj.Street + " " +
obj.City + " " +
obj.State + " " +
obj.PostalCode
}

39
app/auth.go Normal file
View File

@ -0,0 +1,39 @@
package app
import (
"code.tnxs.net/vernonkeenan/lib/api/auth/auth_client/user"
"code.tnxs.net/vernonkeenan/lib/api/auth/auth_models"
httptransport "github.com/go-openapi/runtime/client"
)
// CheckAPIUser authenticates a User with the auth service
//
// When called, ChechAPIUser assumes there is an "auth" service account in the
// app configuration file.
//
func CheckAPIUser(token *string) (*User, error) {
sugar.Debug("app.CheckAPIUser: 📥")
if authUser == nil {
authUser = &User{
APIKey: GetServiceAccount("auth").APIKey,
Auth: httptransport.APIKeyAuth(
"X-API-Key",
"header",
GetServiceAccount("auth").APIKey,
),
}
}
params := user.NewGetUsersParams()
params.Apikey = token
response, err := authClient.User.GetUsers(params, authUser.Auth)
if err != nil {
sugar.Warnf("app.CheckAPIUser: ❗ Access attempt with invalid API key: %s", *token)
return nil, err
}
var obj *auth_models.User
for _, itm := range response.Payload.Data { // single iteration execution
obj = itm
}
sugar.Debugf("app.CheckAPIUser: 📤 👍 ID = %s, Name = %s", obj.ID, obj.Name)
return MarshalAuthUserToSwagger(obj), nil
}

237
app/config.go Normal file
View File

@ -0,0 +1,237 @@
package app
import (
"time"
"code.tnxs.net/vernonkeenan/lib/app/logger"
"go.uber.org/zap/zapcore"
)
// Worker describes how many service workers to launch
type Worker struct {
ChannelSize int64 `mapstructure:"channel_size,omitempty"`
WorkerCount int `mapstructure:"worker_count,omitempty"`
}
// CacheSize describes how to chunkify resources
type CacheSize struct {
Increment int64
}
// Metrics defines the if and where to collect data
type Metrics struct {
Address string `mapstructure:"address,omitempty"`
Enabled bool `mapstructure:"enabled,omitempty"`
}
// Endpoint describes a web URL as a service endpoint
type Endpoint struct {
BasePath string `mapstructure:"base_path,omitempty"`
Host string `mapstructure:"host,omitempty"`
Scheme string `mapstructure:"scheme,omitempty"`
}
type Email struct {
FromAddress string `mapstructure:"from_address,omitempty"`
FromName string `mapstructure:"from_name,omitempty"`
ServiceProvider string `mapstructure:"service_provider,omitempty"`
SMTPHost string `mapstructure:"smtp_host,omitempty"`
SMTPPort string `mapstructure:"smtp_port,omitempty"`
SMTPPassword string `mapstructure:"smtp_password,omitempty"`
SMTPUsername string `mapstructure:"smtp_username,omitempty"`
}
// Chunk defines cache chunk size
type Chunk struct {
size int32 `mapstructure:"size,omitempty"`
}
// ServiceAccount defines and external service
type ServiceAccount struct {
APIKey string `mapstructure:"api_key,omitempty"`
ApplicationName string `mapstructure:"application_name,omitempty"`
AuthenticationType string `mapstructure:"authentication_type,omitempty"`
BackendID string `mapstructure:"backend_id,omitempty"`
ClientID string `mapstructure:"client_id,omitempty"`
ClientSecret string `mapstructure:"client_secret,omitempty"`
DSN string `mapstructure:"dsn,omitempty"`
Endpoint Endpoint `mapstructure:"endpoint,omitempty"`
Password string `mapstructure:"password,omitempty"`
Production bool `mapstructure:"production,omitempty"`
SecurityToken string `mapstructure:"security_token,omitempty"`
Credentials string `mapstructure:"credentials,omitempty"`
Timeout time.Duration `mapstructure:"timeout,omitempty"`
Type string `mapstructure:"type,omitempty"`
Username string `mapstructure:"username,omitempty"`
Vendor string `mapstructure:"vendor,omitempty"`
}
// Configuration defines the config struct
type Configuration struct {
AppName string `mapstructure:"app_name,omitempty"`
BackendID string `mapstructure:"backend_id,omitempty"`
BuildEnv string `mapstructure:"build_env,omitempty"`
CacheSizes map[string]CacheSize `mapstructure:"cache_sizes,omitempty"`
ClusterID string `mapstructure:"cluster_id,omitempty"`
Chunks map[string]Chunk `mapstructure:"chunks,omitempty"`
DBMS string `mapstructure:"dbms,omitempty"`
DBMSHost string `mapstructure:"dbms_host,omitempty"`
DBMSName string `mapstructure:"dbms_name,omitempty"`
DBMSPassword string `mapstructure:"dbms_password,omitempty"`
DBMSUsername string `mapstructure:"dbms_username,omitempty"`
DSN string `mapstructure:"dsn,omitempty"`
Email map[string]Email `mapstructure:"email,omitempty"`
Endpoint Endpoint `mapstructure:"endpoint,omitempty"`
Environment string `mapstructure:"environment,omitempty"`
GelfURI string `mapstructure:"gelf_uri,omitempty"`
GitHubOrgName string `mapstructure:"git_hub_org_name,omitempty"`
LogLevel int `mapstructure:"log_level,omitempty"`
Metrics Metrics `mapstructure:"metrics,omitempty"`
KafkaServer string `mapstructure:"kafka_server,omitempty"`
PDFRenderEngine string `mapstructure:"pdf_render_engine,omitempty"`
RegistryPriv string `mapstructure:"registry_priv,omitempty"`
RegistryPublic string `mapstructure:"registry_public,omitempty"`
RepoName string `mapstructure:"repo_name,omitempty"`
ServiceAccounts map[string]ServiceAccount `mapstructure:"service_accounts,omitempty"`
ShutdownTimeout time.Duration `mapstructure:"shutdown_timeout,omitempty"`
Version string `mapstructure:"version,omitempty"`
Workers map[string]Worker `mapstructure:"workers,omitempty"`
}
// GetCacheSize returns the named cache size
func GetCacheSize(name string) int64 {
obj, ok := config.CacheSizes[name]
if ok {
return obj.Increment
}
sugar.Warnf("app.GetCacheSize: unknown cache size identifier: %s", name)
return 0
}
// GetPDFRenderEngine returns a config file parameter
func GetPDFRenderEngine() string {
return config.PDFRenderEngine
}
// GetKafkaServer returns a config file parameter
func GetKafkaServer() string {
if config.KafkaServer != "" {
return config.KafkaServer
}
return "nats.fabric.tnxs.net"
}
// GetChunkSize returns a config file parameter
func GetChunkSize(chunkName string) int {
obj, ok := config.Chunks[chunkName]
if ok {
return int(obj.size)
}
return 0
}
// GetMetricsAddress return the metrics Address value
func GetMetricsAddress() string {
return config.Metrics.Address
}
// IsMetrics returns TRUE if metrics enabled
func IsMetrics() bool {
return config.Metrics.Enabled
}
// GetWorker returns the named worker record
func GetWorker(name string) *Worker {
worker, ok := config.Workers[name]
if ok {
return &worker
}
return nil
}
// GetEmail returns the named email record
func GetEmail(name string) *Email {
email, ok := config.Email[name]
if ok {
return &email
}
return nil
}
// GetServiceAccount returns the named service account struct
func GetServiceAccount(name string) *ServiceAccount {
serviceaccount, ok := config.ServiceAccounts[name]
if ok {
return &serviceaccount
}
sugar.Errorf("app.config: 💣⛔ unknown service account: %s", name)
return nil
}
// GetDBMSHost returns the parameter
func GetDBMSHost() string {
return config.DBMSHost
}
// GetDBMSName returns the parameter
func GetDBMSName() string {
return config.DBMSName
}
// GetDBMSPassword returns the parameter
func GetDBMSPassword() string {
return config.DBMSPassword
}
// GetDBMSUsername returns the parameter
func GetDBMSUsername() string {
return config.DBMSUsername
}
// GetAppName retrieves the Taxnexus App Name for this microservice
func GetAppName() string {
return config.AppName
}
// GetEnvironment retrieves the current runtime environment
func GetEnvironment() string {
return config.Environment
}
// GetBackendID retrieves the backend ID
func GetBackendID() string {
return config.BackendID
}
// GetClusterID retrieves the cluster ID
func GetClusterID() string {
return config.ClusterID
}
// GetDSN retrieves the Taxnexus database DSN for this microservice
func GetDSN() string {
return config.DSN
}
// GetDBMS retrieves the DBMS string
func GetDBMS() string {
return config.DBMS
}
// GetLogLevel returns the Log Level
func GetLogLevel() zapcore.Level {
switch config.LogLevel {
case int(logger.DebugLevel):
return logger.DebugLevel
case int(logger.InfoLevel):
return logger.InfoLevel
case int(logger.WarnLevel):
return logger.WarnLevel
case int(logger.ErrorLevel):
return logger.ErrorLevel
case int(logger.PanicLevel):
return logger.PanicLevel
default:
return logger.DebugLevel
}
}

26
app/force.go Normal file
View File

@ -0,0 +1,26 @@
package app
import (
"github.com/taxnexus/go-force/force"
)
// InitForce creates a salesforce connection using serviceAccountName
func InitForce(serviceAccountName string) *force.API {
sugar.Infof("app.initForce: 📥 %s", serviceAccountName)
acct := GetServiceAccount(serviceAccountName)
theForce, err := force.Create(
"v45.0",
acct.ClientID,
acct.ClientSecret,
acct.Username,
acct.Password,
acct.SecurityToken,
"production",
)
if err != nil {
sugar.Errorf("app.InitForce: salesforce error: %s", err.Error())
return nil
}
sugar.Info("app.InitForce: 👍 📤")
return theForce
}

43
app/logger/logger.go Normal file
View File

@ -0,0 +1,43 @@
// Package logger wraps an external logging package
package logger
import (
"log"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
type logger = zap.SugaredLogger
// DebugLevel is exported (5)
var DebugLevel = zapcore.DebugLevel
// InfoLevel is exported (4)
var InfoLevel = zapcore.InfoLevel
// WarnLevel is exported (3)
var WarnLevel = zapcore.WarnLevel
// ErrorLevel is exported (2)
var ErrorLevel = zapcore.ErrorLevel
// PanicLevel is exported (1)
var PanicLevel = zapcore.PanicLevel
// New creates a new logger and returns it
func New(level zapcore.Level) *logger {
var theLogger *zap.Logger
var err error
if level == zapcore.DebugLevel {
theLogger, err = zap.NewDevelopment()
} else {
theLogger, err = zap.NewProduction()
}
if err != nil {
log.Fatal("logger.New: 💣 ⛔ zap logger init fail")
}
// theLogger.SetLevel
defer theLogger.Sync() //nolint:errcheck // it's defered
return theLogger.Sugar()
}

29
app/mysql.go Normal file
View File

@ -0,0 +1,29 @@
package app
import (
"database/sql"
// need this for SQL
_ "github.com/go-sql-driver/mysql"
)
// MyDB is the MySQL handler variable
var MyDB *sql.DB
// InitDB initializes the MySQL database using DSN information from the config file
//
func InitDB() {
var db *sql.DB
var err error
if GetDBMS() != "mysql" {
sugar.Fatalf("app.InitDB: 💣 ⛔ unknown DBMS: %s", GetDBMS())
return
}
db, err = sql.Open("mysql", GetDSN())
if err != nil {
sugar.Fatalf("app.InitDB: 💣 ⛔ Can't log on to DBMS host: %w", err)
return
}
MyDB = db
sugar.Debugf("app.InitDB: 👍 📤 %s", GetDBMS())
}

67
app/prometheus.go Normal file
View File

@ -0,0 +1,67 @@
package app
import (
"fmt"
"net/http"
"time"
"github.com/prometheus/client_golang/prometheus"
"github.com/rs/cors"
)
var (
namespace = "collage"
counter = prometheus.NewCounterVec(prometheus.CounterOpts{
Namespace: namespace,
Name: "endpoint_request_count",
Help: "collage request count.",
}, []string{"app", "name", "method", "state"})
histogram = prometheus.NewHistogramVec(prometheus.HistogramOpts{
Namespace: namespace,
Name: "endpoint_duration_seconds",
Help: "Time taken to execute endpoint.",
}, []string{"app", "name", "method", "status"})
)
type metricResponseWriter struct {
http.ResponseWriter
statusCode int
}
func newMetricResponseWriter(w http.ResponseWriter) *metricResponseWriter {
return &metricResponseWriter{w, http.StatusOK}
}
func (lrw *metricResponseWriter) WriteHeader(code int) {
lrw.statusCode = code
lrw.ResponseWriter.WriteHeader(code)
}
// SetupPrometheusHandler enable CORS, handler metrics
func SetupPrometheusHandler(handler http.Handler, app string) http.Handler {
sugar.Debug("app.SetupPrometheusHandler: 📥")
handleCORS := cors.AllowAll().Handler
h := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
start := time.Now()
lrw := newMetricResponseWriter(w)
handler.ServeHTTP(lrw, r)
statusCode := lrw.statusCode
duration := time.Since(start)
histogram.WithLabelValues(app, r.URL.String(), r.Method, fmt.Sprintf("%d", statusCode)).Observe(duration.Seconds())
counter.WithLabelValues(app, r.URL.String(), r.Method, fmt.Sprintf("%d", statusCode)).Inc()
})
err := prometheus.Register(histogram)
if err != nil {
sugar.Errorf("app.SetupPrometheusHandler: 💣 ⛔ %s", err.Error())
return nil
}
err = prometheus.Register(counter)
if err != nil {
sugar.Errorf("app.SetupPrometheusHandler: 💣 ⛔ %s", err.Error())
return nil
}
sugar.Info("app.SetupPrometheusHandler: 👍 📤")
return handleCORS(h)
}

50
app/root.go Normal file
View File

@ -0,0 +1,50 @@
// Package app is a utility package
package app
import (
"strings"
"code.tnxs.net/vernonkeenan/lib/api/auth/auth_client"
"code.tnxs.net/vernonkeenan/lib/app/logger"
"github.com/spf13/viper"
"github.com/taxnexus/go-force/force"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
// const dateTimeFormat = "2006-01-02T15:04:05-0800"
var sugar *zap.SugaredLogger
var config = Configuration{}
var appViper = viper.New()
var configured = false
var authClient = auth_client.Default
var authUser *User
// TheForce exports the salesforce interface
var TheForce *force.API
// InitConfig exports the config initialization func
func InitConfig(systemName string, initalLogLevel zapcore.Level) {
if configured {
return
}
sugar = logger.New(initalLogLevel)
sugar.Infof("app.InitConfig: 📥 %s", systemName)
appViper.SetConfigType("yaml")
appViper.SetConfigName(systemName)
appViper.AddConfigPath("/etc/vernonkeenan")
appViper.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
appViper.SetEnvPrefix("vernonkeenan")
appViper.AutomaticEnv() // read in environment variables that match
err := appViper.ReadInConfig()
if err != nil {
sugar.Fatalf("app.InitConfig: 💣 ⛔ can't read system config: %w", err)
}
err = appViper.Unmarshal(&config)
if err != nil {
sugar.Fatalf("app.InitConfig: 💣 ⛔ can't unmarshal system config: %w", err)
}
sugar = logger.New(GetLogLevel())
sugar.Debugf("app.InitConfig: 👍 📤 serviceAccounts: %d", len(config.ServiceAccounts))
configured = true
}

157
app/service-helpers.go Normal file
View File

@ -0,0 +1,157 @@
package app
import (
"database/sql"
"fmt"
"reflect"
"time"
)
const dateFormat = "2006-01-02"
const dateTimeFormat = "2006-01-02T15:04:05-0800"
// String takes a string and returns a pointer to the string.
func String(s string) *string {
return &s
}
// Bool takes a bool and returns a pointer to the bool.
func Bool(b bool) *bool {
return &b
}
// Int64 takes an int64 and returns a pointer to the int64.
func Int64(i int64) *int64 {
return &i
}
// Int takes an int and returns a pointer to the int.
func Int(i int) *int {
return &i
}
// Time takes a time.Time and returns a pointer to the time.Time.
func Time(t time.Time) *time.Time {
return &t
}
// Float64 takes a float64 and returns a pointer to the float64.
func Float64(f float64) *float64 {
return &f
}
// FieldsAndValues is a struct that holds field names and corresponding values for an object.
type FieldsAndValues struct {
fieldNames []string
fieldValues []interface{}
}
// GetFieldsAndValues takes an object and returns a pointer to a FieldsAndValues struct
// containing the field names and corresponding values for each non-zero field,
// excluding the "ID" field.
func GetFieldsAndValues(obj interface{}) *FieldsAndValues {
result := &FieldsAndValues{
fieldNames: []string{},
fieldValues: []interface{}{},
}
v := reflect.ValueOf(obj).Elem()
t := v.Type()
for i := 0; i < t.NumField(); i++ {
field := t.Field(i)
fieldValue := v.Field(i)
if field.Name != "ID" {
if !IsZero(fieldValue) {
fmt.Printf("DEBUG: Adding field %s with value %v\n", field.Name, fieldValue.Interface())
result.fieldNames = append(result.fieldNames, field.Name)
result.fieldValues = append(result.fieldValues, fieldValue.Interface())
}
}
}
return result
}
// IsZero checks if a value is zero or considered zero-like (e.g., empty arrays or slices, nil pointers).
// Note that strings, including empty strings, are treated as non-zero values.
func IsZero(v reflect.Value) bool {
switch v.Kind() {
case reflect.String:
return false // Treat strings, including empty strings, as non-zero values
case reflect.Struct:
for i := 0; i < v.NumField(); i++ {
if !IsZero(v.Field(i)) {
return false
}
}
return true
case reflect.Ptr, reflect.Interface:
if v.IsNil() {
return true
}
return IsZero(v.Elem())
case reflect.Array, reflect.Slice:
return v.Len() == 0
default:
z := reflect.Zero(v.Type())
return v.Interface() == z.Interface()
}
}
// SqlDateToString takes a pointer to a sql.NullTime object and returns a pointer to a string
// representing the date in dateTimeFormat if the sql.NullTime object is valid, otherwise returns nil.
func SqlDateToString(d *sql.NullTime) *string {
if d == nil || !d.Valid {
return nil
}
dateStr := d.Time.Format(dateTimeFormat)
return &dateStr
}
// StringToSqlDate takes a pointer to a string representing a date and returns a pointer to
// a sql.NullTime object containing the parsed date if the string is not nil, otherwise returns nil.
func StringToSqlDate(s *string) *sql.NullTime {
if s == nil {
return nil
}
parsedTime, err := ParseDateTime(s)
if err != nil {
return nil
}
return &sql.NullTime{
Time: *parsedTime,
Valid: true,
}
}
// ParseDateTime takes a pointer to a string representing a date and returns a pointer to
// a time.Time object containing the parsed date if the string is in one of the supported formats.
// If the string is nil or not in a supported format, returns an error.
func ParseDateTime(dateStr *string) (*time.Time, error) {
if dateStr == nil {
return nil, fmt.Errorf("✋members.parseDateTime: dateStr is null")
}
loc, _ := time.LoadLocation("Local")
//
formats := []string{dateFormat, dateTimeFormat, time.RFC1123, time.RFC3339}
var parsedTime *time.Time
for _, format := range formats {
tm, err := time.ParseInLocation(format, *dateStr, loc)
if err == nil {
parsedTime = &tm
break
}
}
if parsedTime == nil {
return nil, fmt.Errorf("✋parseDateTime: input string doesn't match any of the expected formats")
}
return parsedTime, nil
}

31
app/tenantuser.go Normal file
View File

@ -0,0 +1,31 @@
package app
import "code.tnxs.net/vernonkeenan/lib/api/members/members_models"
// TenantUserActivityWrapper wraps the object with workflow params
type TenantUserActivityWrapper struct {
Obj members_models.TenantUser
APIKey string
SagaID string
SagaType string
}
// TenantUser is a first class object type
type TenantUser struct {
AccessLevel string
AccountID string
Auth0UserID string
CompanyName string
ContactID string
ExternalAccount string
TenantActive bool
TenantID string
TenantName string
TenantStatus string
TenantType string
TenantVersion string
UserEmail string
UserFullName string
UserID string
Username string
}

134
app/user-helpers.go Normal file
View File

@ -0,0 +1,134 @@
package app
import (
"code.tnxs.net/vernonkeenan/lib/api/auth/auth_models"
httptransport "github.com/go-openapi/runtime/client"
)
// MarshalAuthUserToSwagger is a helper function
func MarshalAuthUserToSwagger(obj *auth_models.User) *User {
var address *Address
if obj.Address != nil {
address = &Address{
City: obj.Address.City,
Country: obj.Address.Country,
CountryCode: obj.Address.CountryCode,
PostalCode: obj.Address.PostalCode,
State: obj.Address.State,
StateCode: obj.Address.StateCode,
Street: obj.Address.Street,
}
}
var userRoles []*UserRole
if obj.UserRoles != nil {
userRoles = []*UserRole{}
for _, itm := range obj.UserRoles {
userRoles = append(userRoles, reMarshalUserRole(itm))
}
}
var tenantUsers []*TenantUser
if obj.TenantUsers != nil {
tenantUsers = []*TenantUser{}
for _, itm := range obj.TenantUsers {
tenantUsers = append(tenantUsers, reMarshalTenantUser(itm))
}
}
return &User{
ID: obj.ID,
AboutMe: obj.AboutMe,
AccountID: obj.AccountID,
Address: address,
Alias: obj.Alias,
APIKey: obj.APIKey,
Auth: httptransport.APIKeyAuth("X-API-Key", "header", obj.APIKey),
Auth0UserID: obj.Auth0UserID,
CommunityNickname: obj.CommunityNickname,
CompanyName: obj.CompanyName,
ContactID: obj.ContactID,
CreatedByID: obj.CreatedByID,
CreatedDate: obj.CreatedDate,
DelegatedApproverID: obj.DelegatedApproverID,
Department: obj.Department,
Division: obj.Division,
Email: obj.Email,
EmployeeNumber: obj.EmployeeNumber,
EndOfDay: obj.EndOfDay,
Environment: obj.Environment,
Extension: obj.Extension,
FabricAPIKey: obj.FabricAPIKey,
Fax: obj.Fax,
FirstName: obj.FirstName,
ForecastEnabled: obj.ForecastEnabled,
FullPhotoURL: obj.FullPhotoURL,
IsActive: obj.IsActive,
IsPortalEnabled: obj.IsPortalEnabled,
IsProfilePhotoActive: obj.IsProphilePhotoActive,
IsSystemControlled: obj.IsSystemControlled,
LastIP: obj.LastIP,
LastLogin: obj.LastLogin,
LastModifiedByID: obj.LastModifiedByID,
LastModifiedDate: obj.LastModifiedDate,
LastName: obj.LastName,
LoginCount: obj.LoginCount,
ManagerID: obj.ManagerID,
MobilePhone: obj.MobilePhone,
Name: obj.Name,
OutOfOfficeMessage: obj.OutOfOfficeMessage,
Phone: obj.Phone,
PortalRole: obj.PortalRole,
ProfileID: obj.ProfileID,
ReceivesAdminEmails: obj.ReceivesAdminEmails,
ReceivesAdminInfoEmails: obj.ReceivesAdminInfoEmails,
SenderEmail: obj.SenderEmail,
SenderName: obj.SenderName,
Signature: obj.Signature,
SmallPhotoURL: obj.SmallPhotoURL,
StartOfDay: obj.StartOfDay,
ExternalAccount: obj.ExternalAccount,
TenantID: obj.TenantID,
TenantUsers: tenantUsers,
TimeZone: obj.TimeZone,
Title: obj.Title,
Username: obj.Username,
UserRoleID: obj.UserRoleID,
UserRoles: userRoles,
UserType: obj.UserType,
}
}
func reMarshalUserRole(s *auth_models.UserRole) *UserRole {
return &UserRole{
AccountID: s.AccountID,
Auth0RoleID: s.Auth0RoleID,
Auth0UserID: s.Auth0UserID,
CompanyName: s.CompanyName,
ContactID: s.ContactID,
RoleDescription: s.RoleDescription,
RoleID: s.RoleID,
RoleName: s.RoleName,
ExternalAccount: s.ExternalAccount,
UserEmail: s.UserEmail,
UserFullName: s.UserFullName,
UserID: s.UserID,
Username: s.Username,
}
}
func reMarshalTenantUser(s *auth_models.TenantUser) *TenantUser {
return &TenantUser{
AccessLevel: s.AccessLevel,
AccountID: s.AccountID,
Auth0UserID: s.Auth0UserID,
CompanyName: s.CompanyName,
ContactID: s.ContactID,
ExternalAccount: s.ExternalAccount,
TenantActive: s.TenantActive,
TenantID: s.TenantID,
TenantName: s.TenantName,
TenantStatus: s.TenantStatus,
TenantType: s.TenantType,
TenantVersion: s.TenantVersion,
UserEmail: s.UserEmail,
UserFullName: s.UserFullName,
UserID: s.UserID,
Username: s.Username,
}
}

78
app/user.go Normal file
View File

@ -0,0 +1,78 @@
package app
import (
"code.tnxs.net/vernonkeenan/lib/api/members/members_models"
"github.com/go-openapi/runtime"
)
// UserActivityWrapper wraps the object with workflow params
type UserActivityWrapper struct {
Obj members_models.User
APIKey string
SagaID string
SagaType string
}
// User is a first class object type
type User struct {
ID string
AboutMe string
AccountID string
Address *Address
Alias string
APIKey string
Auth runtime.ClientAuthInfoWriter
Auth0UserID string
CommunityNickname string
CompanyName string
ContactID string
CreatedByID string
CreatedDate string
DelegatedApproverID string
Department string
Division string
Email string
EmployeeNumber string
EndOfDay string
Environment string
Extension string
FabricAPIKey string
Fax string
FirstName string
ForecastEnabled bool
FullPhotoURL string
IsActive bool
IsPortalEnabled bool
IsProfilePhotoActive bool
IsSystemControlled bool
LastIP string
LastLogin string
LastModifiedByID string
LastModifiedDate string
LastName string
LoginCount int64
ManagerID string
MobilePhone string
Name string
OutOfOfficeMessage string
Phone string
PortalRole string
ProfileID string
ReceivesAdminEmails bool
ReceivesAdminInfoEmails bool
ReceivesInfoEmails bool
SenderEmail string
SenderName string
Signature string
SmallPhotoURL string
StartOfDay string
ExternalAccount string
TenantID string
TenantUsers []*TenantUser
TimeZone string
Title string
Username string
UserRoles []*UserRole
UserRoleID string
UserType string
}

28
app/userrole.go Normal file
View File

@ -0,0 +1,28 @@
package app
import "code.tnxs.net/vernonkeenan/lib/api/members/members_models"
// UserRoleActivityWrapper wraps the object with workflow params
type UserRoleActivityWrapper struct {
Obj members_models.UserRole
APIKey string
SagaID string
SagaType string
}
// UserRole is a first class object type
type UserRole struct {
RoleID string
UserID string
Auth0RoleID string
RoleDescription string
RoleName string
AccountID string
CompanyName string
ContactID string
UserEmail string
UserFullName string
ExternalAccount string
Username string
Auth0UserID string
}

3
build/COPYRIGHT Normal file
View File

@ -0,0 +1,3 @@
(c) 2012-2020 by Taxnexus, Inc.
All rights reserved worldwide.
Proprietary product; unlicensed use is not allowed

32
go.mod Normal file
View File

@ -0,0 +1,32 @@
module code.tnxs.net/vernonkeenan/lib
go 1.15
require (
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/go-openapi/errors v0.20.3
github.com/go-openapi/jsonreference v0.20.2 // indirect
github.com/go-openapi/loads v0.21.2 // indirect
github.com/go-openapi/runtime v0.25.0
github.com/go-openapi/spec v0.20.8 // indirect
github.com/go-openapi/strfmt v0.21.7
github.com/go-openapi/swag v0.22.3
github.com/go-openapi/validate v0.22.1
github.com/go-sql-driver/mysql v1.7.0
github.com/golang/protobuf v1.5.3 // indirect
github.com/pelletier/go-toml v1.9.5 // indirect
github.com/pelletier/go-toml/v2 v2.0.7 // indirect
github.com/prometheus/client_golang v1.14.0
github.com/prometheus/common v0.42.0 // indirect
github.com/prometheus/procfs v0.9.0 // indirect
github.com/rs/cors v1.8.3
github.com/spf13/afero v1.9.5 // indirect
github.com/spf13/viper v1.15.0
github.com/taxnexus/go-force v1.0.7
go.opentelemetry.io/otel v1.14.0 // indirect
go.uber.org/atomic v1.10.0 // indirect
go.uber.org/multierr v1.10.0 // indirect
go.uber.org/zap v1.24.0
golang.org/x/net v0.8.0 // indirect
google.golang.org/protobuf v1.30.0 // indirect
)

1528
go.sum Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,433 @@
swagger: "2.0"
info:
version: 0.3.0
title: "auth"
description: "Authentication Microservice"
termsOfService: "https://salesforcedevops.net/terms/"
contact:
email: "vern@vernonkeenan.com"
license:
name: "Proprietary - Copyright (c) 2018-2023 by Vernon Keenan"
securityDefinitions:
ApiKeyAuth:
type: "apiKey"
in: "header"
name: "X-API-Key"
security:
- ApiKeyAuth: []
schemes:
- "http"
basePath: "/v1"
host: "auth.vernonkeenan.com:8080"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
apiKeyQuery:
description: Service account or developer API key
in: query
name: apikey
type: string
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: Response with User objects
schema:
$ref: "#/definitions/UserResponse"
paths:
/users:
get:
summary: "Check API Key"
operationId: "getUsers"
description: "Checks for a valid API key, and returns full user record"
parameters:
- $ref: "#/parameters/apiKeyQuery"
tags:
- "User"
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"
definitions:
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
Error:
properties:
Code:
format: int32
type: integer
Fields:
type: string
Message:
type: string
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
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
ExternalAccount:
description: Account Number used for recording transactions
type: string
type: object
User:
properties:
AboutMe:
description: About Me
type: string
AccountID:
description: Account ID
type: string
Address:
$ref: "#/definitions/Address"
Alias:
description: Alias
type: string
APIKey:
description: API Key
type: string
Auth0UserID:
description: Auth0 User Id
type: string
CommunityNickname:
description: Nickname
type: string
CompanyName:
description: Company Name
type: string
ContactID:
description: Contact
type: string
CreatedByID:
description: Created User ID
type: string
CreatedDate:
description: Date Created
type: string
DelegatedApproverID:
description: Delegated Approver
type: string
Department:
description: Department
type: string
Division:
description: Division
type: string
Email:
description: Email address
type: string
EmployeeNumber:
description: Employee Number
type: string
EndOfDay:
description: Time day ends
type: string
Environment:
description: Environment
type: string
Extension:
description: Extension
type: string
FabricAPIKey:
description: Fabric API Key
type: string
Fax:
description: Fax
type: string
FirstName:
description: The first name
type: string
ForecastEnabled:
description: Allow Forecasting
type: boolean
FullPhotoURL:
description: Full Photo URL
type: string
ID:
description: ID
type: string
IsActive:
description: Active
type: boolean
IsPortalEnabled:
description: Is the user enabled for Communities?
type: boolean
IsProphilePhotoActive:
description: Has Profile Photo
type: boolean
IsSystemControlled:
type: boolean
LastModifiedByID:
description: Last Modified User ID
type: string
LastModifiedDate:
description: Last Modified Date
type: string
LastLogin:
description: Last login time
type: string
LastIP:
description: IP address of last login
type: string
LoginCount:
description: Number of times user has logged in
type: number
format: int64
LastName:
description: The Last Name
type: string
ManagerID:
description: Manager
type: string
MobilePhone:
description: Mobile
type: string
Name:
description: Name
type: string
OutOfOfficeMessage:
description: Out of office message
type: string
Phone:
description: Phone
type: string
PortalRole:
description: Portal Role Level
type: string
ProfileID:
description: Profile
type: string
ReceivesAdminInfoEmails:
description: Admin Info Emails
type: boolean
ReceivesAdminEmails:
description: Info Emails
type: boolean
SenderEmail:
description: Email Sender Address
type: string
SenderName:
description: Email Sender Name
type: string
Signature:
description: Email Signature
type: string
SmallPhotoURL:
description: Small Photo URL
type: string
StartOfDay:
description: The time day starts
type: string
ExternalAccount:
description: Account
type: string
TenantID:
description: Tenant ID associated with this user
type: string
TimeZone:
description: Time Zone
type: string
Title:
description: Title
type: string
Username:
description: Username
type: string
UserRoleID:
description: Role
type: string
UserType:
description: User Type
type: string
UserRoles:
items:
$ref: "#/definitions/UserRole"
type: array
TenantUsers:
items:
$ref: "#/definitions/TenantUser"
type: array
type: object
UserResponse:
description: An array Taxnexus user objects
properties:
Data:
items:
$ref: "#/definitions/User"
type: array
Meta:
$ref: "#/definitions/ResponseMeta"
type: object
UserRole:
description: Relationship object that connects user to a role
type: object
properties:
AccountID:
description: Account Id
type: string
Auth0RoleID:
description: Linked role ID
type: string
Auth0UserID:
description: Auth0 User ID
type: string
CompanyName:
description: Company Name
type: string
ContactID:
description: Contact ID
type: string
RoleDescription:
description: Role description
type: string
RoleID:
description: The Role ID
type: string
RoleName:
description: Role Name
type: string
ExternalAccount:
description: Account Number
type: string
UserEmail:
description: User Email Address
type: string
UserFullName:
description: User Full Name
type: string
UserID:
description: The User ID
type: string
Username:
description: Username
type: string
TenantUser:
description: Relationship object that connects users to a tenant
type: object
properties:
AccessLevel:
description: The makeTenantUser access level for this User
type: string
Auth0UserID:
description: Auth0 User ID
type: string
AccountID:
description: Account ID
type: string
ContactID:
description: Contact ID
type: string
CompanyName:
description: Account Name
type: string
ExternalAccount:
description: Account
type: string
TenantActive:
description: Tenant active?
type: boolean
TenantID:
description: The Tenant ID
type: string
TenantName:
description: Tenant Name
type: string
TenantStatus:
description: Tenant Status
type: string
TenantType:
description: Tenant type
type: string
TenantVersion:
description: Tenant Version
type: string
Username:
description: Username
type: string
UserEmail:
description: User Email Address
type: string
UserFullName:
description: User Full Name
type: string
UserID:
description: The User ID
type: string

View File

@ -0,0 +1,134 @@
Account:
properties:
AnnualRevenue:
description: Annual Revenue Estimate
format: double
type: number
x-nullable: true
AppExchange:
description: Salesforce AppExchange URL
type: string
x-nullable: true
Address:
$ref: "./address.yaml#/Address"
x-nullable: true
ClosedDate:
description: Closed Date
type: string
x-nullable: true
CloudRevenueTotal:
type: number
x-nullable: true
CloudType:
description: The type of cloud company
type: string
x-nullable: true
CloudYear:
description: The year company started cloud revenue
type: string
x-nullable: true
CrunchbaseURL:
description: Crunchbase URL
type: string
x-nullable: true
Description:
description: Description of the account
type: string
x-nullable: true
EIN:
type: string
x-nullable: true
Email:
description: Main Account Email
type: string
x-nullable: true
Facebook:
description: Company Facebook URL
type: string
x-nullable: true
Fax:
description: Fax number
type: string
x-nullable: true
FoundedDate:
description: Date company founded
type: string
x-nullable: true
IPODate:
description: IPO Date
type: string
x-nullable: true
Industries:
description: All Product and Service Industries
type: string
x-nullable: true
Industry:
description: Primary Industry
type: string
x-nullable: true
LinkedIn:
description: Company LinkedIn URL
type: string
x-nullable: true
Location:
description: Headquarters Location Description
type: string
x-nullable: true
Logo:
description: Company Logo URL
type: string
x-nullable: true
Name:
description: Account Name
type: string
x-nullable: true
NumberOfEmployees:
description: Employee Count Estimate
format: int64
type: number
x-nullable: true
Phone:
description: Phone
type: string
x-nullable: true
SIC:
description: SIC Code
type: string
x-nullable: true
SICDesc:
description: SIC Description
type: string
x-nullable: true
SalesforceFirst:
description: A Salesforce-First company?
type: boolean
x-nullable: true
Slug:
description: Slug
type: string
x-nullable: true
TagLine:
description: Company tagline
type: string
x-nullable: true
TickerSymbol:
description: Ticker Symbol
type: string
x-nullable: true
Twitter:
description: Twitter URL
type: string
x-nullable: true
Type:
description: Type
type: string
x-nullable: true
Website:
description: Website
type: string
x-nullable: true
YearStarted:
description: Year Started
type: string
x-nullable: true
type: object

221
swagger/defs/account.yaml Normal file
View File

@ -0,0 +1,221 @@
Account:
properties:
AccountNumber:
description: Account Number
type: string
x-nullable: true
AccountSource:
description: The marketing origin of this account
type: string
x-nullable: true
Active:
type: boolean
x-nullable: true
AnnualRevenue:
description: Annual Revenue Estimate
format: double
type: number
x-nullable: true
AppExchange:
description: Salesforce AppExchange URL
type: string
x-nullable: true
BillingAddress:
$ref: "./address.yaml#/Address"
x-nullable: true
BillingContactID:
description: Contact ID
type: string
x-nullable: true
ClosedDate:
description: Closed Date
type: string
x-nullable: true
CloudRevenueTotal:
type: number
x-nullable: true
CloudType:
description: The type of cloud company
type: string
x-nullable: true
CloudYear:
description: The year company started cloud revenue
type: string
x-nullable: true
CreatedByID:
description: Created By User ID
type: string
x-nullable: true
CreatedDate:
description: Created Date
type: string
x-nullable: true
CrunchbaseURL:
description: Crunchbase URL
type: string
x-nullable: true
Description:
description: Description of the account
type: string
x-nullable: true
EIN:
type: string
x-nullable: true
EarningsCall:
description: Earnings Call Date
type: string
x-nullable: true
Email:
description: Main Account Email
type: string
x-nullable: true
EquityFunding:
description: The amount of equity EquityFunding
type: number
x-nullable: true
Facebook:
description: Company Facebook URL
type: string
x-nullable: true
Fax:
description: Fax number
type: string
x-nullable: true
FoundedDate:
description: Date company founded
type: string
x-nullable: true
ID:
description: Account Id
type: string
IPODate:
description: IPO Date
type: string
x-nullable: true
ImageAltText:
type: string
x-nullable: true
ImageURL:
type: string
x-nullable: true
Industries:
description: Industries
type: string
x-nullable: true
Industry:
description: Industry
type: string
x-nullable: true
LastModifiedByID:
description: Last Modified By User ID
type: string
x-nullable: true
LastModifiedDate:
description: Last Modified Date
type: string
x-nullable: true
LinkedIn:
description: Company LinkedIn URL
type: string
x-nullable: true
Location:
description: Headquarters Location Description
type: string
x-nullable: true
Logo:
description: Company Logo URL
type: string
x-nullable: true
MarketCapitalization:
description: Market Capitalization
type: number
x-nullable: true
Name:
description: Account Name
type: string
x-nullable: true
NumberInvestments:
description: Number of Investments
type: number
x-nullable: true
NumberOfEmployees:
description: Employee Count Estimate
format: int64
type: number
x-nullable: true
OwnerID:
description: Account Owner User ID
type: string
x-nullable: true
Ownership:
description: Ownership
type: string
x-nullable: true
ParentID:
description: Parent Account
type: string
x-nullable: true
Phone:
description: Phone
type: string
x-nullable: true
Publish:
description: Publish this record?
type: boolean
x-nullable: true
SIC:
description: SIC Code
type: string
x-nullable: true
SICDesc:
description: SIC Description
type: string
x-nullable: true
SalesforceFirst:
description: A Salesforce-First company?
type: boolean
x-nullable: true
ShippingAddress:
$ref: "./address.yaml#/Address"
x-nullable: true
ShippingContactID:
description: Shipping Contact ID
type: string
x-nullable: true
Site:
description: Account Site
type: string
x-nullable: true
Slug:
description: Slug
type: string
x-nullable: true
TagLine:
description: Company tagline
type: string
x-nullable: true
TenantID:
description: Tenant Identifier
type: string
x-nullable: true
TickerSymbol:
description: Ticker Symbol
type: string
x-nullable: true
Twitter:
description: Twitter URL
type: string
x-nullable: true
Type:
description: Type
type: string
x-nullable: true
Website:
description: Website
type: string
x-nullable: true
YearStarted:
description: Year Started
type: string
x-nullable: true
type: object

31
swagger/defs/address.yaml Normal file
View File

@ -0,0 +1,31 @@
Address:
properties:
City:
description: City
type: string
x-nullable: true
Country:
description: Country full name
type: string
x-nullable: true
CountryCode:
description: Country Code
type: string
x-nullable: true
PostalCode:
description: Postal Code
type: string
x-nullable: true
State:
description: State full name
type: string
x-nullable: true
StateCode:
description: State Code
type: string
x-nullable: true
Street:
description: Street number and name
type: string
x-nullable: true
type: object

184
swagger/defs/asset.yaml Normal file
View File

@ -0,0 +1,184 @@
Asset:
properties:
ID:
description: Record Id
type: string
AccountID:
description: Account
type: string
x-nullable: true
Address:
$ref: "./address.yaml#/Address"
AssetLevel:
description: Asset Level
type: number
x-nullable: true
AssetProvidedByID:
description: Asset Provided By
type: string
x-nullable: true
AssetServicedByID:
description: Asset Serviced By
type: string
x-nullable: true
CompanyProductID:
description: Company Product
type: string
x-nullable: true
ConsequenceOfFailure:
description: Consequence Of Failure
type: string
x-nullable: true
ContactID:
description: Contact
type: string
x-nullable: true
CreatedByID:
description: Created By
type: string
x-nullable: true
CreatedDate:
description: Created Date
type: string
x-nullable: true
CurrentAmount:
description: Current Amount
type: number
x-nullable: true
CurrentLifecycleEndDate:
description: Current Lifecycle End Date
type: string
x-nullable: true
CurrentMrr:
description: Current Monthly Recurring Revenue
type: number
x-nullable: true
CurrentQuantity:
description: Current Quantity
type: number
x-nullable: true
Description:
description: Description
type: string
x-nullable: true
DigitalAssetStatus:
description: Digital Asset Status
type: string
x-nullable: true
ExternalIdentifier:
description: External Id
type: string
x-nullable: true
HasLifecycleManagement:
description: Has Lifecycle Management
type: boolean
x-nullable: true
InstallDate:
description: Install Date
type: string
x-nullable: true
IsCompetitorProduct:
description: Competitor Asset
type: boolean
x-nullable: true
IsInternal:
description: Internal Asset
type: boolean
x-nullable: true
LastModifiedByID:
description: Last Modified By
type: string
x-nullable: true
LastModifiedDate:
description: Last Modified Date
type: string
x-nullable: true
LocationID:
description: Location
type: string
x-nullable: true
MIMEType:
description: MIME Type
type: string
x-nullable: true
ManufactureDate:
description: Manufacture Date
type: string
x-nullable: true
Name:
description: Asset Name
type: string
x-nullable: true
ParentID:
description: Parent Asset
type: string
x-nullable: true
Price:
description: Price
type: number
x-nullable: true
Product2ID:
description: Product
type: string
x-nullable: true
ProductCode:
description: Product Code
type: string
x-nullable: true
ProductDescription:
description: Product Description
type: string
x-nullable: true
ProductFamily:
description: Product Family
type: string
x-nullable: true
PurchaseDate:
description: Purchase Date
type: string
x-nullable: true
Quantity:
description: Quantity
type: number
x-nullable: true
RootAssetID:
description: Root Asset
type: string
x-nullable: true
SerialNumber:
description: Serial Number
type: string
x-nullable: true
Status:
description: Status
type: string
x-nullable: true
StatusReason:
description: Status Reason
type: string
x-nullable: true
StockKeepingUnit:
description: Product SKU
type: string
x-nullable: true
TenantID:
description: Tenant ID
type: string
x-nullable: true
TotalLifecycleAmount:
description: Total Lifecycle Amount
type: number
x-nullable: true
Type:
description: Type
type: string
x-nullable: true
URL:
description: URL
type: string
x-nullable: true
UsageEndDate:
description: Usage End Date
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,22 @@
Attendee:
properties:
CheckinStatus:
type: integer
CreatedDate:
type: string
x-nullable: true
EventID:
type: string
x-nullable: true
ID:
type: string
LastModifiedDate:
type: string
x-nullable: true
TicketID:
type: string
x-nullable: true
UserID:
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,29 @@
Certificate:
properties:
CertificateTemplate:
type: string
x-nullable: true
CourseID:
type: string
x-nullable: true
CreatedByID:
type: string
x-nullable: true
CreatedDate:
type: string
x-nullable: true
Description:
type: string
x-nullable: true
ID:
type: string
LastModifiedByID:
type: string
x-nullable: true
LastModifiedDate:
type: string
x-nullable: true
Title:
type: string
x-nullable: true
type: object

70
swagger/defs/cluster.yaml Normal file
View File

@ -0,0 +1,70 @@
Cluster:
properties:
CreatedByID:
description: Created By
type: string
x-nullable: true
CreatedDate:
description: Created Date
type: string
x-nullable: true
Description:
description: Description
type: string
x-nullable: true
Environment:
description: Environment
type: string
x-nullable: true
Gateway:
description: Gateway
type: string
x-nullable: true
ID:
description: Record Id
type: string
IPAddress:
description: IP Address
type: string
x-nullable: true
LastModifiedByID:
description: Last Modified By
type: string
x-nullable: true
LastModifiedDate:
description: Last Modified Date
type: string
x-nullable: true
Name:
description: Cluster Name
type: string
x-nullable: true
OwnerID:
description: Owner
type: string
x-nullable: true
Ref:
description: External Reference
type: string
x-nullable: true
Status:
description: Status
type: string
x-nullable: true
Subnet:
description: Subnet
type: string
x-nullable: true
TenantID:
description: The ID of the tenant who owns this Database
type: string
x-nullable: true
Type:
description: Type
type: string
x-nullable: true
Zone:
description: Zone
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,84 @@
CompanyProduct:
description: A software product or service vended by a Company
properties:
ID:
description: Record Id
type: string
AccountID:
description: ID of the Company that owns this Product
type: string
AppExchange:
description: Salesforce AppExchange URL
type: string
x-nullable: true
CreatedByID:
description: Created By User ID
type: string
x-nullable: true
CreatedDate:
description: Created Date
type: string
x-nullable: true
Description:
description: Description of product
type: string
x-nullable: true
FullDescription:
description: Full Description of product
type: string
x-nullable: true
ImageAltText:
description: Image Alt Text
type: string
x-nullable: true
ImageURL:
description: Image URL
type: string
x-nullable: true
LastModifiedByID:
description: Last Modified By User ID
type: string
x-nullable: true
LastModifiedDate:
description: Last Modified Date
type: string
x-nullable: true
Logo:
description: Logo
type: string
x-nullable: true
Name:
description: Product Name
type: string
x-nullable: true
ProductVideoID:
description: Product Video ID
type: string
x-nullable: true
Published:
description: Published
type: boolean
x-nullable: true
SalesforceSpecific:
description: Salesforce Specific
type: boolean
x-nullable: true
Slug:
description: Slug
type: string
x-nullable: true
TagLine:
description: TagLine
type: string
x-nullable: true
URL:
description: Website
type: string
x-nullable: true
Industries:
description: Industries
items:
$ref: "./industry.yaml#/Industry"
type: array
x-nullable: true
type: object

View File

@ -0,0 +1,78 @@
CompanyService:
description: A service performed by a Company
properties:
ID:
description: Record Id
type: string
AccountID:
description: ID of the Company that owns this Service
type: string
AppExchange:
description: Salesforce AppExchange URL
type: string
x-nullable: true
CreatedByID:
description: Created By User ID
type: string
x-nullable: true
CreatedDate:
description: Created Date
type: string
x-nullable: true
Description:
description: Description of service
type: string
x-nullable: true
FullDescription:
description: Full Description of service
type: string
x-nullable: true
ImageAltText:
description: Image Alt Text
type: string
x-nullable: true
ImageURL:
description: Image URL
type: string
x-nullable: true
LastModifiedByID:
description: Last Modified By User ID
type: string
x-nullable: true
LastModifiedDate:
description: Last Modified Date
type: string
x-nullable: true
Logo:
description: Logo
type: string
x-nullable: true
Name:
description: Service Name
type: string
x-nullable: true
Published:
description: Published
type: boolean
x-nullable: true
SalesforceSpecific:
description: Salesforce Specific
type: boolean
x-nullable: true
ServiceVideoID:
description: Service Video ID
type: string
x-nullable: true
Slug:
description: Slug
type: string
x-nullable: true
TagLine:
description: Tag Line
type: string
x-nullable: true
URL:
description: URL
type: string
x-nullable: true
type: object

177
swagger/defs/company.yaml Normal file
View File

@ -0,0 +1,177 @@
Company:
properties:
ID:
description: Company Id
type: string
AccountNumber:
description: Company Number
type: string
x-nullable: true
AccountSource:
description: The marketing origin of this Company
type: string
x-nullable: true
Active:
type: boolean
x-nullable: true
AnnualRevenue:
description: Annual Revenue Estimate
format: double
type: number
x-nullable: true
ListingAddress:
$ref: "./address.yaml#/Address"
x-nullable: true
CloudRevenueTotal:
type: number
x-nullable: true
CloudType:
description: The type of cloud company
type: string
x-nullable: true
CloudYear:
description: The year company started cloud revenue
type: string
x-nullable: true
Description:
description: Description of the Company
type: string
x-nullable: true
EarningsCall:
description: Earnings Call Date
type: string
x-nullable: true
Email:
description: Main Company Email
type: string
x-nullable: true
EquityFunding:
description: The amount of equity EquityFunding
type: number
x-nullable: true
Facebook:
description: Company Facebook URL
type: string
x-nullable: true
Fax:
description: Fax number
type: string
x-nullable: true
FoundedDate:
description: Date company founded
type: string
x-nullable: true
IPODate:
description: IPO Date
type: string
x-nullable: true
ImageAltText:
type: string
x-nullable: true
ImageURL:
type: string
x-nullable: true
Industries:
description: Industries
type: string
x-nullable: true
Industry:
description: Industry
type: string
x-nullable: true
LinkedIn:
description: Company LinkedIn URL
type: string
x-nullable: true
Location:
description: Headquarters Location Description
type: string
x-nullable: true
Logo:
description: Company Logo URL
type: string
x-nullable: true
MarketCapitalization:
description: Market Capitalization
type: number
x-nullable: true
Name:
description: Company Name
type: string
x-nullable: true
NumberInvestments:
description: Number of Investments
type: number
x-nullable: true
NumberOfEmployees:
description: Employee Count Estimate
format: int64
type: number
x-nullable: true
Ownership:
description: Ownership
type: string
x-nullable: true
ParentID:
description: Parent Company
type: string
x-nullable: true
Phone:
description: Phone
type: string
x-nullable: true
Publish:
description: Publish this record?
type: boolean
x-nullable: true
SalesforceFirst:
description: A Salesforce-First company?
type: boolean
x-nullable: true
Slug:
description: Slug
type: string
x-nullable: true
TagLine:
description: Company tagline
type: string
x-nullable: true
TickerSymbol:
description: Ticker Symbol
type: string
x-nullable: true
Twitter:
description: Twitter URL
type: string
x-nullable: true
Type:
description: Type
type: string
x-nullable: true
Website:
description: Website
type: string
x-nullable: true
YearStarted:
description: Year Started
type: string
x-nullable: true
CompanyProducts:
x-nullable: true
description: Company Products
type: array
items:
$ref: "./company-product.yaml#/CompanyProduct"
FinancialStatements:
x-nullable: true
description: Financial Statements
type: array
items:
$ref: "./financial-statement.yaml#/FinancialStatement"
IndustryCompanies:
x-nullable: true
description: Similar Companies
type: array
items:
$ref: "./industry-company.yaml#/IndustryCompany"
type: object

165
swagger/defs/contact.yaml Normal file
View File

@ -0,0 +1,165 @@
Contact:
properties:
ID:
description: Record Id
type: string
AccountID:
description: The primary account ID of this contact
type: string
x-nullable: true
AssistantName:
description: Assistant Name
type: string
x-nullable: true
AssistantPhone:
description: Asst. Phone
type: string
x-nullable: true
BirthDate:
description: Birthdate
type: string
x-nullable: true
CrunchbaseURL:
type: string
x-nullable: true
CreatedByID:
description: Created By User ID
type: string
x-nullable: true
CreatedDate:
description: Created Date
type: string
x-nullable: true
Department:
description: Department
type: string
x-nullable: true
Description:
description: Description
type: string
x-nullable: true
DoNotCall:
description: Do Not Call?
type: boolean
x-nullable: true
Email:
description: Email address
type: string
x-nullable: true
EmailBounceDate:
description: Email Bounce Date
type: string
x-nullable: true
EmailBouncedReason:
description: Email Bounce Reason
type: string
x-nullable: true
Facebook:
description: Facebook Page
type: string
x-nullable: true
Fax:
description: Fax Number
type: string
x-nullable: true
FirstName:
description: First Name
type: string
x-nullable: true
HasOptedOutOfEmail:
description: Email Opt Out
type: boolean
x-nullable: true
HasOptedOutOfFax:
description: Fax Opt Out
type: boolean
x-nullable: true
HomePhone:
description: Home Phone
type: string
x-nullable: true
IsEmailBounced:
description: Does this contact have bounced emails?
type: boolean
x-nullable: true
LastModifiedByID:
description: Last Modified By User ID
type: string
x-nullable: true
LastModifiedDate:
description: Last Modified Date
type: string
x-nullable: true
LastName:
description: Last Name
type: string
x-nullable: true
LeadSource:
description: Lead Source
type: string
x-nullable: true
LinkedIn:
description: LinkedIn Page
type: string
x-nullable: true
MailingAddress:
$ref: "./address.yaml#/Address"
MobilePhone:
description: Mobile Phone
type: string
x-nullable: true
Name:
description: Full Name
type: string
x-nullable: true
NumberInvestments:
type: number
x-nullable: true
OtherAddress:
$ref: "./address.yaml#/Address"
x-nullable: true
OtherPhone:
description: Other Phone
type: string
x-nullable: true
OwnerID:
description: The User ID of the user who owns this Contact
type: string
x-nullable: true
PersonalEmail:
description: Personal Email Address for this Contact
type: string
x-nullable: true
Phone:
description: Phone Number
type: string
x-nullable: true
PhotoURL:
description: URL of a photograph of this User
type: string
x-nullable: true
ReportsToID:
description: Reports To
type: string
x-nullable: true
Salutation:
description: Salutation
type: string
x-nullable: true
Slug:
description: Slug
type: string
x-nullable: true
TenantID:
description: Tenant Identifier
type: string
x-nullable: true
Title:
description: Contact Title
type: string
x-nullable: true
Twitter:
description: Twitter URL
type: string
x-nullable: true
type: object

124
swagger/defs/contract.yaml Normal file
View File

@ -0,0 +1,124 @@
Contract:
properties:
AccountID:
description: Account
type: string
x-nullable: true
ActivatedByID:
description: Activated By
type: string
x-nullable: true
ActivatedDate:
description: Activated Date
type: string
x-nullable: true
BillingAddress:
$ref: "./address.yaml#/Address"
description: Billing Address
BillingContactID:
description: Billing Contact
type: string
x-nullable: true
CompanySignedDate:
description: Company Signed Date
type: string
x-nullable: true
CompanySignedID:
description: Company Signed By
type: string
x-nullable: true
ContractNumber:
description: Contract Number
type: string
x-nullable: true
ContractTerm:
description: Contract Term (months)
type: number
x-nullable: true
CreatedByID:
description: Created By User ID
type: string
x-nullable: true
CreatedDate:
description: Created Date
type: string
x-nullable: true
CustomerSignedDate:
description: Customer Signed Date
type: string
x-nullable: true
CustomerSignedID:
description: Customer Signed By
type: string
x-nullable: true
CustomerSignedTitle:
description: Customer Signed Title
type: string
x-nullable: true
DefaultEndUserID:
description: End User
type: string
x-nullable: true
Description:
description: Description
type: string
x-nullable: true
EndDate:
description: Contract End Date
type: string
x-nullable: true
EndUserID:
description: End User
type: string
x-nullable: true
HourlyRate:
description: Hourly Rate
type: number
x-nullable: true
ID:
description: Record Id
type: string
LastModifiedByID:
description: Last Modified By User ID
type: string
x-nullable: true
LastModifiedDate:
description: Last Modified Date
type: string
x-nullable: true
Name:
description: Contract Name
type: string
x-nullable: true
PaymentMethodID:
description: Payment Method
type: string
x-nullable: true
PaymentTerms:
description: Payment Terms
type: string
x-nullable: true
Perpetual:
description: Perpetual Agreement?
type: boolean
x-nullable: true
ShippingAddress:
$ref: "./address.yaml#/Address"
description: Shipping Address
ShippingContactID:
description: Shipping Contact
type: string
x-nullable: true
StartDate:
description: Contract Start Date
type: string
x-nullable: true
Status:
description: Status
type: string
x-nullable: true
TenantID:
description: Tenant Identifier
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,47 @@
CourseLesson:
properties:
ID:
type: string
AssetID:
type: string
x-nullable: true
Content:
type: string
x-nullable: true
CreatedByID:
type: string
x-nullable: true
CreatedDate:
type: string
x-nullable: true
ImageAltText:
type: string
x-nullable: true
ImageURL:
type: string
x-nullable: true
Logo:
type: string
x-nullable: true
LastModifiedByID:
type: string
x-nullable: true
LastModifiedDate:
type: string
x-nullable: true
Order:
type: integer
x-nullable: true
Slug:
type: string
x-nullable: true
SectionID:
type: string
x-nullable: true
Title:
type: string
x-nullable: true
VideoURL:
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,45 @@
CourseSection:
properties:
ID:
type: string
Content:
type: string
x-nullable: true
CourseID:
type: string
x-nullable: true
CreatedByID:
type: string
x-nullable: true
CreatedDate:
type: string
x-nullable: true
ImageAltText:
type: string
x-nullable: true
ImageURL:
type: string
x-nullable: true
Logo:
type: string
x-nullable: true
LastModifiedByID:
type: string
x-nullable: true
LastModifiedDate:
type: string
x-nullable: true
Order:
type: integer
x-nullable: true
Slug:
type: string
x-nullable: true
Title:
type: string
x-nullable: true
Lessons:
items:
$ref: "./course-lesson.yaml#/CourseLesson"
type: array
type: object

51
swagger/defs/course.yaml Normal file
View File

@ -0,0 +1,51 @@
Course:
properties:
ID:
type: string
CreatedByID:
type: string
x-nullable: true
CreatedDate:
type: string
x-nullable: true
Description:
type: string
x-nullable: true
Fulldescription:
type: string
x-nullable: true
ImageAltText:
type: string
x-nullable: true
ImageURL:
type: string
x-nullable: true
InstructorID:
type: string
x-nullable: true
LastModifiedByID:
type: string
x-nullable: true
LastModifiedDate:
type: string
x-nullable: true
Logo:
type: string
x-nullable: true
Price:
type: number
x-nullable: true
Slug:
type: string
x-nullable: true
TemplateID:
type: string
x-nullable: true
Title:
type: string
x-nullable: true
Sections:
items:
$ref: "./course-section.yaml#/CourseSection"
type: array
type: object

View File

@ -0,0 +1,55 @@
Database:
description: A Database provisioned and owned by a Tenant
properties:
Active:
description: Is this database active?
type: boolean
x-nullable: true
ClusterID:
description: The ID of the Cluster in which this database is deployed
type: string
x-nullable: true
CreatedByID:
description: Created By
type: string
x-nullable: true
CreatedDate:
description: Created Date
type: string
x-nullable: true
DSN:
description: Database connection string
type: string
x-nullable: true
DatabaseName:
description: The name of the physical database in the cluster
type: string
x-nullable: true
ID:
description: Record Id
type: string
LastModifiedByID:
description: Last Modified By
type: string
x-nullable: true
LastModifiedDate:
description: Last Modifed Date
type: string
x-nullable: true
Microservices:
description: List of microservices implemented by this Database
type: string
x-nullable: true
Status:
description: The current status of this Tenant
type: string
x-nullable: true
TenantID:
description: The ID of the tenant who owns this Database
type: string
x-nullable: true
Type:
description: The type of Database (mysql, etc)
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,9 @@
DeleteResponse:
properties:
Data:
items:
$ref: "./message.yaml#/Message"
type: array
Meta:
$ref: "./response-meta.yaml#/ResponseMeta"
type: object

View File

@ -0,0 +1,90 @@
Document:
description: A document ingested into SalesforceDevops.net
properties:
ID:
description: Record Id
type: string
AccessControlList:
description: Who can access this document?
type: string
x-nullable: true
Author:
description: The author of the document
type: string
x-nullable: true
CreatedByID:
description: Created By
type: string
x-nullable: true
CreatedDate:
description: Created Date
type: string
x-nullable: true
DocumentDate:
description: The date of the document
type: string
x-nullable: true
FolderID:
description: The ID of the folder in which this document is stored
type: string
x-nullable: true
ImageAltText:
description: Alt text for the image
type: string
x-nullable: true
ImageURL:
description: Cover image for this document
type: string
x-nullable: true
LastModifiedByID:
description: Last Modified By
type: string
x-nullable: true
LastModifiedDate:
description: Last Modifed Date
type: string
x-nullable: true
Language:
description: The language of the document
type: string
x-nullable: true
Logo:
description: Logo for this document
type: string
x-nullable: true
ObjectID:
description: The ID of the object who owns this document
type: string
x-nullable: true
ObjectType:
description: The type of object who owns this document
type: string
x-nullable: true
Source:
description: Where did the document come from?
type: string
x-nullable: true
Status:
description: Ingestion status of this document
type: string
x-nullable: true
TenantID:
type: string
x-nullable: true
Title:
description: Document Title
type: string
x-nullable: true
URL:
description: Source URL for document ingestion
type: string
x-nullable: true
UserID:
description: The ID of the user who owns this document
type: string
x-nullable: true
Version:
description: Version of the document
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,71 @@
EmailMessage:
properties:
BCCAddress:
type: string
x-nullable: true
CCAddress:
type: string
x-nullable: true
CreatedByID:
type: string
x-nullable: true
CreatedDate:
type: string
x-nullable: true
FromAddress:
type: string
x-nullable: true
FromName:
type: string
x-nullable: true
HasAttachment:
type: boolean
x-nullable: true
HTML:
type: string
x-nullable: true
Headers:
$ref: "./headers.yaml#/Headers"
x-nullable: true
ID:
type: string
Incoming:
type: boolean
x-nullable: true
LastModifiedByID:
type: string
x-nullable: true
LastModifiedDate:
type: string
x-nullable: true
MessageDate:
type: string
x-nullable: true
MessageIdentifier:
type: string
x-nullable: true
OutgoingEmailID:
type: string
x-nullable: true
ReplyToEmailMessageID:
type: string
x-nullable: true
Status:
type: string
x-nullable: true
Subject:
type: string
x-nullable: true
TextBody:
x-nullable: true
type: string
ThreadIdentifier:
type: string
x-nullable: true
ToAddress:
type: string
x-nullable: true
ToName:
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,29 @@
Enrollment:
properties:
Completed:
type: integer
x-nullable: true
CourseID:
type: string
x-nullable: true
CreatedByID:
type: string
x-nullable: true
CreatedDate:
type: string
x-nullable: true
EnrollmentDate:
type: string
x-nullable: true
ID:
type: string
LastModifiedByID:
type: string
x-nullable: true
LastModifiedDate:
type: string
x-nullable: true
UserID:
type: string
x-nullable: true
type: object

10
swagger/defs/error.yaml Normal file
View File

@ -0,0 +1,10 @@
Error:
properties:
Code:
format: int64
type: integer
Fields:
type: string
Message:
type: string
type: object

View File

@ -0,0 +1,35 @@
EventCategory:
type: object
properties:
ID:
type: string
CreatedByID:
type: string
x-nullable: true
CreatedDate:
type: string
x-nullable: true
Description:
type: string
x-nullable: true
ImageAltText:
type: string
x-nullable: true
ImageURL:
type: string
x-nullable: true
LastModifiedByID:
type: string
x-nullable: true
LastModifiedDate:
type: string
x-nullable: true
Name:
type: string
x-nullable: true
Logo:
type: string
x-nullable: true
Slug:
type: string
x-nullable: true

64
swagger/defs/event.yaml Normal file
View File

@ -0,0 +1,64 @@
Event:
properties:
ID:
type: string
AccountID:
type: string
x-nullable: true
Capacity:
type: integer
x-nullable: true
CreatedByID:
type: string
x-nullable: true
CreatedDate:
type: string
x-nullable: true
EventCategory:
$ref: "./event-category.yaml#/EventCategory"
EventCategoryID:
type: string
x-nullable: true
Description:
type: string
x-nullable: true
EndDate:
type: string
x-nullable: true
ImageAltText:
type: string
x-nullable: true
ImageURL:
type: string
x-nullable: true
Logo:
type: string
x-nullable: true
LastModifiedByID:
type: string
x-nullable: true
LastModifiedDate:
type: string
x-nullable: true
Location:
type: string
x-nullable: true
Online:
type: boolean
x-nullable: true
OrganizerUserID:
type: string
x-nullable: true
RegURL:
type: string
x-nullable: true
Slug:
type: string
x-nullable: true
StartDate:
type: string
x-nullable: true
Title:
type: string
x-nullable: true
type: object

44
swagger/defs/factor.yaml Normal file
View File

@ -0,0 +1,44 @@
Factor:
description: A Factor of analysis within a research topic
properties:
ID:
description: Record Id
type: string
CreatedByID:
description: Created By User ID
type: string
x-nullable: true
CreatedDate:
description: Created Date
type: string
x-nullable: true
Description:
description: Topic Description
type: string
x-nullable: true
LastModifiedByID:
description: Last Modified By User ID
type: string
x-nullable: true
LastModifiedDate:
description: Last Modified Date
type: string
Name:
description: Factor Name
type: string
x-nullable: true
Observations:
description: The list of Observations used to analyze this industry
items:
$ref: "./observation.yaml#/Observation"
type: array
x-nullable: true
Slug:
description: The slug of the corresponding page on the CMS
type: string
x-nullable: true
TopicID:
description: The ID of the Topic that owns this Factor
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,38 @@
Favorite:
properties:
ID:
type: string
CreatedByID:
type: string
x-nullable: true
CreatedDate:
type: string
x-nullable: true
Description:
type: string
x-nullable: true
FavoriteType:
type: string
x-nullable: true
LastModifiedByID:
type: string
x-nullable: true
LastModifiedDate:
type: string
x-nullable: true
Name:
type: string
x-nullable: true
Order:
type: integer
x-nullable: true
Path:
type: string
x-nullable: true
TenantID:
type: string
x-nullable: true
UserID:
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,52 @@
FinancialStatement:
type: object
description: A financial statement for a company
properties:
ID:
description: Record Id
type: string
AccessNumber:
description: EDGAR Access Number
type: string
AccountID:
description: Account ID
type: string
CloudRevenue:
description: Cloud Revenue
type: number
CreatedByID:
description: Created By User ID
type: string
CreatedDate:
description: Created Date
type: string
Description:
description: Description
type: string
EdgarURL:
description: EDGAR URL
type: string
FilingType:
description: Filing Type
type: string
GrossProfit:
description: Gross Profit
type: number
LastModifiedByID:
description: Last Modified By User ID
type: string
LastModifiedDate:
description: Last Modified Date
type: string
NetIncome:
description: Net Income
type: number
PeriodEndDate:
description: Period End Date
type: string
TotalRevenue:
description: Total Revenue
type: number
Year:
description: Year
type: string

11
swagger/defs/headers.yaml Normal file
View File

@ -0,0 +1,11 @@
Headers:
type: object
properties:
Key:
type: string
Values:
items:
items:
type: string
type: array
type: array

View File

@ -0,0 +1,25 @@
IndustryCompany:
description: Junction object between Industry and Company
properties:
ID:
description: Record Id
type: string
AccountID:
type: string
CreatedByID:
description: Created By User ID
type: string
CreatedDate:
description: Created Date
type: string
IndustryID:
type: string
LastModifiedByID:
description: Last Modified By User ID
type: string
LastModifiedDate:
description: Last Modified Date
type: string
Path:
type: string
type: object

View File

@ -0,0 +1,33 @@
IndustryProduct:
description: Junction object between Industry and CompanyProduct
properties:
ID:
description: Record Id
type: string
CompanyProduct:
$ref: "./company-product.yaml#/CompanyProduct"
CompanyProductID:
type: string
x-nullable: true
CreatedByID:
description: Created By User ID
type: string
x-nullable: true
CreatedDate:
description: Created Date
type: string
x-nullable: true
Industry:
$ref: "./industry.yaml#/Industry"
IndustryID:
type: string
x-nullable: true
LastModifiedByID:
description: Last Modified By User ID
type: string
x-nullable: true
LastModifiedDate:
description: Last Modified Date
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,33 @@
IndustryService:
description: Junction Object bewtwen Industry and CompanyService
properties:
ID:
description: Record Id
type: string
CompanyService:
$ref: "./company-service.yaml#/CompanyService"
CompanyServiceID:
type: string
x-nullable: true
CreatedByID:
description: Created By User ID
type: string
x-nullable: true
CreatedDate:
description: Created Date
type: string
x-nullable: true
Industry:
$ref: "./industry.yaml#/Industry"
IndustryID:
type: string
x-nullable: true
LastModifiedByID:
description: Last Modified By User ID
type: string
x-nullable: true
LastModifiedDate:
description: Last Modified Date
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,83 @@
Industry:
description: An industry that is being researched
properties:
ID:
description: Record Id
type: string
CompanyProducts:
description: The list of Products in this industry
items:
$ref: "./company-product.yaml#/CompanyProduct"
type: array
x-nullable: true
CompanyServices:
description: The list of Services in this industry
items:
$ref: "./company-service.yaml#/CompanyService"
type: array
x-nullable: true
CreatedByID:
description: Created By User ID
type: string
x-nullable: true
CreatedDate:
description: Created Date
type: string
x-nullable: true
Description:
description: Industry Description
type: string
x-nullable: true
ImageAltText:
description: Image Alt Text
type: string
x-nullable: true
ImageURL:
description: Image URL
type: string
x-nullable: true
LastModifiedByID:
description: Last Modified By User ID
type: string
x-nullable: true
LastModifiedDate:
description: Last Modified Date
type: string
x-nullable: true
Level:
description: The hierarchical level of this Industry
type: string
x-nullable: true
Logo:
description: Logo
type: string
x-nullable: true
Name:
description: Industry Name
type: string
x-nullable: true
ParentIndustryID:
description: The ID of the Parent Industry
type: string
x-nullable: true
Path:
description: The full path of this industry, including Parent
type: string
x-nullable: true
ProductCategory:
description: Is this industry a product category?
type: boolean
x-nullable: true
ServiceCategory:
description: Is this industry a service category?
type: boolean
x-nullable: true
Slug:
description: The CMS Slug for this Industry
type: string
x-nullable: true
TagLine:
description: TagLine
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,9 @@
InvalidError:
allOf:
- $ref: "./error.yaml#/Error"
- properties:
details:
items:
type: string
type: array
type: object

40
swagger/defs/invoice.yaml Normal file
View File

@ -0,0 +1,40 @@
Invoice:
properties:
Amount:
type: number
CourseID:
type: string
x-nullable: true
CreatedByID:
type: string
x-nullable: true
CreatedDate:
type: string
x-nullable: true
Currency:
type: string
x-nullable: true
DueDate:
type: string
x-nullable: true
ID:
type: string
Invoicenumber:
type: string
x-nullable: true
LastModifiedByID:
type: string
x-nullable: true
LastModifiedDate:
type: string
x-nullable: true
Status:
type: string
x-nullable: true
TransactionID:
type: string
x-nullable: true
UserID:
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,35 @@
IssuedCertificate:
properties:
CertificateID:
type: string
x-nullable: true
CreatedByID:
type: string
x-nullable: true
CreatedDate:
type: string
x-nullable: true
EnrollmentID:
type: string
x-nullable: true
ExpirationDate:
type: string
x-nullable: true
ID:
type: string
IssueDate:
type: string
x-nullable: true
LastModifiedByID:
type: string
x-nullable: true
LastModifiedDate:
type: string
x-nullable: true
UserID:
type: string
x-nullable: true
VerificationCode:
type: string
x-nullable: true
type: object

113
swagger/defs/lead.yaml Normal file
View File

@ -0,0 +1,113 @@
Lead:
properties:
Address:
$ref: "./address.yaml#/Address"
x-nullable: true
Company:
description: Company
type: string
x-nullable: true
CreatedByID:
description: Created By User ID
type: string
x-nullable: true
CreatedDate:
description: Created Date
type: string
x-nullable: true
Description:
description: Description
type: string
x-nullable: true
Email:
description: Email
type: string
x-nullable: true
FirstName:
description: First Name
type: string
x-nullable: true
ID:
description: Record Id
type: string
LastModifiedByID:
description: Last Modified By User ID
type: string
x-nullable: true
LastModifiedDate:
description: Last Modified Date
type: string
x-nullable: true
LastName:
description: Last Name
type: string
x-nullable: true
MobilePhone:
description: Mobile
type: string
x-nullable: true
Name:
description: Name
type: string
x-nullable: true
OwnerId:
description: LeadBasic Owner
type: string
x-nullable: true
PartnerAccountId:
description: Partner Account
type: string
x-nullable: true
Phone:
description: Phone
type: string
x-nullable: true
ProductID:
description: Product
type: string
x-nullable: true
RefererURL:
description: referer_url
type: string
x-nullable: true
Status:
description: LeadBasic Status
type: string
x-nullable: true
TenantID:
description: Tenant Identifier
type: string
x-nullable: true
Title:
description: Title
type: string
x-nullable: true
Type:
description: Type
type: string
x-nullable: true
UTMCampaign:
description: utm_campaign
type: string
x-nullable: true
UTMContent:
description: utm_content
type: string
x-nullable: true
UTMMedium:
description: utm_medium
type: string
x-nullable: true
UTMSource:
description: utm_source
type: string
x-nullable: true
UTMTerm:
description: utm_term
type: string
x-nullable: true
Website:
description: Website
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,31 @@
LessonProgress:
properties:
Completed:
type: integer
Completedat:
type: string
x-nullable: true
CreatedByID:
type: string
x-nullable: true
CreatedDate:
type: string
x-nullable: true
EnrollmentID:
type: string
x-nullable: true
ID:
type: string
LastModifiedByID:
type: string
x-nullable: true
LastModifiedDate:
type: string
x-nullable: true
LessonID:
type: string
x-nullable: true
UserID:
type: string
x-nullable: true
type: object

10
swagger/defs/message.yaml Normal file
View File

@ -0,0 +1,10 @@
Message:
properties:
message:
type: string
ref:
type: string
status:
format: int64
type: number
type: object

View File

@ -0,0 +1,47 @@
Observation:
description: A data point collected while analyzing a Factor
properties:
AccountID:
description: The ID of the Company being analyzed
type: string
x-nullable: true
CompanyProductID:
description: The ID of the Product being analyzed
type: string
x-nullable: true
CreatedByID:
description: Created By User ID
type: string
x-nullable: true
CreatedDate:
description: Created Date
type: string
x-nullable: true
Description:
description: Notes concerning data collection
type: string
x-nullable: true
FactorID:
description: The ID of the Factor that owns this Observation
type: string
x-nullable: true
ID:
description: Record Id
type: string
LastModifiedByID:
description: Last Modified By User ID
type: string
x-nullable: true
LastModifiedDate:
description: Last Modified Date
type: string
x-nullable: true
SubjectType:
description: Is the subject a Company or a Product?
type: string
x-nullable: true
Value:
description: The data point collected
type: string
x-nullable: true
type: object

29
swagger/defs/order.yaml Normal file
View File

@ -0,0 +1,29 @@
Order:
properties:
AmountpaID:
type: number
x-nullable: true
Createdat:
type: string
x-nullable: true
EventID:
type: string
x-nullable: true
ID:
type: string
OrderStatus:
type: string
x-nullable: true
PaymentMethod:
type: string
x-nullable: true
TicketID:
type: string
x-nullable: true
UpDatedat:
type: string
x-nullable: true
UserID:
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,81 @@
OutgoingEmailMessage:
description: A new email message to be sent
properties:
ID:
type: string
BCCAddress:
type: string
x-nullable: true
Bounced:
type: boolean
x-nullable: true
CCAddress:
type: string
x-nullable: true
CreatedByID:
type: string
x-nullable: true
CreatedDate:
type: string
x-nullable: true
EmailMessageID:
type: string
x-nullable: true
ExternalID:
type: string
x-nullable: true
FromAddress:
type: string
x-nullable: true
FromContactID:
type: string
x-nullable: true
FromName:
type: string
x-nullable: true
Headers:
$ref: "./headers.yaml#/Headers"
x-nullable: true
HTML:
type: string
x-nullable: true
LastModifiedByID:
type: string
x-nullable: true
LastModifiedDate:
type: string
x-nullable: true
ObjectID:
type: string
x-nullable: true
ObjectType:
type: string
x-nullable: true
Queued:
type: boolean
x-nullable: true
QueuedDate:
type: string
x-nullable: true
Sent:
type: boolean
x-nullable: true
SentDate:
type: string
x-nullable: true
Subject:
type: string
x-nullable: true
TemplateID:
type: string
x-nullable: true
TextBody:
x-nullable: true
type: string
ToAddress:
type: string
x-nullable: true
ToName:
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,15 @@
Pagination:
properties:
limit:
format: int64
type: number
pagesize:
format: int64
type: number
poffset:
format: int64
type: integer
setsize:
format: int64
type: number
type: object

View File

@ -0,0 +1,35 @@
PaymentMethod:
properties:
CardHolderName:
type: string
x-nullable: true
CardNumber:
type: string
x-nullable: true
CardType:
type: string
x-nullable: true
CreatedByID:
type: string
x-nullable: true
CreatedDate:
type: string
x-nullable: true
ExpirationMonth:
type: integer
ExpirationYear:
type: integer
ID:
type: string
Isdefault:
type: integer
LastModifiedByID:
type: string
x-nullable: true
LastModifiedDate:
type: string
x-nullable: true
UserID:
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,67 @@
PromptAnswer:
description: A prompt response/answer
properties:
ID:
description: Record Id
type: string
Answer:
description: The answer to the prompt
type: string
x-nullable: true
CreatedDate:
description: The date the prompt tag was created
type: string
x-nullable: true
CreatedByID:
description: The ID of the user who created the prompt tag
type: string
x-nullable: true
LastModifiedDate:
description: The date the prompt tag was last modified
type: string
x-nullable: true
LastModifiedByID:
description: The ID of the user who last modified the prompt tag
type: string
x-nullable: true
Name:
description: The name of the Answer
type: string
x-nullable: true
ParameterValues:
description: The prompt tag name
type: string
x-nullable: true
PromptID:
description: The ID of the prompt
type: string
x-nullable: true
PromptUsed:
description: The prompt used
type: string
x-nullable: true
SystemUsed:
description: The system used
type: string
x-nullable: true
Temperature:
description: The temperature used
type: number
x-nullable: true
TokensUsed:
description: The tokens used
type: number
x-nullable: true
Type:
description: The type of answer to the prompt
type: string
x-nullable: true
TenantID:
description: The ID of the tenant
type: string
x-nullable: true
UserID:
description: The ID of the user
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,27 @@
PromptCategory:
description: A prompt category
properties:
ID:
description: Record Id
type: string
Name:
description: The prompt category name
type: string
x-nullable: true
CreatedDate:
description: The date the prompt category was created
type: string
x-nullable: true
CreatedByID:
description: The ID of the user who created the prompt category
type: string
x-nullable: true
LastModifiedDate:
description: The date the prompt category was last modified
type: string
x-nullable: true
LastModifiedByID:
x-nullable: true
description: The ID of the user who last modified the prompt category
type: string
type: object

View File

@ -0,0 +1,27 @@
PromptTag:
description: A prompt tag
properties:
ID:
description: Record Id
type: string
Name:
description: The prompt tag name
type: string
x-nullable: true
CreatedDate:
description: The date the prompt tag was created
type: string
x-nullable: true
CreatedByID:
description: The ID of the user who created the prompt tag
type: string
x-nullable: true
LastModifiedDate:
description: The date the prompt tag was last modified
type: string
x-nullable: true
LastModifiedByID:
description: The ID of the user who last modified the prompt tag
type: string
x-nullable: true
type: object

107
swagger/defs/prompt.yaml Normal file
View File

@ -0,0 +1,107 @@
Prompt:
description: A prompt
properties:
ID:
description: Record Id
type: string
CreatedByID:
description: The ID of the user who created the prompt
type: string
x-nullable: true
CreatedDate:
description: The date the prompt was created
type: string
x-nullable: true
Icon:
description: The icon for the prompt
type: string
x-nullable: true
ImageAltText:
description: The alt text for the prompt image
type: string
x-nullable: true
ImageURL:
description: The URL of the prompt image
type: string
x-nullable: true
LastModifiedByID:
description: The ID of the user who last modified the prompt
type: string
x-nullable: true
LastModifiedDate:
description: The date the prompt was last modified
type: string
x-nullable: true
Logo:
description: The logo for the prompt
type: string
x-nullable: true
MaxTokens:
description: The maximum number of tokens to generate
type: number
x-nullable: true
Model:
description: The model for the prompt
type: string
x-nullable: true
Name:
description: The name of the prompt
type: string
x-nullable: true
Order:
description: The order of the prompt
type: number
x-nullable: true
Parameters:
description: A list of parameters encoded as JSON
type: string
x-nullable: true
Prompt:
description: The prompt text
type: string
x-nullable: true
PromptCategoryID:
description: The ID of the prompt category
type: string
x-nullable: true
ResearchProjectIDs:
description: A list of research project IDs
items:
type: string
type: array
x-nullable: true
Slug:
description: The slug for the prompt
type: string
x-nullable: true
System:
description: The System prompt to be used
type: string
x-nullable: true
Tags:
description: A list of tags
items:
type: string
type: array
x-nullable: true
Temperature:
description: The temperature of the prompt
type: number
x-nullable: true
TenantID:
description: The ID of the tenant
type: string
x-nullable: true
Title:
description: The title of the prompt
type: string
x-nullable: true
UsedCount:
description: The number of times the prompt has been used
type: number
x-nullable: true
UserID:
description: The ID of the user who created the prompt
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,8 @@
RequestMeta:
properties:
ExternalAccount:
description: Account Number of the Reseller or OEM
type: string
required:
- ExternalAccount
type: object

View File

@ -0,0 +1,26 @@
ResearchProjectCompany:
properties:
AccountID:
type: string
x-nullable: true
CreatedByID:
type: string
x-nullable: true
CreatedDate:
type: string
x-nullable: true
ID:
type: string
LastModifiedByID:
type: string
x-nullable: true
LastModifiedDate:
type: string
x-nullable: true
ResearchProjectID:
type: string
x-nullable: true
TenantID:
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,32 @@
ResearchProjectDocument:
properties:
ID:
type: string
CreatedByID:
type: string
x-nullable: true
CreatedDate:
type: string
x-nullable: true
DocumentID:
type: string
x-nullable: true
LastModifiedByID:
type: string
x-nullable: true
LastModifiedDate:
type: string
x-nullable: true
ResearchProjectID:
type: string
x-nullable: true
TenantID:
type: string
x-nullable: true
Title:
type: string
x-nullable: true
UserID:
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,32 @@
ResearchProjectProduct:
properties:
ID:
type: string
CompanyProductID:
type: string
x-nullable: true
CreatedByID:
type: string
x-nullable: true
CreatedDate:
type: string
x-nullable: true
LastModifiedByID:
type: string
x-nullable: true
LastModifiedDate:
type: string
x-nullable: true
ProductName:
type: string
x-nullable: true
ResearchProjectID:
type: string
x-nullable: true
TenantID:
type: string
x-nullable: true
UserID:
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,32 @@
ResearchProjectService:
properties:
ID:
type: string
CompanyServiceID:
type: string
x-nullable: true
CreatedByID:
type: string
x-nullable: true
CreatedDate:
type: string
x-nullable: true
LastModifiedByID:
type: string
x-nullable: true
LastModifiedDate:
type: string
x-nullable: true
ResearchProjectID:
type: string
x-nullable: true
ServiceName:
type: string
x-nullable: true
TenantID:
type: string
x-nullable: true
UserID:
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,29 @@
ResearchProjectTopic:
properties:
CreatedByID:
type: string
x-nullable: true
CreatedDate:
type: string
x-nullable: true
ID:
type: string
LastModifiedByID:
type: string
x-nullable: true
LastModifiedDate:
type: string
x-nullable: true
ResearchProjectID:
type: string
x-nullable: true
TenantID:
type: string
x-nullable: true
TopicID:
type: string
x-nullable: true
UserID:
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,64 @@
ResearchProject:
properties:
ID:
type: string
AccountID:
type: string
x-nullable: true
CreatedByID:
type: string
x-nullable: true
CreatedDate:
type: string
x-nullable: true
Description:
type: string
x-nullable: true
ImageAltText:
type: string
x-nullable: true
ImageURL:
type: string
x-nullable: true
LastModifiedByID:
type: string
x-nullable: true
LastModifiedDate:
type: string
x-nullable: true
Logo:
type: string
x-nullable: true
Name:
type: string
x-nullable: true
Slug:
type: string
x-nullable: true
TenantID:
type: string
x-nullable: true
UserID:
type: string
x-nullable: true
Companies:
items:
$ref: "./research-project-company.yaml#/ResearchProjectCompany"
type: array
x-nullable: true
Documents:
items:
$ref: "./research-project-document.yaml#/ResearchProjectDocument"
type: array
x-nullable: true
Products:
items:
$ref: "./research-project-product.yaml#/ResearchProjectProduct"
type: array
x-nullable: true
Topics:
items:
$ref: "./research-project-topic.yaml#/ResearchProjectTopic"
type: array
x-nullable: true
type: object

View File

@ -0,0 +1,38 @@
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: "./pagination.yaml#/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
ExternalAccount:
description: Account Number used for recording transactions
type: string
type: object

39
swagger/defs/role.yaml Normal file
View File

@ -0,0 +1,39 @@
Role:
description: A functional role within a Tenant
properties:
ID:
description: record id
type: string
Auth0RoleID:
description: the corresponding auth0 role
type: string
x-nullable: true
CreatedByID:
description: created by
type: string
x-nullable: true
CreatedDate:
description: created date
type: string
x-nullable: true
Description:
description: role description
type: string
x-nullable: true
LastModifiedByID:
description: last modified by
type: string
x-nullable: true
LastModifiedDate:
description: last modifed date
type: string
x-nullable: true
RoleName:
description: the name of this role
type: string
x-nullable: true
TenantID:
description: the id of the tenant that owns this role
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,62 @@
Template:
properties:
CompanyID:
description: Company
type: string
x-nullable: true
CreatedByID:
type: string
x-nullable: true
CreatedDate:
type: string
x-nullable: true
Description:
description: Description
type: string
x-nullable: true
HTML:
description: HTML Body
type: string
x-nullable: true
ID:
description: Record Id
type: string
IsActive:
description: Active?
type: boolean
x-nullable: true
IsMaster:
description: Master Template?
type: boolean
x-nullable: true
LastModifiedByID:
type: string
x-nullable: true
LastModifiedDate:
type: string
x-nullable: true
Name:
description: Template Name
type: string
x-nullable: true
ObjectType:
description: Object
type: string
x-nullable: true
RecordTypeName:
description: Record Type Name
type: string
x-nullable: true
TenantID:
description: Tenant that owns this object instance
type: string
x-nullable: true
Type:
description: Type
type: string
x-nullable: true
URL:
description: URL
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,68 @@
TenantUser:
description: Relationship object that connects users to a tenant
properties:
AccessLevel:
description: The makeTenantUser access level for this User
type: string
x-nullable: true
AccountID:
description: Account ID
type: string
x-nullable: true
Auth0UserID:
description: Auth0 User ID
type: string
x-nullable: true
CompanyName:
description: Account Name
type: string
x-nullable: true
ContactID:
description: Contact ID
type: string
x-nullable: true
ExternalAccount:
description: Account
type: string
x-nullable: true
TenantActive:
description: Tenant active?
type: boolean
x-nullable: true
TenantID:
description: The Tenant ID
type: string
x-nullable: true
TenantName:
description: Tenant Name
type: string
x-nullable: true
TenantStatus:
description: Tenant Status
type: string
x-nullable: true
TenantType:
description: Tenant type
type: string
x-nullable: true
TenantVersion:
description: Tenant Version
type: string
x-nullable: true
UserEmail:
description: User Email Address
type: string
x-nullable: true
UserFullName:
description: User Full Name
type: string
x-nullable: true
UserID:
description: The User ID
type: string
x-nullable: true
Username:
description: Username
type: string
x-nullable: true
type: object

62
swagger/defs/tenant.yaml Normal file
View File

@ -0,0 +1,62 @@
Tenant:
description: Account Tenant
properties:
AccountID:
description: The Account that owns this Tenant
type: string
x-nullable: true
Active:
description: Is this Tenant currently active?
type: boolean
x-nullable: true
CreatedByID:
description: Created By
type: string
x-nullable: true
CreatedDate:
description: Created Date
type: string
x-nullable: true
Databases:
items:
$ref: "./database.yaml#/Database"
type: array
x-nullable: true
ID:
description: Record Id
type: string
LastModifiedByID:
description: Last Modified By
type: string
x-nullable: true
LastModifiedDate:
description: Last Modifed Date
type: string
x-nullable: true
Roles:
items:
$ref: "./role.yaml#/Role"
type: array
x-nullable: true
Status:
description: The current status of this Tenant
type: string
x-nullable: true
TenantName:
description: Name of the Tenant Resource
type: string
x-nullable: true
TenantUsers:
items:
$ref: "./tenant-user.yaml#/TenantUser"
type: array
x-nullable: true
Type:
description: The type of Tenant
type: string
x-nullable: true
Version:
description: The version number of the Tenant Onboarding system used to create this tenant
type: string
x-nullable: true
type: object

22
swagger/defs/ticket.yaml Normal file
View File

@ -0,0 +1,22 @@
Ticket:
properties:
CreatedDate:
type: string
x-nullable: true
EventID:
type: string
x-nullable: true
ID:
type: string
LastModifiedDate:
type: string
x-nullable: true
Price:
type: number
x-nullable: true
Quantity:
type: integer
Tickettype:
type: string
x-nullable: true
type: object

45
swagger/defs/topic.yaml Normal file
View File

@ -0,0 +1,45 @@
Topic:
description: A research topic that collects data
properties:
ID:
description: Record Id
type: string
CreatedByID:
description: Created By User ID
type: string
x-nullable: true
CreatedDate:
description: Created Date
type: string
x-nullable: true
Description:
description: Topic Description
type: string
x-nullable: true
Factors:
description: The list of Factors used to analyze this industry
items:
$ref: "./factor.yaml#/Factor"
type: array
x-nullable: true
LastModifiedByID:
description: Last Modified By User ID
type: string
x-nullable: true
LastModifiedDate:
description: Last Modified Date
type: string
x-nullable: true
Name:
description: Topic Name
type: string
x-nullable: true
ParentTopicID:
description: The ID of the Parent Topic
type: string
x-nullable: true
Slug:
description: The CMS Slug for this Topic
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,40 @@
Transaction:
properties:
Amount:
type: number
CourseID:
type: string
x-nullable: true
CreatedByID:
type: string
x-nullable: true
CreatedDate:
type: string
x-nullable: true
Currency:
type: string
x-nullable: true
EnrollmentID:
type: string
x-nullable: true
ID:
type: string
LastModifiedByID:
type: string
x-nullable: true
LastModifiedDate:
type: string
x-nullable: true
PaymentMethodID:
type: string
x-nullable: true
Status:
type: string
x-nullable: true
TransactionDate:
type: string
x-nullable: true
UserID:
type: string
x-nullable: true
type: object

View File

@ -0,0 +1,56 @@
UserRole:
description: Relationship object that connects user to a role
properties:
AccountID:
description: Account Id
type: string
x-nullable: true
Auth0RoleID:
description: Linked role ID
type: string
x-nullable: true
Auth0UserID:
description: Auth0 User ID
type: string
x-nullable: true
CompanyName:
description: Company Name
type: string
x-nullable: true
ContactID:
description: Contact ID
type: string
x-nullable: true
RoleDescription:
description: Role description
type: string
x-nullable: true
RoleID:
description: The Role ID
type: string
x-nullable: true
RoleName:
description: Role Name
type: string
x-nullable: true
ExternalAccount:
description: Account Number
type: string
x-nullable: true
UserEmail:
description: User Email Address
type: string
x-nullable: true
UserFullName:
description: User Full Name
type: string
x-nullable: true
UserID:
description: The User ID
type: string
x-nullable: true
Username:
description: Username
type: string
x-nullable: true
type: object

243
swagger/defs/user.yaml Normal file
View File

@ -0,0 +1,243 @@
User:
properties:
APIGatewayURL:
description: API Gateway URL
type: string
x-nullable: true
APIGatewayUser:
description: API Gateway User
type: string
x-nullable: true
APIKey:
description: API Key
type: string
x-nullable: true
AboutMe:
description: About Me
type: string
x-nullable: true
AccountID:
description: Account ID
type: string
x-nullable: true
Address:
$ref: "./address.yaml#/Address"
x-nullable: true
Alias:
description: Alias
type: string
x-nullable: true
Auth0UserID:
description: Auth0 User Id
type: string
x-nullable: true
CommunityNickname:
description: Nickname
type: string
x-nullable: true
CompanyName:
description: Company Name
type: string
x-nullable: true
ContactID:
description: Contact
type: string
x-nullable: true
CreatedByID:
description: Created User ID
type: string
x-nullable: true
CreatedDate:
description: Date Created
type: string
x-nullable: true
DelegatedApproverID:
description: Delegated Approver
type: string
x-nullable: true
Department:
description: Department
type: string
x-nullable: true
Division:
description: Division
type: string
x-nullable: true
Email:
description: Email address
type: string
x-nullable: true
EmployeeNumber:
description: Employee Number
type: string
x-nullable: true
EndOfDay:
description: Time day ends
type: string
x-nullable: true
Environment:
description: Environment
type: string
x-nullable: true
Extension:
description: Extension
type: string
x-nullable: true
Fax:
description: Fax
type: string
x-nullable: true
FirstName:
description: The first name
type: string
x-nullable: true
ForecastEnabled:
description: Allow Forecasting
type: boolean
x-nullable: true
FullPhotoURL:
description: Full Photo URL
type: string
x-nullable: true
GitHub:
description: GitHub
type: string
x-nullable: true
ID:
description: Record ID
type: string
IsActive:
description: Active
type: boolean
x-nullable: true
IsPortalEnabled:
description: Is the user enabled for Communities?
type: boolean
x-nullable: true
IsSystemControlled:
type: boolean
x-nullable: true
LastIP:
description: IP address of last login
type: string
x-nullable: true
LastLogin:
description: Last login time
type: string
x-nullable: true
LastModifiedByID:
description: Last Modified User ID
type: string
x-nullable: true
LastModifiedDate:
description: Last Modified Date
type: string
x-nullable: true
LastName:
description: The Last Name
type: string
x-nullable: true
LinkedIn:
description: LinkedIn
type: string
x-nullable: true
LoginCount:
description: Number of times user has logged in
format: int64
type: number
x-nullable: true
ManagerID:
description: Manager
type: string
x-nullable: true
MobilePhone:
description: Mobile
type: string
x-nullable: true
Name:
description: Name
type: string
x-nullable: true
OutOfOfficeMessage:
description: Out of office message
type: string
x-nullable: true
Phone:
description: Phone
type: string
x-nullable: true
PortalRole:
description: Portal Role Level
type: string
x-nullable: true
ProfileID:
description: Profile
type: string
x-nullable: true
ReceivesAdminEmails:
description: Info Emails
type: boolean
x-nullable: true
SenderEmail:
description: Email Sender Address
type: string
x-nullable: true
SenderName:
description: Email Sender Name
type: string
x-nullable: true
SmallPhotoURL:
description: Small Photo URL
type: string
x-nullable: true
StartOfDay:
description: The time day starts
type: string
x-nullable: true
Status:
description: Onboarding Status
type: string
x-nullable: true
ExternalAccount:
description: Account
type: string
x-nullable: true
TenantID:
description: Tenant ID associated with this user
type: string
x-nullable: true
TenantUsers:
items:
$ref: "./tenant-user.yaml#/TenantUser"
type: array
x-nullable: true
TimeZone:
description: Time Zone
type: string
x-nullable: true
Title:
description: Title
type: string
x-nullable: true
Twitter:
description: Twitter
type: string
x-nullable: true
UserRoleID:
description: Role
type: string
x-nullable: true
UserRoles:
items:
$ref: "./user-role.yaml#/UserRole"
type: array
x-nullable: true
UserType:
description: User Type
type: string
x-nullable: true
Username:
description: Username
type: string
x-nullable: true
type: object

433
swagger/external/auth-vernonkeenan.yaml vendored Normal file
View File

@ -0,0 +1,433 @@
swagger: "2.0"
info:
version: 0.3.0
title: "auth"
description: "Authentication Microservice"
termsOfService: "https://salesforcedevops.net/terms/"
contact:
email: "vern@vernonkeenan.com"
license:
name: "Proprietary - Copyright (c) 2018-2023 by Vernon Keenan"
securityDefinitions:
ApiKeyAuth:
type: "apiKey"
in: "header"
name: "X-API-Key"
security:
- ApiKeyAuth: []
schemes:
- "https"
basePath: "/vk/auth/v1"
host: "gw.tnxs.net"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
apiKeyQuery:
description: Service account or developer API key
in: query
name: apikey
type: string
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: Response with User objects
schema:
$ref: "#/definitions/UserResponse"
paths:
/users:
get:
summary: "Check API Key"
operationId: "getUsers"
description: "Checks for a valid API key, and returns full user record"
parameters:
- $ref: "#/parameters/apiKeyQuery"
tags:
- "User"
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"
definitions:
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
Error:
properties:
Code:
format: int32
type: integer
Fields:
type: string
Message:
type: string
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
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
ExternalAccount:
description: Account Number used for recording transactions
type: string
type: object
User:
properties:
AboutMe:
description: About Me
type: string
AccountID:
description: Account ID
type: string
Address:
$ref: "#/definitions/Address"
Alias:
description: Alias
type: string
APIKey:
description: API Key
type: string
Auth0UserID:
description: Auth0 User Id
type: string
CommunityNickname:
description: Nickname
type: string
CompanyName:
description: Company Name
type: string
ContactID:
description: Contact
type: string
CreatedByID:
description: Created User ID
type: string
CreatedDate:
description: Date Created
type: string
DelegatedApproverID:
description: Delegated Approver
type: string
Department:
description: Department
type: string
Division:
description: Division
type: string
Email:
description: Email address
type: string
EmployeeNumber:
description: Employee Number
type: string
EndOfDay:
description: Time day ends
type: string
Environment:
description: Environment
type: string
Extension:
description: Extension
type: string
FabricAPIKey:
description: Fabric API Key
type: string
Fax:
description: Fax
type: string
FirstName:
description: The first name
type: string
ForecastEnabled:
description: Allow Forecasting
type: boolean
FullPhotoURL:
description: Full Photo URL
type: string
ID:
description: ID
type: string
IsActive:
description: Active
type: boolean
IsPortalEnabled:
description: Is the user enabled for Communities?
type: boolean
IsProphilePhotoActive:
description: Has Profile Photo
type: boolean
IsSystemControlled:
type: boolean
LastModifiedByID:
description: Last Modified User ID
type: string
LastModifiedDate:
description: Last Modified Date
type: string
LastLogin:
description: Last login time
type: string
LastIP:
description: IP address of last login
type: string
LoginCount:
description: Number of times user has logged in
type: number
format: int64
LastName:
description: The Last Name
type: string
ManagerID:
description: Manager
type: string
MobilePhone:
description: Mobile
type: string
Name:
description: Name
type: string
OutOfOfficeMessage:
description: Out of office message
type: string
Phone:
description: Phone
type: string
PortalRole:
description: Portal Role Level
type: string
ProfileID:
description: Profile
type: string
ReceivesAdminInfoEmails:
description: Admin Info Emails
type: boolean
ReceivesAdminEmails:
description: Info Emails
type: boolean
SenderEmail:
description: Email Sender Address
type: string
SenderName:
description: Email Sender Name
type: string
Signature:
description: Email Signature
type: string
SmallPhotoURL:
description: Small Photo URL
type: string
StartOfDay:
description: The time day starts
type: string
ExternalAccount:
description: Account
type: string
TenantID:
description: Tenant ID associated with this user
type: string
TimeZone:
description: Time Zone
type: string
Title:
description: Title
type: string
Username:
description: Username
type: string
UserRoleID:
description: Role
type: string
UserType:
description: User Type
type: string
UserRoles:
items:
$ref: "#/definitions/UserRole"
type: array
TenantUsers:
items:
$ref: "#/definitions/TenantUser"
type: array
type: object
UserResponse:
description: An array Taxnexus user objects
properties:
Data:
items:
$ref: "#/definitions/User"
type: array
Meta:
$ref: "#/definitions/ResponseMeta"
type: object
UserRole:
description: Relationship object that connects user to a role
type: object
properties:
AccountID:
description: Account Id
type: string
Auth0RoleID:
description: Linked role ID
type: string
Auth0UserID:
description: Auth0 User ID
type: string
CompanyName:
description: Company Name
type: string
ContactID:
description: Contact ID
type: string
RoleDescription:
description: Role description
type: string
RoleID:
description: The Role ID
type: string
RoleName:
description: Role Name
type: string
ExternalAccount:
description: Account Number
type: string
UserEmail:
description: User Email Address
type: string
UserFullName:
description: User Full Name
type: string
UserID:
description: The User ID
type: string
Username:
description: Username
type: string
TenantUser:
description: Relationship object that connects users to a tenant
type: object
properties:
AccessLevel:
description: The makeTenantUser access level for this User
type: string
Auth0UserID:
description: Auth0 User ID
type: string
AccountID:
description: Account ID
type: string
ContactID:
description: Contact ID
type: string
CompanyName:
description: Account Name
type: string
ExternalAccount:
description: Account
type: string
TenantActive:
description: Tenant active?
type: boolean
TenantID:
description: The Tenant ID
type: string
TenantName:
description: Tenant Name
type: string
TenantStatus:
description: Tenant Status
type: string
TenantType:
description: Tenant type
type: string
TenantVersion:
description: Tenant Version
type: string
Username:
description: Username
type: string
UserEmail:
description: User Email Address
type: string
UserFullName:
description: User Full Name
type: string
UserID:
description: The User ID
type: string

822
swagger/external/crm-vernonkeenan.yaml vendored Normal file
View File

@ -0,0 +1,822 @@
swagger: "2.0"
info:
version: 0.3.4
title: "crm"
description: "Customer Information Microservice"
termsOfService: "https://salesforcedevops.net/terms/"
contact:
email: "vern@vernonkeenan.com"
license:
name: "Proprietary - Copyright (c) 2018-2023 by Vernon Keenan"
securityDefinitions:
ApiKeyAuth:
type: "apiKey"
in: "header"
name: "X-API-Key"
schemes:
- "https"
basePath: "/vk/crm/v1"
host: "gw.tnxs.net"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
accountIdQuery:
description: Record Id of an Account
in: query
name: accountId
required: false
type: string
assetIdQuery:
description: Record Id of an Asset
in: query
name: assetId
required: false
type: string
accountRequest:
description: An array of new Account records
in: body
name: accountRequest
required: true
schema:
$ref: "#/definitions/AccountRequest"
assetRequest:
description: An array of new Asset records
in: body
name: assetRequest
required: true
schema:
$ref: "#/definitions/AssetRequest"
activeQuery:
description: Only retrieve active records?
in: query
name: active
required: false
type: boolean
companyIdQuery:
description: Company record ID
in: query
name: companyId
required: false
type: string
leadIdQuery:
description: Lead record ID
in: query
name: leadId
required: false
type: string
contactIdQuery:
description: Contact record ID
in: query
name: contactId
required: false
type: string
contractIdQuery:
description: Contact record ID
in: query
name: contractId
required: false
type: string
emailQuery:
description: Email address used for identity lookup
in: query
name: email
required: false
type: string
contactRequest:
description: An array of new Contact records
in: body
name: contactsRequest
required: true
schema:
$ref: "#/definitions/ContactRequest"
contractRequest:
description: An array of new Contract records
in: body
name: contractsRequest
required: true
schema:
$ref: "#/definitions/ContractRequest"
leadRequest:
description: An array of new Lead records
in: body
name: leadRequest
required: true
schema:
$ref: "#/definitions/LeadRequest"
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?
format: int64
in: query
name: offset
required: false
type: integer
slugQuery:
description: The Slug of this Object
in: query
name: slug
required: false
type: string
typeQuery:
description: The Type of this Object
in: query
name: type
required: false
type: string
responses:
AccessForbidden:
description: "Access forbidden, account lacks access"
headers:
Access-Control-Allow-Origin:
type: string
schema:
$ref: "#/definitions/Error"
AccountResponse:
description: Response with Account objects with Contacts
headers:
Access-Control-Allow-Origin:
type: string
Cache-Control:
type: string
schema:
$ref: "#/definitions/AccountResponse"
AssetResponse:
description: Response with Asset objects with Contacts
headers:
Access-Control-Allow-Origin:
type: string
Cache-Control:
type: string
schema:
$ref: "#/definitions/AssetResponse"
Conflict:
description: Conflict
headers:
Access-Control-Allow-Origin:
type: string
schema:
$ref: "#/definitions/Error"
ContactResponse:
description: Response with an array of Contact objects
headers:
Access-Control-Allow-Origin:
type: string
Cache-Control:
type: string
schema:
$ref: "#/definitions/ContactResponse"
ContractResponse:
description: Response with an array of Contract objects
headers:
Access-Control-Allow-Origin:
type: string
Cache-Control:
type: string
schema:
$ref: "#/definitions/ContractResponse"
LeadResponse:
description: Response with an array of Lead objects
headers:
Access-Control-Allow-Origin:
type: string
Cache-Control:
type: string
schema:
$ref: "#/definitions/LeadResponse"
DeleteResponse:
description: Response with Message Objects with Delete Status
headers:
Access-Control-Allow-Origin:
type: string
schema:
$ref: "#/definitions/DeleteResponse"
InvalidDataError:
headers:
Access-Control-Allow-Origin:
type: string
description: Invalid data was sent
schema:
$ref: "#/definitions/InvalidError"
NotFound:
description: Resource was not found
headers:
Access-Control-Allow-Origin:
type: string
schema:
$ref: "#/definitions/Error"
ServerError:
description: Server Internal Error
headers:
Access-Control-Allow-Origin:
type: string
schema:
$ref: "#/definitions/Error"
Unauthorized:
description: "Access unauthorized, invalid API-KEY was used"
headers:
Access-Control-Allow-Origin:
type: string
schema:
$ref: "#/definitions/Error"
UnprocessableEntity:
description: "Unprocessable Entity, likely a bad parameter"
headers:
Access-Control-Allow-Origin:
type: string
schema:
$ref: "#/definitions/Error"
paths:
/accounts:
delete:
description: Delete SalesforceDevops.net Account record
operationId: deleteAccount
parameters:
- $ref: "#/parameters/accountIdQuery"
responses:
"200":
$ref: "#/responses/DeleteResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
security:
- ApiKeyAuth: []
summary: Delete An Account
tags:
- Accounts
get:
description: Return a list of all available Accounts
operationId: getAccounts
parameters:
- $ref: "#/parameters/limitQuery"
- $ref: "#/parameters/nameQuery"
- $ref: "#/parameters/offsetQuery"
- $ref: "#/parameters/activeQuery"
- $ref: "#/parameters/accountIdQuery"
- $ref: "#/parameters/slugQuery"
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"
security:
- ApiKeyAuth: []
summary: Get a list of accounts
tags:
- Accounts
post:
description: Account record to be added
operationId: postAccounts
parameters:
- $ref: "#/parameters/accountRequest"
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"
security:
- ApiKeyAuth: []
summary: Add a new account to SalesforceDevops.net
tags:
- Accounts
put:
description: Update one or more accounts
operationId: putAccounts
parameters:
- $ref: "#/parameters/accountRequest"
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"
security:
- ApiKeyAuth: []
summary: Update a single account
tags:
- Accounts
/assets:
delete:
description: Delete SalesforceDevops.net Asset record
operationId: deleteAsset
parameters:
- $ref: "#/parameters/assetIdQuery"
responses:
"200":
$ref: "#/responses/DeleteResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
security:
- ApiKeyAuth: []
summary: Delete An Asset
tags:
- Assets
get:
description: Return a list of all available Assets
operationId: getAssets
parameters:
- $ref: "#/parameters/limitQuery"
- $ref: "#/parameters/offsetQuery"
- $ref: "#/parameters/accountIdQuery"
- $ref: "#/parameters/assetIdQuery"
responses:
"200":
$ref: "#/responses/AssetResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
security:
- ApiKeyAuth: []
summary: Get a list of assets
tags:
- Assets
post:
description: Asset record to be added
operationId: postAssets
parameters:
- $ref: "#/parameters/assetRequest"
responses:
"200":
$ref: "#/responses/AssetResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
security:
- ApiKeyAuth: []
summary: Add a new asset to SalesforceDevops.net
tags:
- Assets
put:
description: Update a single asset specified by assetId
operationId: putAsset
parameters:
- $ref: "#/parameters/assetRequest"
responses:
"200":
$ref: "#/responses/AssetResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
security:
- ApiKeyAuth: []
summary: Update a single asset
tags:
- Assets
/contracts:
delete:
description: Delete SalesforceDevops.net Contract record
operationId: deleteContract
parameters:
- $ref: "#/parameters/contractIdQuery"
responses:
"200":
$ref: "#/responses/DeleteResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
security:
- ApiKeyAuth: []
summary: Delete An Contract
tags:
- Contracts
get:
description: Return a list of all available Contracts
operationId: getContracts
parameters:
- $ref: "#/parameters/limitQuery"
- $ref: "#/parameters/offsetQuery"
- $ref: "#/parameters/activeQuery"
- $ref: "#/parameters/contractIdQuery"
responses:
"200":
$ref: "#/responses/ContractResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
security:
- ApiKeyAuth: []
summary: Get a list of contracts
tags:
- Contracts
post:
description: Contract record to be added
operationId: postContracts
parameters:
- $ref: "#/parameters/contractRequest"
responses:
"200":
$ref: "#/responses/ContractResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
security:
- ApiKeyAuth: []
summary: Add a new contract to SalesforceDevops.net
tags:
- Contracts
put:
description: Update a single contract specified by contractId
operationId: putContract
parameters:
- $ref: "#/parameters/contractRequest"
responses:
"200":
$ref: "#/responses/ContractResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
security:
- ApiKeyAuth: []
summary: Update a single contract
tags:
- Contracts
/contacts:
delete:
description: Delete SalesforceDevops.net Contact record
operationId: deleteContact
parameters:
- $ref: "#/parameters/contactIdQuery"
responses:
"200":
$ref: "#/responses/DeleteResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
security:
- ApiKeyAuth: []
summary: Delete a Contact
tags:
- Contacts
get:
description: Return a list of all available Contacts
operationId: getContacts
parameters:
- $ref: "#/parameters/limitQuery"
- $ref: "#/parameters/offsetQuery"
- $ref: "#/parameters/contactIdQuery"
- $ref: "#/parameters/activeQuery"
- $ref: "#/parameters/slugQuery"
- $ref: "#/parameters/emailQuery"
responses:
"200":
$ref: "#/responses/ContactResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
security:
- ApiKeyAuth: []
summary: Get a list of contacts
tags:
- Contacts
post:
description: Contact record to be added
operationId: postContacts
parameters:
- $ref: "#/parameters/contactRequest"
responses:
"200":
$ref: "#/responses/ContactResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
security:
- ApiKeyAuth: []
summary: Add new contacts
tags:
- Contacts
put:
description: Update Contact records
operationId: putContacts
parameters:
- $ref: "#/parameters/contactRequest"
responses:
"200":
$ref: "#/responses/ContactResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
security:
- ApiKeyAuth: []
summary: Update Contact
tags:
- Contacts
/leads:
delete:
description: Delete SalesforceDevops.net Lead record
operationId: deleteLead
parameters:
- $ref: "#/parameters/leadIdQuery"
responses:
"200":
$ref: "#/responses/DeleteResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
security:
- ApiKeyAuth: []
summary: Delete a Contact
tags:
- Leads
get:
description: Return a list of all available Leads
operationId: getLeads
parameters:
- $ref: "#/parameters/limitQuery"
- $ref: "#/parameters/offsetQuery"
- $ref: "#/parameters/leadIdQuery"
- $ref: "#/parameters/emailQuery"
- $ref: "#/parameters/nameQuery"
responses:
"200":
$ref: "#/responses/LeadResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
security:
- ApiKeyAuth: []
summary: Get a list of contacts
tags:
- Leads
post:
description: Lead records to be added
operationId: postLeads
parameters:
- $ref: "#/parameters/leadRequest"
responses:
"200":
$ref: "#/responses/LeadResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
security:
- ApiKeyAuth: []
summary: Add new Leads
tags:
- Leads
put:
description: Update Lead records
operationId: putLeads
parameters:
- $ref: "#/parameters/leadRequest"
responses:
"200":
$ref: "#/responses/LeadResponse"
"401":
$ref: "#/responses/Unauthorized"
"403":
$ref: "#/responses/AccessForbidden"
"404":
$ref: "#/responses/NotFound"
"422":
$ref: "#/responses/UnprocessableEntity"
"500":
$ref: "#/responses/ServerError"
security:
- ApiKeyAuth: []
summary: Update Leads
tags:
- Leads
definitions:
AccountRequest:
description: An array of Account objects with Contacts
properties:
Data:
items:
$ref: "../../lib/swagger/defs/account.yaml#/Account"
type: array
type: object
AccountResponse:
description: An array of Account objects with Contacts
properties:
Data:
items:
$ref: "../../lib/swagger/defs/account.yaml#/Account"
type: array
Meta:
$ref: "../../lib/swagger/defs/response-meta.yaml#/ResponseMeta"
type: object
AssetRequest:
description: An array of Asset objects with Contacts
properties:
Data:
items:
$ref: "../../lib/swagger/defs/asset.yaml#/Asset"
type: array
type: object
AssetResponse:
description: An array of Asset objects with Contacts
properties:
Data:
items:
$ref: "../../lib/swagger/defs/asset.yaml#/Asset"
type: array
Meta:
$ref: "../../lib/swagger/defs/response-meta.yaml#/ResponseMeta"
type: object
ContactRequest:
properties:
Data:
items:
$ref: "../../lib/swagger/defs/contact.yaml#/Contact"
type: array
type: object
ContactResponse:
properties:
Data:
items:
$ref: "../../lib/swagger/defs/contact.yaml#/Contact"
type: array
Meta:
$ref: "../../lib/swagger/defs/response-meta.yaml#/ResponseMeta"
type: object
ContractRequest:
properties:
Data:
items:
$ref: "../../lib/swagger/defs/contract.yaml#/Contract"
type: array
type: object
ContractResponse:
properties:
Data:
items:
$ref: "../../lib/swagger/defs/contract.yaml#/Contract"
type: array
Meta:
$ref: "../../lib/swagger/defs/response-meta.yaml#/ResponseMeta"
type: object
DeleteResponse:
$ref: "../../lib/swagger/defs/delete-response.yaml#/DeleteResponse"
Error:
$ref: "../../lib/swagger/defs/error.yaml#/Error"
InvalidError:
$ref: "../../lib/swagger/defs/invalid-error.yaml#/InvalidError"
LeadRequest:
properties:
Data:
items:
$ref: "../../lib/swagger/defs/lead.yaml#/Lead"
type: array
type: object
LeadResponse:
properties:
Data:
items:
$ref: "../../lib/swagger/defs/lead.yaml#/Lead"
type: array
Meta:
$ref: "../../lib/swagger/defs/response-meta.yaml#/ResponseMeta"
type: object
Message:
$ref: "../../lib/swagger/defs/message.yaml#/Message"
RequestMeta:
$ref: "../../lib/swagger/defs/request-meta.yaml#/RequestMeta"

1820
swagger/external/devops-vernonkeenan.yaml vendored Normal file

File diff suppressed because it is too large Load Diff

3826
swagger/external/members-vernonkeenan.yaml vendored Normal file

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More