https://github.com/phara0h/travelling
A dynamic route level groups permissions gateway service.
https://github.com/phara0h/travelling
api api-gateway authentication authorization authorization-bearer dynamic fast fastify gateway groups hacktober hacktoberfest permissions postgresql redis rest reverse-proxy travelling
Last synced: 11 months ago
JSON representation
A dynamic route level groups permissions gateway service.
- Host: GitHub
- URL: https://github.com/phara0h/travelling
- Owner: Phara0h
- License: gpl-3.0
- Created: 2019-08-22T15:47:16.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2024-02-26T16:13:22.000Z (over 2 years ago)
- Last Synced: 2024-03-26T02:43:15.572Z (over 2 years ago)
- Topics: api, api-gateway, authentication, authorization, authorization-bearer, dynamic, fast, fastify, gateway, groups, hacktober, hacktoberfest, permissions, postgresql, redis, rest, reverse-proxy, travelling
- Language: JavaScript
- Homepage:
- Size: 5.72 MB
- Stars: 5
- Watchers: 3
- Forks: 5
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
Travelling
A blazing fast dynamic route level groups/permissions api gateway.
- [REST Docs](#rest-docs)
- [Install](#install)
- [Minimum New Setup](#minimum-new-setup)
- [Security](#security)
- [Configuration](#configuration)
- [SDK](#sdk)
- [Changelog](#changelog)
- [License](#license)
## REST Docs
[REST Docs](https://documenter.getpostman.com/view/208035/TWDUqyFx?version=latest)
## Install
### Minimum New Setup
1. Download the latest release or run `git clone https://github.com/phara0h/travelling.git`
2. Inside the root Travelling folder run: `npm install`
3. Set the `TRAVELLING_DATABASE_URL` environment variable which needs to be pointing to a new PostgreSQL database to start. Do this by creating a `.env` file inside the root Travelling folder. For example:
```EditorConfig
TRAVELLING_DATABASE_URL=postgres://postgres@localhost/travelling
```
4. Set the salts and secrets for the following:
```EditorConfig
## Cookie Session Settings
TRAVELLING_COOKIE_SESSION_SECRET=Yzy)8EbJOUJf+~e^%#7-lo1)RJUs.UVPBu4d3qqd0ZDQ!A~ti%Sq+hBJl^-%TKXu|~xz;hFS(DO32tw#
## Cookie Token Settings
TRAVELLING_COOKIE_TOKEN_SECRET=qVsI_O|Y0VPz>xvW-Uu!&5lejE3M4w-l0KvCI!v4q|9|F0W+v9g-hb!*yX8*3O%Ty@4$~:@1!VX*?Sl&c}KW&a4..gceGHg)KoiVpc9-8bCnrmG&&}iI;7VY+-+&U(?:
TRAVELLING_COOKIE_TOKEN_SALT=?)WJ.$!570)5[@bDNip!q.t1J#/B.fJ{cyC--Zd/IJwJ/~L+(Oz|FuIoc{k;@8wf#gOrn||Ng1+2bDxOuQ6$_6QK{aWUfc-PZ{L62(0JRKizR~Y*/K8YT]?gLHB+S
## Postgres Crypto Settings
TRAVELLING_PG_CRYPTO_IMPLEMENTATION_SECRET=:Y@K$;nE8r~D]dR-#%u,v_M9K}
TRAVELLING_PG_CRYPTO_IMPLEMENTATION_SALT=Wdwrmww~NxDAFn2/@~1SfV6&Iq7/PR;]k2Me*gK*(|I!sxcr/V,_0Bbys25dIF!sm,}XG)%U!(9|3gS4Hy1Hjo}D.WsF{!6|+x,t{O6T^S):kuglmBokNNqQeHL^bWk%
```
These are example secrets and salts ***DO NOT USE THESE VALUES*** generate your own. You can use the included script via `./scripts/generateRandom.sh` to generate a 128 character random string to use for salts and secrets. See [Security](#Security) for more details on keeping Travelling secure.
See [Configuration](#Configuration) for all other configurable options.
## Security
It is recommended to follow this security tips to help keep Travelling as secure as possible.
* Use HTTPS
* Use a key and cert signed by a known third party ssl vender. (Make sure chrome supports them)
* Don't use Cors unless you really have to.
* Request logs are helpful for tracking down malicious requests
* Run Travelling behind DDOS protection. For example Cloudflare.
* Rotate cookie session/token secrets and salts often. (Once a month is a good recommendation)
* Set username passwords and username's to OWSAP current recommendations.
* Keep OAuth2 Code Tokens short lived for maximum security.
* Use strong secret's and salts for Postgres encryption. **KEEP THESE SAFE**.
* Email authentication helps prevent invalid users and makes it harder for bots to generate accounts.
## Configuration
[Configuration](./documents/CONFIG.md) is done through environment variables. All variables have a default values except for what is stated in [Minimum New Setup](#MinimumNewSetup)
- [Basic](#basic)
- [TRAVELLING_PORT](#travelling_port)
- [TRAVELLING_IP](#travelling_ip)
- [TRAVELLING_KEY](#travelling_key)
- [TRAVELLING_CERT](#travelling_cert)
- [TRAVELLING_HTTPS](#travelling_https)
- [TRAVELLING_SERVICE_NAME](#travelling_service_name)
- [Misc](#misc)
- [TRAVELLING_MISC_CLOUDFLAREIP](#travelling_misc_cloudflareip)
- [Cors](#cors)
- [TRAVELLING_CORS_ENABLE](#travelling_cors_enable)
- [TRAVELLING_CORS_HEADER_ORIGIN](#travelling_cors_header_origin)
- [TRAVELLING_CORS_HEADER_METHODS](#travelling_cors_header_methods)
- [TRAVELLING_CORS_HEADER_CREDENTIALS](#travelling_cors_header_credentials)
- [TRAVELLING_CORS_HEADER_MAX_AGE](#travelling_cors_header_max_age)
- [Logging](#logging)
- [TRAVELLING_LOG_ENABLE](#travelling_log_enable)
- [TRAVELLING_LOG_LOGGER](#travelling_log_logger)
- [TRAVELLING_LOG_COLORS](#travelling_log_colors)
- [TRAVELLING_LOG_LEVEL](#travelling_log_level)
- [TRAVELLING_LOG_REQUESTS](#travelling_log_requests)
- [TRAVELLING_LOG_UNAUTHORIZED_ACCESS](#travelling_log_unauthorized_access)
- [Fastify Logger](#fastify-logger)
- [TRAVELLING_LOG_FASTIFY_LOGGER](#travelling_log_fastify_logger)
- [TRAVELLING_LOG_FASTIFY_LOGGER_REQUEST](#travelling_log_fastify_logger_request)
- [TRAVELLING_LOG_FASTIFY_LOGGER_REQ_ID_HEADER](#travelling_log_fastify_logger_req_id_header)
- [TRAVELLING_LOG_FASTIFY_LOGGER_REQ_ID_LOG_LABEL](#travelling_log_fastify_logger_req_id_log_label)
- [Portal](#portal)
- [TRAVELLING_PORTAL_ENABLE](#travelling_portal_enable)
- [TRAVELLING_PORTAL_PATH](#travelling_portal_path)
- [TRAVELLING_PORTAL_HOST](#travelling_portal_host)
- [TRAVELLING_PORTAL_FILE_PATH](#travelling_portal_file_path)
- [TRAVELLING_PORTAL_LOGO](#travelling_portal_logo)
- [TRAVELLING_PORTAL_STYLES](#travelling_portal_styles)
- [TRAVELLING_PORTAL_ICON](#travelling_portal_icon)
- [Proxy](#proxy)
- [TRAVELLING_PROXY_TIMEOUT](#travelling_proxy_timeout)
- [TRAVELLING_PROXY_SEND_TRAVELLING_HEADERS](#travelling_proxy_send_travelling_headers)
- [Redis](#redis)
- [TRAVELLING_REDIS_ENABLE](#travelling_redis_enable)
- [TRAVELLING_REDIS_URL](#travelling_redis_url)
- [TRAVELLING_REDIS_EVENTS_URL](#travelling_redis_events_url)
- [Cookie](#cookie)
- [TRAVELLING_COOKIE_SESSION_SECRET](#travelling_cookie_session_secret)
- [TRAVELLING_COOKIE_SESSION_EXPIRATION](#travelling_cookie_session_expiration)
- [TRAVELLING_COOKIE_TOKEN_SECRET](#travelling_cookie_token_secret)
- [TRAVELLING_COOKIE_TOKEN_SALT](#travelling_cookie_token_salt)
- [TRAVELLING_COOKIE_TOKEN_EXPIRATION](#travelling_cookie_token_expiration)
- [TRAVELLING_COOKIE_TOKEN_CHECKABLE](#travelling_cookie_token_checkable)
- [TRAVELLING_COOKIE_DOMAIN](#travelling_cookie_domain)
- [TRAVELLING_COOKIE_SECURITY_IP_HIJACK_PROTECTION](#travelling_cookie_security_ip_hijack_protection)
- [USER](#user)
- [TRAVELLING_USER_ISOLATE_BY_DOMAIN](#travelling_user_isolate_by_domain)
- [TRAVELLING_USER_USERNAME_MINCHAR](#travelling_user_username_minchar)
- [TRAVELLING_USER_USERNAME_ENABLE](#travelling_user_username_enable)
- [TRAVELLING_USER_LOCKED_MESSAGE](#travelling_user_locked_message)
- [Authentication](#authentication)
- [TRAVELLING_PASSWORD_CONSECUTIVE](#travelling_password_consecutive)
- [TRAVELLING_PASSWORD_MINCHAR](#travelling_password_minchar)
- [TRAVELLING_PASSWORD_MAXCHAR](#travelling_password_maxchar)
- [TRAVELLING_PASSWORD_SPECIAL](#travelling_password_special)
- [TRAVELLING_PASSWORD_NUMBER](#travelling_password_number)
- [TRAVELLING_PASSWORD_LOWERCASE](#travelling_password_lowercase)
- [TRAVELLING_PASSWORD_UPPERCASE](#travelling_password_uppercase)
- [TRAVELLING_LOGIN_MAX_LOGIN_ATTEMPTS](#travelling_login_max_login_attempts)
- [OAUTH2](#oauth2)
- [TRAVELLING_TOKEN_ACCESS_EXPIRATION](#travelling_token_access_expiration)
- [TRAVELLING_TOKEN_CODE_EXPIRATION](#travelling_token_code_expiration)
- [TRAVELLING_TOKEN_CODE_AUTHORIZE_FLOW](#travelling_token_code_authorize_flow)
- [Postgres](#postgres)
- [TRAVELLING_DATABASE_URL](#travelling_database_url)
- [TRAVELLING_DATABASE_USER](#travelling_database_user)
- [TRAVELLING_DATABASE_PASSWORD](#travelling_database_password)
- [TRAVELLING_DATABASE_PORT](#travelling_database_port)
- [TRAVELLING_DATABASE_NAME](#travelling_database_name)
- [TRAVELLING_DATABASE_HOST](#travelling_database_host)
- [TRAVELLING_PG_CRYPTO_IMPLEMENTATION](#travelling_pg_crypto_implementation)
- [TRAVELLING_PG_CRYPTO_IMPLEMENTATION_SECRET](#travelling_pg_crypto_implementation_secret)
- [TRAVELLING_PG_CRYPTO_IMPLEMENTATION_SALT](#travelling_pg_crypto_implementation_salt)
- [TRAVELLING_PG_CRYPTO_ENCRYPT_USER_DATA](#travelling_pg_crypto_encrypt_user_data)
- [Email](#email)
- [TRAVELLING_EMAIL_VALIDATION_EXTERNAL_ENABLE](#travelling_email_validation_external_enable)
- [TRAVELLING_EMAIL_VALIDATION_EXTERNAL_ENDPOINT](#travelling_email_validation_external_endpoint)
- [TRAVELLING_EMAIL_VALIDATION_EXTERNAL_EMAIL_IN_ENDPOINT](#travelling_email_validation_external_email_in_endpoint)
- [TRAVELLING_EMAIL_VALIDATION_EXTERNAL_EMAIL_IN_BODY](#travelling_email_validation_external_email_in_body)
- [TRAVELLING_EMAIL_VALIDATION_EXTERNAL_METHOD](#travelling_email_validation_external_method)
- [TRAVELLING_EMAIL_FROM](#travelling_email_from)
- [TRAVELLING_EMAIL_RECOVERY_EXPIRATION](#travelling_email_recovery_expiration)
- [TRAVELLING_EMAIL_ACTIVATION_EXPIRATION](#travelling_email_activation_expiration)
- [TRAVELLING_EMAIL_TEST_ENABLE](#travelling_email_test_enable)
- [TRAVELLING_EMAIL_SMTP_ENABLE](#travelling_email_smtp_enable)
- [TRAVELLING_EMAIL_SMTP_HOST](#travelling_email_smtp_host)
- [TRAVELLING_EMAIL_SMTP_PORT](#travelling_email_smtp_port)
- [TRAVELLING_EMAIL_SMTP_SECURE](#travelling_email_smtp_secure)
- [TRAVELLING_EMAIL_SMTP_AUTH_USER](#travelling_email_smtp_auth_user)
- [TRAVELLING_EMAIL_SMTP_SECURE](#travelling_email_smtp_secure-1)
- [TRAVELLING_EMAIL_SMTP_TLS_REJECT_UNAUTHORIZED](#travelling_email_smtp_tls_reject_unauthorized)
- [TRAVELLING_EMAIL_AWS_ENABLE](#travelling_email_aws_enable)
- [TRAVELLING_EMAIL_AWS_CONFIG](#travelling_email_aws_config)
- [Templates](#templates)
- [TRAVELLING_EMAIL_RESET_PASSWORD_TEMPLATE_BODY](#travelling_email_reset_password_template_body)
- [TRAVELLING_EMAIL_RESET_PASSWORD_TEMPLATE_SUBJECT](#travelling_email_reset_password_template_subject)
- [TRAVELLING_EMAIL_ACTIVATION_TEMPLATE_BODY](#travelling_email_activation_template_body)
- [TRAVELLING_EMAIL_ACTIVATION_TEMPLATE_SUBJECT](#travelling_email_activation_template_subject)
- [Registration](#registration)
- [TRAVELLING_REGISTRATION_REQUIRE_EMAIL_ACTIVATION](#travelling_registration_require_email_activation)
- [TRAVELLING_REGISTRATION_REQUIRE_MANUAL_ACTIVATION](#travelling_registration_require_manual_activation)
### Basic
##### TRAVELLING_PORT
_Travelling's serving port._
> **Default**: `443`
##### TRAVELLING_IP
_Travelling's serving IP._
> **Default**: `0.0.0.0`
##### TRAVELLING_KEY
_The path to the SSL key that is used for [https](#TRAVELLING_HTTPS)_
> **Default**: `travelling/localhost.key`
##### TRAVELLING_CERT
_The path to the SSL cert that is used for [https](#TRAVELLING_HTTPS)_
> **Default**: `travelling/localhost.csr`
##### TRAVELLING_HTTPS
_Enables https serving._
> **Default**: `travelling/localhost.csr`
##### TRAVELLING_SERVICE_NAME
_Changes the service's urls and other functionality around it's name._
> **Default**: `travelling`
---
### Misc
##### TRAVELLING_MISC_CLOUDFLAREIP
_If cloudflare sits infront of Travelling set this to true, so users have their real IP assigned to them._
> **Default**: `false`
---
### Cors
Recommended to keep this disabled due to security reasons. Only enable this if you really need it and know the risks.
##### TRAVELLING_CORS_ENABLE
_Allows external services to make api calls to Travelling._
> **Default**: `false`
##### TRAVELLING_CORS_HEADER_ORIGIN
_Full host path or wildstar _ host pathed subdomains to allow. This is returned back with all requests.\*
> **Default**: Rewrites the origin to whatever external host is making the call. This allows all external calls allowed and is not recommended. > **Example**: `*.domain.com`
##### TRAVELLING_CORS_HEADER_METHODS
_`access-control-allow-methods` header that is returned back with all requests._
> **Default**: Rewrites it's self to the `access-control-request-method` header request or sets to `*` if there is no request. > **Example**: `GET,DELETE`
##### TRAVELLING_CORS_HEADER_CREDENTIALS
_`access-control-allow-credentials` header that is returned back with all routes under `/travelling/api/v1/auth/`_
> **Default**: `true`
##### TRAVELLING_CORS_HEADER_MAX_AGE
_`access-control-max-age` header that is returned back with all CORS options request._
> **Default**: `3600`
---
### Logging
For maximum performance it is recommended to disable [TRAVELLING_LOG_FASTIFY_LOGGER_REQUEST](#TRAVELLING_LOG_FASTIFY_LOGGER_REQUEST) and [TRAVELLING_LOG_FASTIFY_LOGGER](#TRAVELLING_LOG_FASTIFY_LOGGER)
##### TRAVELLING_LOG_ENABLE
_Enables [TRAVELLING_LOG_LOGGER](#TRAVELLING_LOG_LOGGER)._
> **Default**: `true`
##### TRAVELLING_LOG_LOGGER
_An absolute file path to a custom node.js logger. This must **not** be set for the settings [TRAVELLING_LOG_LEVEL](#TRAVELLING_LOG_LEVEL) & [TRAVELLING_LOG_COLORS](#TRAVELLING_LOG_COLORS) to function. It also needs to support the same interface as Node's built in console logger._
> **Default**: `travelling/include/utils/logger.js`
##### TRAVELLING_LOG_COLORS
_Enables console colors to be used with [TRAVELLING_LOG_LOGGER](#TRAVELLING_LOG_LOGGER)._
> **Default**: `true`
##### TRAVELLING_LOG_LEVEL
_Sets the log level for [TRAVELLING_LOG_LOGGER](#TRAVELLING_LOG_LOGGER). The options are `trace`,`debug`,`info`,`warn`,`error`,`fatal`._
> **Default**: `info`
##### TRAVELLING_LOG_REQUESTS
_Enables logging of every request of all requests with [TRAVELLING_LOG_LOGGER](#TRAVELLING_LOG_LOGGER)._
> **Default**: `true`
##### TRAVELLING_LOG_UNAUTHORIZED_ACCESS
_Enables logging of every unauthorized access requests made with [TRAVELLING_LOG_LOGGER](#TRAVELLING_LOG_LOGGER)._
> **Default**: `true`
---
### Fastify Logger
##### TRAVELLING_LOG_FASTIFY_LOGGER
_Enables logging for fastify's built-in pino logger. This can be set to a true/false value or a absolute path of a javascript file to set pino's settings / implement a custom logger from the pino interface._
> **Default**: `false` > **Example**: js file setting pino settings.
```javascript
module.exports = {
level: 'info'
};
```
##### TRAVELLING_LOG_FASTIFY_LOGGER_REQUEST
_Enables logging of every request and response in pino's format. Recommended not to have this and [TRAVELLING_LOG_LOGGER](#TRAVELLING_LOG_LOGGER) enabled at once_
> **Default**: `true`
##### TRAVELLING_LOG_FASTIFY_LOGGER_REQ_ID_HEADER
_The name of the header that gets set by pino's correlation id system._
> **Default**: `travelling-req-id`
##### TRAVELLING_LOG_FASTIFY_LOGGER_REQ_ID_LOG_LABEL
_The name of the property that gets set by pino's correlation id system._
> **Default**: `travellingReqID`
---
### Portal
##### TRAVELLING_PORTAL_ENABLE
_Enables the portal which has the client for login/logout/register/forgotPassword/oauth2Code functionality. This should always be enabled._
> **Default**: `true`
##### TRAVELLING_PORTAL_PATH
_The route that travelling will serve the client at._
> **Default**: `/travelling/portal/`
##### TRAVELLING_PORTAL_HOST
_This is used once on the first startup of Travelling during group initialization. This sets the remote host of a custom client to be served under the [TRAVELLING_PORTAL_HOST](#TRAVELLING_PORTAL_HOST) path._
> **Default**: `travelling/localhost.key`
##### TRAVELLING_PORTAL_FILE_PATH
_The absolute filepath to the root directory of the client files. Recommended not to be changed unless unless there is a need for a fully custom rewrite of Travelling's client pages._
> **Default**: `travelling/client/dist`
##### TRAVELLING_PORTAL_LOGO
_The absolute filepath to the logo to be displayed on the client side._
> **Default**: `travelling/client/assets/logo.svg`
##### TRAVELLING_PORTAL_STYLES
_The absolute filepath to the css file to be displayed on the client side._
> **Default**: `travelling/client/assets/styles.css`
##### TRAVELLING_PORTAL_ICON
_The absolute filepath to the faveicon to be displayed on the client side._
> **Default**: `travelling/client/assets/favicon.ico`
---
### Proxy
##### TRAVELLING_PROXY_TIMEOUT
_How long in seconds the proxy should wait on a request to finish. `0` is Infinity_
> **Default**: `0`
##### TRAVELLING_PROXY_SEND_TRAVELLING_HEADERS
_Allows Travelling to send permission/user/group based headers along with the proxy route_
> **Default**: `false`
| Header | Description |
| ------ | --------------------------------------------- |
| `un` | User's Username. |
| `uid` | User's Id. |
| `gn` | User's Group's name that allowed the request. |
| `gt ` | User's Group's type that allowed the request. |
| `perm` | Permission's name that allowed the request. |
---
### Redis
##### TRAVELLING_REDIS_ENABLE
_Enables redis to be used when multiple instances of travelling are running and being load balanced against._
> **Default**: `false` Uses in memory store which could be problematic depending on how many groups and routes there are.
##### TRAVELLING_REDIS_URL
_The URL to a redis instance to be used by travelling as a data store._
> **Default**: `redis://127.0.0.1:6379/`
##### TRAVELLING_REDIS_EVENTS_URL
_The URL to a redis instance to be used by travelling as a pub/sub event system._
> **Default**: `redis://127.0.0.1:6379/`
---
### Cookie
Travelling uses a dual cookie system. One is a persistent token cookie for longterm login and the other is a short lived session cookie made to put less load on the system and speed things up making it not need to decrypt the token cookie every request.
##### TRAVELLING_COOKIE_SESSION_SECRET
_The session secret used to generate the session cookie with. This needs to stay a secret and should be changed ever so often for [security](#Security) reasons_
> **Default**: ` ` This needs to be set!
##### TRAVELLING_COOKIE_SESSION_EXPIRATION
_How long the session cookie will last for in seconds. Recommended to set it to the average number of seconds a user tends to use your service for._
> **Default**: `300`
##### TRAVELLING_COOKIE_TOKEN_SECRET
_The token secret used to generate the persistent token cookie with. This needs to stay a secret and should be changed ever so often for [security](#Security) reasons_
> **Default**: `null` This needs to be set!
##### TRAVELLING_COOKIE_TOKEN_SALT
_The token salt used to generate the persistent token cookie with. This needs to stay a secret and should be changed ever so often for [security](#security) reasons_
> **Default**: `null` This needs to be set!
##### TRAVELLING_COOKIE_TOKEN_EXPIRATION
_How long the persistent token cookie will last for in days._
> **Default**: `30`
#### TRAVELLING_COOKIE_TOKEN_CHECKABLE
_Adds JavaScript accessible cookie, called `trav:ls`, contianing the expiration of the `trav:tok` cookie._
> **Default**: `true`
##### TRAVELLING_COOKIE_DOMAIN
_How long the persistent token cookie will last for in days._
> **Default**: `null`
##### TRAVELLING_COOKIE_SECURITY_IP_HIJACK_PROTECTION
_Enables cookie linked to remote ip's. Disabling this removes one more layer of protection against CRSF attacks, but might be needed depending on your [Cors](#cors) settings._
> **Default**: `true`
---
### USER
##### TRAVELLING_USER_ISOLATE_BY_DOMAIN
_This allows users that have same username/email to register and be isolated by the domain property. This is useful if you have multiple websites and you want to keep your users isolated from each other._
> **Default**: `false`
##### TRAVELLING_USER_USERNAME_MINCHAR
_The minimum amount of characters a username has to have._
> **Default**: `4`
##### TRAVELLING_USER_USERNAME_ENABLE
_Require users to have usernames_
> **Default**: `true`
##### TRAVELLING_USER_LOCKED_MESSAGE
_Require users to have usernames_
> **Default**: `Failed login attempts exceeded the limit. Contact your admin to get your account unlocked.`
---
### Authentication
##### TRAVELLING_PASSWORD_CONSECUTIVE
_Disables user's passwords from having any consecutive characters._
> **Default**: `false`
##### TRAVELLING_PASSWORD_MINCHAR
_The minimum amount of characters a user's password has to have_
> **Default**: `8`
##### TRAVELLING_PASSWORD_MAXCHAR
_The maximum amount of characters a user's password is allowed to have. Leaving this unset makes it unlimited_
> **Default**: ` `
##### TRAVELLING_PASSWORD_SPECIAL
_The minimum amount of special characters a user's password has to have._
> **Default**: `30`
##### TRAVELLING_PASSWORD_NUMBER
_The minimum amount of numbers characters a user's password has to have._
> **Default**: `1`
##### TRAVELLING_PASSWORD_LOWERCASE
_The minimum amount of lowercase characters a user's password has to have._
> **Default**: `1`
##### TRAVELLING_PASSWORD_UPPERCASE
_The minimum amount of uppercase characters a user's password has to have._
> **Default**: `1`
##### TRAVELLING_LOGIN_MAX_LOGIN_ATTEMPTS
_The maximum amount of failed login attempts until a user is locked._
> **Default**: `10`
---
### OAUTH2
##### TRAVELLING_TOKEN_ACCESS_EXPIRATION
_How long a OAUTH2 Access token will last for in minutes._
> **Default**: `1440`
##### TRAVELLING_TOKEN_CODE_EXPIRATION
_How long a OAUTH2 Code token will last for in minutes._
> **Default**: `5`
##### TRAVELLING_TOKEN_CODE_AUTHORIZE_FLOW
_Enforces the user to click a authorize button to allow a client to login for the user._
> **Default**: `true`
---
### Postgres
##### TRAVELLING_DATABASE_URL
_The Postgres connection url for Travelling to connect to._
> **Default**: `null`
##### TRAVELLING_DATABASE_USER
_The Postgres user._
> **Default**: `null`
##### TRAVELLING_DATABASE_PASSWORD
_The Postgres password._
> **Default**: `null`
##### TRAVELLING_DATABASE_PORT
_The Postgres port._
> **Default**: `null`
##### TRAVELLING_DATABASE_NAME
_The Postgres databases name._
> **Default**: `null`
##### TRAVELLING_DATABASE_HOST
_The Postgres host._
> **Default**: `null`
##### TRAVELLING_PG_CRYPTO_IMPLEMENTATION
_The absolute path to the encryption interface that is used for Travelling's database encryption fields. If a custom implementation is wanted please check out `travelling/include/utils/cryptointerface.js` for methods needed to be functional._
> **Default**: `travelling/include/utils/cryptointerface.js`
##### TRAVELLING_PG_CRYPTO_IMPLEMENTATION_SECRET
_The secret used inside [TRAVELLING_PG_CRYPTO_IMPLEMENTATION](#TRAVELLING_PG_CRYPTO_IMPLEMENTATION). This needs to stay a secret and should be changed ever so often for [security](#Security) reasons._
> **Default**: `null` This needs to be set!
##### TRAVELLING_PG_CRYPTO_IMPLEMENTATION_SALT
_The salt used inside [TRAVELLING_PG_CRYPTO_IMPLEMENTATION](#TRAVELLING_PG_CRYPTO_IMPLEMENTATION). This needs to stay a secret and should be changed ever so often for [security](#security) reasons._
> **Default**: `null` This needs to be set!
##### TRAVELLING_PG_CRYPTO_ENCRYPT_USER_DATA
_Enables the `user_data` field inside the user object to be encrypted. If sensitive data is stored in within that field it is recommended to enable this._
> **Default**: `false`
---
### Email
##### TRAVELLING_EMAIL_VALIDATION_EXTERNAL_ENABLE
_Enable external email endpoint for email validation_
> **Default**: `false`
##### TRAVELLING_EMAIL_VALIDATION_EXTERNAL_ENDPOINT
_Full url for endpoint for email validation_
> **Default**: `null`
##### TRAVELLING_EMAIL_VALIDATION_EXTERNAL_EMAIL_IN_ENDPOINT
_Appends the users email to the end of the supplied endpoint. EX: http://test.com/email/test@test.com_
> **Default**: `true`
##### TRAVELLING_EMAIL_VALIDATION_EXTERNAL_EMAIL_IN_BODY
_Sends the users email as text as a body to the supplied endpoint_
> **Default**: `false`
##### TRAVELLING_EMAIL_VALIDATION_EXTERNAL_METHOD
_Supplied endpoint's HTTP Method to use_
> **Default**: `GET`
##### TRAVELLING_EMAIL_FROM
_The email that will be used as the `from` address. Recommended to set it to a no-reply email address_
> **Default**: `null`
##### TRAVELLING_EMAIL_RECOVERY_EXPIRATION
_The number of seconds for the email recovery link to last for. Recommended to keep this somewhat short-lived for [security](#security) reasons._
> **Default**: `900`
##### TRAVELLING_EMAIL_ACTIVATION_EXPIRATION
_The number of seconds for the email activation link to last for._
> **Default**: `86400`
##### TRAVELLING_EMAIL_TEST_ENABLE
_Enables the use of a test email service that will display the login credentials inside the log at start. This is used by our integration test. However, it is helpful to enable this if custom [Templates](#Templates) are written. Only one type of email support should be used `Test`, `SMTP` or `AWS`._
> **Default**: `false`
##### TRAVELLING_EMAIL_SMTP_ENABLE
_Enables the use of a SMTP email service. Only one type of email support should be used `Test`, `SMTP` or `AWS`._
> **Default**: `false`
##### TRAVELLING_EMAIL_SMTP_HOST
_The host of the SMTP service._
> **Default**: `127.0.0.1`
##### TRAVELLING_EMAIL_SMTP_PORT
_The port of the SMTP service._
> **Default**: `465`
##### TRAVELLING_EMAIL_SMTP_SECURE
_Enables TLS for SMTP._
> **Default**: `true`
##### TRAVELLING_EMAIL_SMTP_AUTH_USER
_Username for SMTP service._
> **Default**: `null`
##### TRAVELLING_EMAIL_SMTP_SECURE
_Password for SMTP service._
> **Default**: `null`
##### TRAVELLING_EMAIL_SMTP_TLS_REJECT_UNAUTHORIZED
_Enables rejection of TLS certs that are self served or invalid. Recommended to keep it enabled for [security](#security) reasons._
> **Default**: `true`
##### TRAVELLING_EMAIL_AWS_ENABLE
_Enables the use of the AWS SES email service. Only one type of email support should be used `Test`, `SMTP` or `AWS`._
> **Default**: `false`
##### TRAVELLING_EMAIL_AWS_CONFIG
_The absolute path to the AWS json credentials config to use for accessing the SES service. See AWS's configuration documentation on the format of this file._
> **Default**: `null` // This needs to be set to use AWS SES email service.
#### Templates
Templates all use html/handlebars. Check out the example default templates inside the `travelling/templates/` folder for examples.
**Reset Template Variables**:
| Variable | Description |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `{{user}}` | This is the user object for the reset email. Use dot notation to access any of its properties for example: `{{user.username}}`. |
| `{{config}}` | This is the config object for Travelling. Use dot notation to access any of its properties for example `{{config.port}}`. |
| `{{token}} ` | The reset token that Travelling needs to reset the password. Recommended to just copy and paste the full a href from the [TRAVELLING_EMAIL_RESET_PASSWORD_TEMPLATE_BODY](#TRAVELLING_EMAIL_RESET_PASSWORD_TEMPLATE_BODY). |
| `{{ip}}` | This is the IP object from the user requesting the reset password. The following properties are valid. `query`,`city`, `regionName`, `country`. |
**Activation Template Variables**:
| Variable | Description |
| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `{{user}}` | This is the user object for the activation email. Use dot notation to access any of its properties for example: `{{user.username}}`. |
| `{{config}}` | This is the config object for Travelling. Use dot notation to access any of its properties for example `{{config.port}}`. |
| `{{token}} ` | The reset token that Travelling needs to activate the user's account. Recommended to just copy and paste the full a href from the [TRAVELLING_EMAIL_ACTIVATION_TEMPLATE_BODY](#TRAVELLING_EMAIL_ACTIVATION_TEMPLATE_BODY). |
##### TRAVELLING_EMAIL_RESET_PASSWORD_TEMPLATE_BODY
_The absolute path to the email reset password template body. This is used as the body inside all reset password emails._
> **Default**: `travelling/templates/email-reset-password-body.html`
##### TRAVELLING_EMAIL_RESET_PASSWORD_TEMPLATE_SUBJECT
_The absolute path to the email reset password template subject. This is used as the subject line inside all reset password emails._
> **Default**: `templates/email-reset-password-subject.html`
##### TRAVELLING_EMAIL_ACTIVATION_TEMPLATE_BODY
_The absolute path to the email activation template body. This is used as the body inside all activation emails._
> **Default**: `templates/email-activation-body.html`
##### TRAVELLING_EMAIL_ACTIVATION_TEMPLATE_SUBJECT
_The absolute path to the email activation template subject.This is used as the subject line inside all activation emails._
> **Default**: `templates/email-activation-subject.html`
---
### Registration
##### TRAVELLING_REGISTRATION_REQUIRE_EMAIL_ACTIVATION
_Enables the requirement of each newly registered user to activate their account through the email link._
> **Default**: `false`
##### TRAVELLING_REGISTRATION_REQUIRE_MANUAL_ACTIVATION
_Enables the requirement of each newly registered user to have a active user with permissions to unlock their account for them._
> **Default**: `false`
## SDK
[SDK](./sdk/README.md)
## Classes
- Travelling
- Audit
- AuditUser
- Config
- Groups
- GroupsType
- Group
- GroupUsers
- GroupUser
- GroupType
- GroupTypeUsers
-
Both requests are disabled. Dont use.
- GroupTypeUser
- GroupRequest
- GroupRequestUser
- Users
- UsersDomain
- User
- UserDomain
- UserCurrent
- Auth
-
Auth endpoints
- AuthToken
- AuthDomain
- AuthDomainToken
## Functions
- SDK(host, opts)
-
SDK - importing the SDK for use
## Travelling
**Kind**: global class
* [Travelling](#Travelling)
* [.healthCheck(authorization_bearer)](#Travelling.healthCheck)
* [.metrics(authorization_bearer)](#Travelling.metrics)
### Travelling.healthCheck(authorization_bearer)
healthCheck - server's health check
Path: health
**Kind**: static method of [Travelling](#Travelling)
| Param | Type | Description |
| --- | --- | --- |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### Travelling.metrics(authorization_bearer)
metrics - servers metrics
Path: metrics
**Kind**: static method of [Travelling](#Travelling)
| Param | Type | Description |
| --- | --- | --- |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
## Audit
**Kind**: global class
* [Audit](#Audit)
* [.byActionAndSubaction(action, subaction, limit, skip, sort, sortdir, filter, resolve, authorization_bearer)](#Audit.byActionAndSubaction)
* [.bySubaction(subaction, limit, skip, sort, sortdir, filter, resolve, authorization_bearer)](#Audit.bySubaction)
* [.byAction(action, limit, skip, sort, sortdir, filter, resolve, authorization_bearer)](#Audit.byAction)
### Audit.byActionAndSubaction(action, subaction, limit, skip, sort, sortdir, filter, resolve, authorization_bearer)
byActionAndSubaction - Gets audits by action and subaction type.
##### Filter Params
\*Note: you can only use range operators (<,B >,B >=,B <=) on the following columns: created_on.
| Param | Description |
| --- | --- |
| id | _optional_ (example: id=415c87e9-eaad-4b8e-8ce8-655c911e20ae) |
| created_on | _optional_ (example: created_on>=2021-06-09) |
| prop | _optional_ (example: prop=email) |
| old_val | _optional_ (example: old_val=swagger@email.69) |
| new_val | _optional_ (example: new_val=leet@teel.com) |
Path: api/v1/audit/action/:action/subaction/:subaction
**Kind**: static method of [Audit](#Audit)
| Param | Type | Description |
| --- | --- | --- |
| action | any | Audti action type. (example: CREATE) |
| subaction | any | Audit subaction type. (example: GROUP) |
| limit | any | Number of maximum results. (example: 2) (example: 2) |
| skip | any | Number of db rows skipped. (example: 10) (example: 1) |
| sort | any | Sort by any user object key (examples: created_on, action, etc.) (example: created_on) |
| sortdir | any | Sort direction (example ascending order: ASC) (example: ASC) |
| filter | any | Filter parameters (example: action=created_on>2021-06-03,created_on<2021-06-06) (example: created_on>2021-06-03,created_on<2021-06-06) |
| resolve | any | Joins users table to obtain 'by_user_firstname' and 'by_user'lastname' fields (example: true) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### Audit.bySubaction(subaction, limit, skip, sort, sortdir, filter, resolve, authorization_bearer)
bySubaction - Gets audits by subaction type.
##### Filter Params
\*Note: you can only use range operators (<,B >,B >=,B <=) on the following columns: created_on.
| Param | Description |
| --- | --- |
| id | _optional_ (example: id=415c87e9-eaad-4b8e-8ce8-655c911e20ae) |
| created_on | _optional_ (example: created_on>=2021-06-09) |
| prop | _optional_ (example: prop=email) |
| old_val | _optional_ (example: old_val=swagger@email.69) |
| new_val | _optional_ (example: new_val=leet@teel.com) |
Path: api/v1/audit/subaction/:subaction
**Kind**: static method of [Audit](#Audit)
| Param | Type | Description |
| --- | --- | --- |
| subaction | any | Audit subaction type. (example: USER) |
| limit | any | Number of maximum results. (example: 2) (example: 2) |
| skip | any | Number of db rows skipped. (example: 10) (example: 1) |
| sort | any | Sort by any user object key (examples: created_on, action, etc.) (example: created_on) |
| sortdir | any | Sort direction (example ascending order: ASC) (example: ASC) |
| filter | any | Filter parameters (example: action=created_on>2021-06-03,created_on<2021-06-06) (example: created_on>2021-06-03,created_on<2021-06-06) |
| resolve | any | Joins users table to obtain 'by_user_firstname' and 'by_user'lastname' fields (example: true) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### Audit.byAction(action, limit, skip, sort, sortdir, filter, resolve, authorization_bearer)
byAction - Gets audits by action type.
##### Filter Params
\*Note: you can only use range operators (<,B >,B >=,B <=) on the following columns: created_on.
| Param | Description |
| --- | --- |
| id | _optional_ (example: id=415c87e9-eaad-4b8e-8ce8-655c911e20ae) |
| created_on | _optional_ (example: created_on>=2021-06-09) |
| prop | _optional_ (example: prop=email) |
| old_val | _optional_ (example: old_val=swagger@email.69) |
| new_val | _optional_ (example: new_val=leet@teel.com) |
Path: api/v1/audit/action/:action
**Kind**: static method of [Audit](#Audit)
| Param | Type | Description |
| --- | --- | --- |
| action | any | Audit action type. (example: CREATE) |
| limit | any | Number of maximum results. (example: 2) (example: 2) |
| skip | any | Number of db rows skipped. (example: 10) (example: 1) |
| sort | any | Sort by any user object key (examples: created_on, action, etc.) (example: created_on) |
| sortdir | any | Sort direction (example ascending order: ASC) (example: ASC) |
| filter | any | Filter parameters (example: action=created_on>2021-06-03,created_on<2021-06-06) (example: created_on>2021-06-03,created_on<2021-06-06) |
| resolve | any | Joins users table to obtain 'by_user_firstname' and 'by_user'lastname' fields (example: true) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
## AuditUser
**Kind**: global class
* [AuditUser](#AuditUser)
* [.countByuserId(id, filter, limit, skip, sort, sortdir, selfexclusion, authorization_bearer)](#AuditUser.countByuserId)
* [.byuserId(id, filter, limit, skip, sort, sortdir, resolve, selfexclusion, authorization_bearer)](#AuditUser.byuserId)
* [.countOfuserId(id, filter, limit, skip, sort, sortdir, selfexclusion, authorization_bearer)](#AuditUser.countOfuserId)
* [.ofuserId(id, filter, limit, skip, sort, sortdir, resolve, selfexclusion, authorization_bearer)](#AuditUser.ofuserId)
### AuditUser.countByuserId(id, filter, limit, skip, sort, sortdir, selfexclusion, authorization_bearer)
countByuserId - Gets audits by by_user id.
##### Filter Params
\*Note: you can only use range operators (<,B >,B >=,B <=) on the following columns: created_on.
| Param | Description |
| --- | --- |
| id | _optional_ (example: id=415c87e9-eaad-4b8e-8ce8-655c911e20ae) |
| created_on | _optional_ (example: created_on>=2021-06-09) |
| action | _optional_ (example: action=CREATE) |
| subaction | _optional_ (example: subaction=USER) |
| prop | _optional_ (example: prop=email) |
| old_val | _optional_ (example: old_val=swagger@email.69) |
| new_val | _optional_ (example: new_val=leet@teel.com) |
Path: api/v1/audit/count/user/byuser/:id
**Kind**: static method of [AuditUser](#AuditUser)
| Param | Type | Description |
| --- | --- | --- |
| id | any | Id of user that committed the action. (example: bf1b1e49-a105-43dc-b9a2-32c69a17fb5f) |
| filter | any | Filter parameters (example: action=CREATE,subaction=USER,created_on>2021-06-03,created_on<2021-06-06) (example: created_on>2023-01-03,created_on<2023-06-06) |
| limit | any | Number of maximum results. (example: 2) (example: 2) |
| skip | any | Number of db rows skipped. (example: 10) (example: 1) |
| sort | any | Sort by any user object key (examples: created_on, action, etc.) (example: created_on) |
| sortdir | any | Sort direction (example ascending order: ASC) (example: ASC) |
| selfexclusion | any | Excludes audits with the same of_user_id. (example: true) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### AuditUser.byuserId(id, filter, limit, skip, sort, sortdir, resolve, selfexclusion, authorization_bearer)
byuserId - Gets audits by by_user id.
##### Filter Params
\*Note: you can only use range operators (<,B >,B >=,B <=) on the following columns: created_on.
| Param | Description |
| --- | --- |
| id | _optional_ (example: id=415c87e9-eaad-4b8e-8ce8-655c911e20ae) |
| created_on | _optional_ (example: created_on>=2021-06-09) |
| action | _optional_ (example: action=CREATE) |
| subaction | _optional_ (example: subaction=USER) |
| prop | _optional_ (example: prop=email) |
| old_val | _optional_ (example: old_val=swagger@email.69) |
| new_val | _optional_ (example: new_val=leet@teel.com) |
Path: api/v1/audit/user/byuser/:id
**Kind**: static method of [AuditUser](#AuditUser)
| Param | Type | Description |
| --- | --- | --- |
| id | any | Id of user that committed the action. (example: 44aa2ae6-22e9-43ef-a6d3-3d7d39e78064) |
| filter | any | Filter parameters (example: action=CREATE,subaction=USER,created_on>2021-06-03,created_on<2021-06-06) (example: created_on>2021-06-03,created_on<2021-06-06) |
| limit | any | Number of maximum results. (example: 2) (example: 2) |
| skip | any | Number of db rows skipped. (example: 10) (example: 1) |
| sort | any | Sort by any user object key (examples: created_on, action, etc.) (example: created_on) |
| sortdir | any | Sort direction (example ascending order: ASC) (example: ASC) |
| resolve | any | Joins users table to obtain 'by_user_firstname' and 'by_user'lastname' fields (example: true) |
| selfexclusion | any | Excludes audits with the same of_user_id. (example: true) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### AuditUser.countOfuserId(id, filter, limit, skip, sort, sortdir, selfexclusion, authorization_bearer)
countOfuserId - Gets audits by of_user id.
##### Filter Params
\*Note: you can only use range operators (<,B >,B >=,B <=) on the following columns: created_on.
| Param | Description |
| --- | --- |
| id | _optional_ (example: id=415c87e9-eaad-4b8e-8ce8-655c911e20ae) |
| created_on | _optional_ (example: created_on>=2021-06-09) |
| action | _optional_ (example: action=CREATE) |
| subaction | _optional_ (example: subaction=USER) |
| prop | _optional_ (example: prop=email) |
| old_val | _optional_ (example: old_val=swagger@email.69) |
| new_val | _optional_ (example: new_val=leet@teel.com) |
Path: api/v1/audit/count/user/ofuser/:id
**Kind**: static method of [AuditUser](#AuditUser)
| Param | Type | Description |
| --- | --- | --- |
| id | any | Id of user that committed the action. (example: bf1b1e49-a105-43dc-b9a2-32c69a17fb5f) |
| filter | any | Filter parameters (example: action=CREATE,subaction=USER,created_on>2021-06-03,created_on<2021-06-06) (example: created_on>2021-06-03,created_on<2021-06-06) |
| limit | any | Number of maximum results. (example: 2) (example: 2) |
| skip | any | Number of db rows skipped. (example: 10) (example: 10) |
| sort | any | Sort by any user object key (examples: created_on, action, etc.) (example: action) |
| sortdir | any | Sort direction (example ascending order: ASC) (example: DESC) |
| selfexclusion | any | Excludes audits with the same by_user_id. (example: true) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### AuditUser.ofuserId(id, filter, limit, skip, sort, sortdir, resolve, selfexclusion, authorization_bearer)
ofuserId - Gets audits by of_user id.
##### Filter Params
\*Note: you can only use range operators (<,B >,B >=,B <=) on the following columns: created_on.
| Param | Description |
| --- | --- |
| id | _optional_ (example: id=415c87e9-eaad-4b8e-8ce8-655c911e20ae) |
| created_on | _optional_ (example: created_on>=2021-06-09) |
| action | _optional_ (example: action=CREATE) |
| subaction | _optional_ (example: subaction=USER) |
| prop | _optional_ (example: prop=email) |
| old_val | _optional_ (example: old_val=swagger@email.69) |
| new_val | _optional_ (example: new_val=leet@teel.com) |
Path: api/v1/audit/user/ofuser/:id
**Kind**: static method of [AuditUser](#AuditUser)
| Param | Type | Description |
| --- | --- | --- |
| id | any | Id of user that committed the action. (example: 44aa2ae6-22e9-43ef-a6d3-3d7d39e78064) |
| filter | any | Filter parameters (example: action=CREATE,subaction=USER,created_on>2021-06-03,created_on<2021-06-06) (example: created_on>2021-06-03,created_on<2021-06-06) |
| limit | any | Number of maximum results. (example: 2) (example: 2) |
| skip | any | Number of db rows skipped. (example: 10) (example: 10) |
| sort | any | Sort by any user object key (examples: created_on, action, etc.) (example: action) |
| sortdir | any | Sort direction (example ascending order: ASC) (example: DESC) |
| resolve | any | Joins users table to obtain 'by_user_firstname' and 'by_user'lastname' fields (example: true) |
| selfexclusion | any | Excludes audits with the same by_user_id. (example: true) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
## Config
**Kind**: global class
### Config.getProperty(property, authorization_bearer)
getProperty - Gets a property from travellings config.
Path: api/v1/config/:property
**Kind**: static method of [Config](#Config)
| Param | Type | Description |
| --- | --- | --- |
| property | any | (example: password) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
## Groups
**Kind**: global class
* [Groups](#Groups)
* [.export(authorization_bearer)](#Groups.export)
* [.import(body, authorization_bearer)](#Groups.import)
* [.get(authorization_bearer)](#Groups.get)
### Groups.export(authorization_bearer)
export - Exports all groups in the proper format to be imported.
Path: api/v1/groups/export
**Kind**: static method of [Groups](#Groups)
| Param | Type | Description |
| --- | --- | --- |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### Groups.import(body, authorization_bearer)
import - Imports all groups from the exported format.
Path: api/v1/groups/import
**Kind**: static method of [Groups](#Groups)
| Param | Type | Description |
| --- | --- | --- |
| body | Object | |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
**Example**
body
```json
{
"group": {
"anonymous": {
"allowed": [
{"method": "GET", "route": "/account/portal/*"},
{"method": "GET", "route": "/account/assets/*"},
{"method": "GET", "route": "/favicon.ico"},
{"method": "GET", "route": "/account/api/v1/auth/logout"},
{"method": "PUT", "route": "/account/api/v1/auth/password/forgot"},
{"method": "PUT", "route": "/account/api/v1/auth/password/reset"},
{"method": "GET", "route": "/account/api/v1/auth/activate"},
{"method": "POST", "route": "/account/api/v1/auth/token"},
{"method": "GET", "route": "/account/api/v1/auth/login/otp"},
{"method": "POST","route":"/account/api/v1/auth/oauth/authorize"},
{"method": "GET","route":"/account/api/v1/auth/oauth/authorize"},
{"method": "GET", "route": "/account/api/v1/user/me/permission/allowed/*"},
{"method": "GET", "route": "/account/api/v1/user/me/route/allowed"},
{"method": "GET", "route": "/account/api/v1/config/password"},
{"method": "GET", "route": "/account/api/v1/config/portal/webclient"},
{"method": "GET", "route": "/account/metrics"},
{"method": "GET", "route": "/account/health"}
]
}
}
}
### Groups.get(authorization_bearer)
get - Get all the groups
Path: api/v1/groups
**Kind**: static method of [Groups](#Groups)
| Param | Type | Description |
| --- | --- | --- |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
## GroupsType
**Kind**: global class
* [GroupsType](#GroupsType)
* [.all(type, authorization_bearer)](#GroupsType.all)
* [.getTypesList(authorization_bearer)](#GroupsType.getTypesList)
### GroupsType.all(type, authorization_bearer)
all - Gets all groups of a particular type
Path: api/v1/groups/type/:type
**Kind**: static method of [GroupsType](#GroupsType)
| Param | Type | Description |
| --- | --- | --- |
| type | any | The type of the group |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### GroupsType.getTypesList(authorization_bearer)
getTypesList - Gets all the types of groups currently made.
Path: api/v1/groups/types
**Kind**: static method of [GroupsType](#GroupsType)
| Param | Type | Description |
| --- | --- | --- |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
## Group
**Kind**: global class
* [Group](#Group)
* [.addPermission(id, permission, authorization_bearer)](#Group.addPermission)
* [.deletePermission(id, permission, authorization_bearer)](#Group.deletePermission)
* [.addRoute(body, id, authorization_bearer)](#Group.addRoute)
* [.removeInheritance(id, inherited, grouptype, authorization_bearer)](#Group.removeInheritance)
* [.inheritFrom(id, inherited, grouptype, authorization_bearer)](#Group.inheritFrom)
* [.setDefault(id, authorization_bearer)](#Group.setDefault)
* [.delete(id, authorization_bearer)](#Group.delete)
* [.edit(body, id, authorization_bearer)](#Group.edit)
* [.get(id, authorization_bearer)](#Group.get)
* [.createByName(id, authorization_bearer)](#Group.createByName)
* [.create(body, authorization_bearer)](#Group.create)
### Group.addPermission(id, permission, authorization_bearer)
addPermission - Adds a permission to a group.
Path: api/v1/group/id/:id/insert/permission/:permission
**Kind**: static method of [Group](#Group)
| Param | Type | Description |
| --- | --- | --- |
| id | any | Name of the group (example: anonymous) |
| permission | any | Permission (example: test-one-two-*) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### Group.deletePermission(id, permission, authorization_bearer)
deletePermission - Removes a permission/route from a group.
Path: api/v1/group/id/:id/permission/:permission
**Kind**: static method of [Group](#Group)
| Param | Type | Description |
| --- | --- | --- |
| id | any | Name of the group (example: anonymous) |
| permission | any | Name or Route (example: test-one-two-*) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### Group.addRoute(body, id, authorization_bearer)
addRoute - Adds a route to a group.
```javascript
{
"route": "test/permissions/*", // optional
"host": null, // optional, defaults to travelling host
"method": "*", // optional, defaults to '*'
"remove_from_path": 'test/', // optional
"name": "test-permissions-*" // Required and needs to be unqiue, defaults to method + route seperated by '-' instead of `/`
}
```
Path: api/v1/group/id/:id/insert/route
**Kind**: static method of [Group](#Group)
| Param | Type | Description |
| --- | --- | --- |
| body | Object | |
| id | any | |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
**Example**
body
```json
{
"route": "test/permissions/*",
"host": null,
"method": "*",
"name": "test-permissions-*"
}
```
### Group.removeInheritance(id, inherited, grouptype, authorization_bearer)
removeInheritance - Removes an inheritance from a group.
Path: api/v1/group/id/:id/remove/inheritance/:inherited/type/:grouptype
**Kind**: static method of [Group](#Group)
| Param | Type | Description |
| --- | --- | --- |
| id | any | Name of the group (example: test1234) |
| inherited | any | Name of the group to inherit from (example: group4) |
| grouptype | any | The type of the inherited group |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### Group.inheritFrom(id, inherited, grouptype, authorization_bearer)
inheritFrom - Adds an inheritance to a group.
Path: api/v1/group/id/:id/inherit/from/:inherited/type/:grouptype
**Kind**: static method of [Group](#Group)
| Param | Type | Description |
| --- | --- | --- |
| id | any | Name of the group (example: test1234) |
| inherited | any | Name of the group to inherit from (example: group4) |
| grouptype | any | The type of the inherited group |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### Group.setDefault(id, authorization_bearer)
setDefault - Sets the group to be the default group for new users.
Path: api/v1/group/id/:id/set/default
**Kind**: static method of [Group](#Group)
| Param | Type | Description |
| --- | --- | --- |
| id | any | id or name (example: group6) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### Group.delete(id, authorization_bearer)
delete - delete group by its id or name
Path: api/v1/group/id/:id
**Kind**: static method of [Group](#Group)
| Param | Type | Description |
| --- | --- | --- |
| id | any | id or name (example: group1) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### Group.edit(body, id, authorization_bearer)
edit - Edits a group
Path: api/v1/group/id/:id
**Kind**: static method of [Group](#Group)
| Param | Type | Description |
| --- | --- | --- |
| body | Object | |
| id | any | (example: ab31efc8-40a5-4d38-a347-adb4e38d0075) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
**Example**
body
```json
{
"allowed": [
{
"route": "/travelling/portal/*",
"host": null,
"remove_from_path": "/travelling/portal",
"method": "*",
"name": "*-travelling-portal-*"
},
{
"route": "/travelling/api/v1/auth/*",
"host": null,
"method": "*",
"name": "*-travelling-api-v1-auth-*"
},
{
"route": "/travelling/api/v1/user/me/route/allowed",
"host": null,
"method": "GET",
"name": "get-travelling-api-v1-user-me-route-allowed"
},
{
"route": "/travelling/api/v1/user/me/permission/allowed/*",
"host": null,
"method": "GET",
"name": "get-travelling-api-v1-user-me-permission-allowed-*"
},
{
"route": "/travelling/assets/*",
"host": null,
"remove_from_path": "/travelling/assets/",
"method": "*",
"name": "*-travelling-assets-*"
},
{
"route": "travelling/api/v1/config/password",
"host": null,
"method": "get"
}
]
}
```
### Group.get(id, authorization_bearer)
get - Get a group by it's id or name.
Path: api/v1/group/id/:id
**Kind**: static method of [Group](#Group)
| Param | Type | Description |
| --- | --- | --- |
| id | any | id or name (example: group1) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### Group.createByName(id, authorization_bearer)
createByName - Add a new blank group with the set name.
Path: api/v1/group/id/:id
**Kind**: static method of [Group](#Group)
| Param | Type | Description |
| --- | --- | --- |
| id | any | Name of the new group (example: test123) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### Group.create(body, authorization_bearer)
create - Add a new group
Path: api/v1/group
**Kind**: static method of [Group](#Group)
| Param | Type | Description |
| --- | --- | --- |
| body | Object | |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
**Example**
body
```json
{
"name": "group1",
"type": "testgroup",
"allowed": [
{
"route": "/test",
"host": "http://127.0.0.1:1237/",
"remove_from_path": "test",
"method": "*",
"name": "all-test"
}
],
"is_default": false
}
```
## GroupUsers
**Kind**: global class
* [GroupUsers](#GroupUsers)
* [.inherited(id)](#GroupUsers.inherited)
* [.count(id, filter, limit, skip, authorization_bearer)](#GroupUsers.count)
* [.get(id, filter, limit, skip, sort, sortdir, authorization_bearer)](#GroupUsers.get)
### GroupUsers.inherited(id)
inherited - Gets all the users that belong to the group and all of its inherited groups.
##### Optional Query Params
| Param | Description |
| --- | --- |
| id | *optional* (example: 26c6aeff-ab95-4bdd-8260-534cf92d1c23) |
| username | *optional* (example: user7) |
| locked | *optional* (example: true) |
| locked_reason | *optional* (example: Activation Required email your admin to get your account activated) |
| group_request | *optional* (example: superadmin) |
| failed_login_attempts | *optional* (example: 0) |
| change_username | *optional* (example: false) |
| change_password | *optional* (example: false) |
| reset_password | *optional* (example: false) |
| email_verify | *optional* (example: false) |
| group_id | *optional* (example: 7320292c-627e-4e5a-b059-583eabdd6264) |
| email | *optional* (example: test@test.ai) |
| created_on | *optional* (example: 1568419646794) |
| last_login | *optional* (example: null) |
Path: api/v1/group/id/:id/users/inherited
**Kind**: static method of [GroupUsers](#GroupUsers)
| Param | Type | Description |
| --- | --- | --- |
| id | any | id or name (example: superadmin) |
### GroupUsers.count(id, filter, limit, skip, authorization_bearer)
count - Gets all the users that belong to the group.
##### Optional Query Params
\*Note: you can only use range operators (<,B >,B >=,B <=) on the following columns: created_on, updated_on, dob.
| Param | Description |
| --- | --- |
| id | _optional_ (example: 26c6aeff-ab95-4bdd-8260-534cf92d1c23) |
| username | _optional_ (example: user7) |
| locked | _optional_ (example: true) |
| locked_reason | _optional_ (example: Activation Required email your admin to get your account activated) |
| group_request | _optional_ (example: superadmin) |
| failed_login_attempts | _optional_ (example: 0) |
| change_username | _optional_ (example: false) |
| change_password | _optional_ (example: false) |
| reset_password | _optional_ (example: false) |
| email_verify | _optional_ (example: false) |
| group_id | _optional_ (example: 7320292c-627e-4e5a-b059-583eabdd6264) |
| email | _optional_ (example: [test@test.ai](mailto:test@test.ai)) |
| created_on | _optional_ (example: 1568419646794) |
| last_login | _optional_ (example: null) |
Path: api/v1/group/id/:id/users/count
**Kind**: static method of [GroupUsers](#GroupUsers)
| Param | Type | Description |
| --- | --- | --- |
| id | any | Group name or ID. (example: superadmin) |
| filter | any | Filter parameters (example: locked=false,created_on>2021-06-03,created_on<2021-06-06) (example: locked=false,created_on>2021-06-03,created_on<2021-06-06) |
| limit | any | Number of maximum results. (example: 10) (example: 10) |
| skip | any | Number of db rows skipped. (example: 2) (example: 2) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### GroupUsers.get(id, filter, limit, skip, sort, sortdir, authorization_bearer)
get - Gets all the users that belong to the group.
##### Optional Query Params
\*Note: you can only use range operators (<,B >,B >=,B <=) on the following columns: created_on, updated_on, dob.
| Param | Description |
| --- | --- |
| id | _optional_ (example: 26c6aeff-ab95-4bdd-8260-534cf92d1c23) |
| username | _optional_ (example: user7) |
| locked | _optional_ (example: true) |
| locked_reason | _optional_ (example: Activation Required email your admin to get your account activated) |
| group_request | _optional_ (example: superadmin) |
| failed_login_attempts | _optional_ (example: 0) |
| change_username | _optional_ (example: false) |
| change_password | _optional_ (example: false) |
| reset_password | _optional_ (example: false) |
| email_verify | _optional_ (example: false) |
| group_id | _optional_ (example: 7320292c-627e-4e5a-b059-583eabdd6264) |
| email | _optional_ (example: [test@test.ai](mailto:test@test.ai)) |
| created_on | _optional_ (example: 1568419646794) |
| last_login | _optional_ (example: null) |
Path: api/v1/group/id/:id/users
**Kind**: static method of [GroupUsers](#GroupUsers)
| Param | Type | Description |
| --- | --- | --- |
| id | any | Group name or ID. (example: superadmin) |
| filter | any | Filter parameters (example: locked=false,created_on>2021-06-03,created_on<2021-06-06) (example: locked=false,created_on>2021-06-03,created_on<2021-06-06) |
| limit | any | Number of maximum results. (example: 10) (example: 10) |
| skip | any | Number of db rows skipped. (example: 2) (example: 2) |
| sort | any | Sort by any user object key (examples: id, domain, locked, etc.) (example: created_on) |
| sortdir | any | Sort direction (example ascending order: ASC) (example: ASC) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
## GroupUser
**Kind**: global class
* [GroupUser](#GroupUser)
* [.delete(group, type, id, authorization_bearer)](#GroupUser.delete)
* [.removeGroupInheritance(group, type, id, inheritgroupid, inheritgrouptype, authorization_bearer)](#GroupUser.removeGroupInheritance)
* [.addGroupInheritance(group, type, id, inheritgroupid, inheritgrouptype, authorization_bearer)](#GroupUser.addGroupInheritance)
* [.editPropertyValue(group, type, id, property, value, authorization_bearer)](#GroupUser.editPropertyValue)
* [.editProperty(body, group, type, id, property, authorization_bearer)](#GroupUser.editProperty)
* [.edit(body, group, type, id, authorization_bearer)](#GroupUser.edit)
* [.getProperty(group, type, id, property, authorization_bearer)](#GroupUser.getProperty)
* [.get(group, type, id, authorization_bearer)](#GroupUser.get)
### GroupUser.delete(group, type, id, authorization_bearer)
delete - Delete a user by it's id or username from group of a particular type.
Path: api/v1/group/id/:group/type/:type/user/:id
**Kind**: static method of [GroupUser](#GroupUser)
| Param | Type | Description |
| --- | --- | --- |
| group | any | id or name of the group |
| type | any | The type of the group (example: accounts) |
| id | any | id or name (example: user7) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### GroupUser.removeGroupInheritance(group, type, id, inheritgroupid, inheritgrouptype, authorization_bearer)
removeGroupInheritance - Remove a user to a group of a particular type of group.
Path: api/v1/group/id/:group/type/:type/user/:id/inheritance/group/:inheritgroupid/type/:inheritgrouptype
**Kind**: static method of [GroupUser](#GroupUser)
| Param | Type | Description |
| --- | --- | --- |
| group | any | id or name of the group (example: group1) |
| type | any | type of group (example: group) |
| id | any | id or name of the user (example: user5) |
| inheritgroupid | any | id or name of the group to inherit (example: group2) |
| inheritgrouptype | any | type of the group to inherit (example: group) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### GroupUser.addGroupInheritance(group, type, id, inheritgroupid, inheritgrouptype, authorization_bearer)
addGroupInheritance - Add a group for the current user from a group of a particular type.
Path: api/v1/group/id/:group/type/:type/user/:id/inheritance/group/:inheritgroupid/type/:inheritgrouptype
**Kind**: static method of [GroupUser](#GroupUser)
| Param | Type | Description |
| --- | --- | --- |
| group | any | id or name of the group (example: group1) |
| type | any | type of group (example: group) |
| id | any | id or name of the user (example: user5) |
| inheritgroupid | any | id or name of the group to inherit (example: group2) |
| inheritgrouptype | any | type of the group to inherit (example: group) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### GroupUser.editPropertyValue(group, type, id, property, value, authorization_bearer)
editPropertyValue - Edit a current user's property data as a path param from a group of a particular type.
Path: api/v1/group/id/:group/type/:type/user/:id/property/:property/:value
**Kind**: static method of [GroupUser](#GroupUser)
| Param | Type | Description |
| --- | --- | --- |
| group | any | id or name of the group |
| type | any | The type of the group (example: group) |
| id | any | id or name (example: user5) |
| property | any | (example: email) |
| value | any | (example: swag@yolo.com) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### GroupUser.editProperty(body, group, type, id, property, authorization_bearer)
editProperty - Edit a user's property by it's id or username from a group of a particular type.
Path: api/v1/group/id/:group/type/:type/user/:id/property/:property
**Kind**: static method of [GroupUser](#GroupUser)
| Param | Type | Description |
| --- | --- | --- |
| body | Object | |
| group | any | id or name of the group |
| type | any | The type of the group (example: accounts) |
| id | any | id or name (example: user6) |
| property | any | (example: email) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
**Example**
body
```json
{
"locked": false
}
```
### GroupUser.edit(body, group, type, id, authorization_bearer)
edit - Edit a user by it's id or username from group of a particular type.
Path: api/v1/group/id/:group/type/:type/user/:id
**Kind**: static method of [GroupUser](#GroupUser)
| Param | Type | Description |
| --- | --- | --- |
| body | Object | |
| group | any | id or name of the group |
| type | any | The type of the group (example: accounts) |
| id | any | id or name (example: user6) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
**Example**
body
```json
{
"locked": false
}
```
### GroupUser.getProperty(group, type, id, property, authorization_bearer)
getProperty - Get a user's property by it's id or username from group of a particular type.
Path: api/v1/group/id/:group/type/:type/user/:id/property/:property
**Kind**: static method of [GroupUser](#GroupUser)
| Param | Type | Description |
| --- | --- | --- |
| group | any | id or name of the group |
| type | any | The type of the group (example: accounts) |
| id | any | id or name (example: user6) |
| property | any | (example: email) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### GroupUser.get(group, type, id, authorization_bearer)
get - Get a user by it's id or username from group of a particular type.
Path: api/v1/group/id/:group/type/:type/user/:id
**Kind**: static method of [GroupUser](#GroupUser)
| Param | Type | Description |
| --- | --- | --- |
| group | any | id or name of the group |
| type | any | The type of the group (example: accounts) |
| id | any | id or name (example: user6) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
## GroupType
**Kind**: global class
* [GroupType](#GroupType)
* [.deletePermission(id, type, permission, authorization_bearer)](#GroupType.deletePermission)
* [.addPermission(id, type, permission, authorization_bearer)](#GroupType.addPermission)
* [.addRoute(body, id, type, authorization_bearer)](#GroupType.addRoute)
* [.removeInheritance(id, type, inherited, grouptype, authorization_bearer)](#GroupType.removeInheritance)
* [.inheritFrom(id, type, inherited, grouptype, authorization_bearer)](#GroupType.inheritFrom)
* [.setDefault(id, type)](#GroupType.setDefault)
* [.delete(id, type, authorization_bearer)](#GroupType.delete)
* [.get(id, type, authorization_bearer)](#GroupType.get)
* [.edit(body, id, type, authorization_bearer)](#GroupType.edit)
* [.createByName(id, type, authorization_bearer)](#GroupType.createByName)
* [.create(body, type, authorization_bearer)](#GroupType.create)
### GroupType.deletePermission(id, type, permission, authorization_bearer)
deletePermission - Removes a permission/route from a group of a particular type.
Path: api/v1/group/id/:id/type/:type/permission/:permission
**Kind**: static method of [GroupType](#GroupType)
| Param | Type | Description |
| --- | --- | --- |
| id | any | Name of the group (example: anonymous) |
| type | any | Type of the group (example: group) |
| permission | any | Name or Route (example: test-one-three-*) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### GroupType.addPermission(id, type, permission, authorization_bearer)
addPermission - Adds a permission to a group of a particular type.
Path: api/v1/group/id/:id/type/:type/insert/permission/:permission
**Kind**: static method of [GroupType](#GroupType)
| Param | Type | Description |
| --- | --- | --- |
| id | any | Name of the group (example: anonymous) |
| type | any | Type of the group (example: group) |
| permission | any | Permission (example: test-one-three-*) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### GroupType.addRoute(body, id, type, authorization_bearer)
addRoute - Adds a route to a group of a particular type.
```javascript
{
"route": "test/permissions/*", // optional
"host": null, // optional, defaults to travelling host
"method": "*", // optional, defaults to '*'
"remove_from_path": 'test/', // optional
"name": "test-permissions-*" // Required and needs to be unqiue, defaults to method + route seperated by '-' instead of `/`
}
```
Path: api/v1/group/id/:id/type/:type/insert/route
**Kind**: static method of [GroupType](#GroupType)
| Param | Type | Description |
| --- | --- | --- |
| body | Object | |
| id | any | Name of the group |
| type | any | |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
**Example**
body
```json
{
"route": "test/permissions/*",
"host": null,
"method": "*",
"name": "test-permissions-*"
}
```
### GroupType.removeInheritance(id, type, inherited, grouptype, authorization_bearer)
removeInheritance - Removes an inheritance from a group of a particular type.
Path: api/v1/group/id/:id/type/:type/remove/inheritance/:inherited/type/:grouptype
**Kind**: static method of [GroupType](#GroupType)
| Param | Type | Description |
| --- | --- | --- |
| id | any | Name of the group (example: test1234) |
| type | any | The type of the group (example: accounts) |
| inherited | any | Name of the group to inherit from (example: superadmin) |
| grouptype | any | The type of the inherited group |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### GroupType.inheritFrom(id, type, inherited, grouptype, authorization_bearer)
inheritFrom - Adds an inheritance to a group of a particular type.
Path: api/v1/group/id/:id/type/:type/inherit/from/:inherited/type/:grouptype
**Kind**: static method of [GroupType](#GroupType)
| Param | Type | Description |
| --- | --- | --- |
| id | any | Name of the group (example: group1) |
| type | any | The type of the group (example: testgroup) |
| inherited | any | Name of the group to inherit from (example: test123) |
| grouptype | any | The type of the inherited group |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### GroupType.setDefault(id, type)
setDefault - Sets the group of a particular type to be the default group for new users.
Path: api/v1/group/id/:id/type/:type/set/default
**Kind**: static method of [GroupType](#GroupType)
| Param | Type | Description |
| --- | --- | --- |
| id | any | id or name (example: group1) |
| type | any | The type of the group (example: account) |
### GroupType.delete(id, type, authorization_bearer)
delete - delete group of a particular type by its name or id
Path: api/v1/group/id/:id/type/:type
**Kind**: static method of [GroupType](#GroupType)
| Param | Type | Description |
| --- | --- | --- |
| id | any | id or name |
| type | any | The type of the group |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### GroupType.get(id, type, authorization_bearer)
get - Get a group by it's id or name of a particular type.
Path: api/v1/group/id/:id/type/:type
**Kind**: static method of [GroupType](#GroupType)
| Param | Type | Description |
| --- | --- | --- |
| id | any | id or name (example: group1) |
| type | any | The type of the group (example: accounts) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### GroupType.edit(body, id, type, authorization_bearer)
edit - Edits a group of a particular type
Path: api/v1/group/id/:id/type/:type
**Kind**: static method of [GroupType](#GroupType)
| Param | Type | Description |
| --- | --- | --- |
| body | Object | |
| id | any | id or name |
| type | any | The type of the group |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
**Example**
body
```json
{"inherited":["a717b880-b17b-4995-9610-cf451a06d015","7ec8c351-7b8a-4ea8-95cc-0d990b225768"]}
```
### GroupType.createByName(id, type, authorization_bearer)
createByName - Add a new blank group with the set name and type
Path: api/v1/group/id/:id/type/:type
**Kind**: static method of [GroupType](#GroupType)
| Param | Type | Description |
| --- | --- | --- |
| id | any | Name of the new group (example: test1234) |
| type | any | Type of the new group (example: accounts) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### GroupType.create(body, type, authorization_bearer)
create - Add a new group of a particular type
Path: api/v1/group/type/:type
**Kind**: static method of [GroupType](#GroupType)
| Param | Type | Description |
| --- | --- | --- |
| body | Object | |
| type | any | The type of the group |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
**Example**
body
```json
{
"name": "group1",
"type": "accounts",
"allowed": [
{
"route": "/test",
"host": "http://127.0.0.1:1237/",
"remove_from_path": "test",
"method": "*",
"name": "all-test"
}
],
"is_default": false
}
```
## GroupTypeUsers
Both requests are disabled. Dont use.
**Kind**: global class
* [GroupTypeUsers](#GroupTypeUsers)
* [.inherited(id, type)](#GroupTypeUsers.inherited)
* [.count(id, type, filter, limit, skip, authorization_bearer)](#GroupTypeUsers.count)
* [.get(id, type, filter, limit, skip, sort, sortdir, authorization_bearer)](#GroupTypeUsers.get)
### GroupTypeUsers.inherited(id, type)
inherited - Gets all the users that belong to the group of a particular type by its name or id and all of its inherited groups.
##### Optional Query Params
| Param | Description |
| --- | --- |
| id | *optional* (example: 26c6aeff-ab95-4bdd-8260-534cf92d1c23) |
| username | *optional* (example: user7) |
| locked | *optional* (example: true) |
| locked_reason | *optional* (example: Activation Required email your admin to get your account activated) |
| group_request | *optional* (example: superadmin) |
| failed_login_attempts | *optional* (example: 0) |
| change_username | *optional* (example: false) |
| change_password | *optional* (example: false) |
| reset_password | *optional* (example: false) |
| email_verify | *optional* (example: false) |
| group_id | *optional* (example: 7320292c-627e-4e5a-b059-583eabdd6264) |
| email | *optional* (example: test@test.ai) |
| created_on | *optional* (example: 1568419646794) |
| last_login | *optional* (example: null) |
Path: api/v1/group/id/:id/type/:type/users/inherited
**Kind**: static method of [GroupTypeUsers](#GroupTypeUsers)
| Param | Type | Description |
| --- | --- | --- |
| id | any | (example: group4) |
| type | any | The type of the group (example: groups) |
### GroupTypeUsers.count(id, type, filter, limit, skip, authorization_bearer)
count - Gets all the users that belong to the group of a particular type by its name or id.
##### Optional Query Params
\*Note: you can only use range operators (<,B >,B >=,B <=) on the following columns: created_on, updated_on, dob.
| Param | Description |
| --- | --- |
| id | _optional_ (example: 26c6aeff-ab95-4bdd-8260-534cf92d1c23) |
| username | _optional_ (example: user7) |
| locked | _optional_ (example: true) |
| locked_reason | _optional_ (example: Activation Required email your admin to get your account activated) |
| group_request | _optional_ (example: superadmin) |
| failed_login_attempts | _optional_ (example: 0) |
| change_username | _optional_ (example: false) |
| change_password | _optional_ (example: false) |
| reset_password | _optional_ (example: false) |
| email_verify | _optional_ (example: false) |
| group_id | _optional_ (example: 7320292c-627e-4e5a-b059-583eabdd6264) |
| email | _optional_ (example: [test@test.ai](mailto:test@test.ai)) |
| created_on | _optional_ (example: 1568419646794) |
| last_login | _optional_ (example: null) |
Path: api/v1/group/id/:id/type/:type/users/count
**Kind**: static method of [GroupTypeUsers](#GroupTypeUsers)
| Param | Type | Description |
| --- | --- | --- |
| id | any | Group name or ID. (example: superadmin) |
| type | any | Group type. (example: group) |
| filter | any | Filter parameters (example: locked=false,created_on>2021-06-03,created_on<2021-06-06) (example: locked=false,created_on>2021-06-03,created_on<2021-06-06) |
| limit | any | Number of maximum results. (example: 10) (example: 10) |
| skip | any | Number of db rows skipped. (example: 2) (example: 2) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### GroupTypeUsers.get(id, type, filter, limit, skip, sort, sortdir, authorization_bearer)
get - Gets all the users that belong to the group of a particular type by its name or id.
##### Optional Query Params
\*Note: you can only use range operators (<,B >,B >=,B <=) on the following columns: created_on, updated_on, dob.
| Param | Description |
| --- | --- |
| id | _optional_ (example: 26c6aeff-ab95-4bdd-8260-534cf92d1c23) |
| username | _optional_ (example: user7) |
| locked | _optional_ (example: true) |
| locked_reason | _optional_ (example: Activation Required email your admin to get your account activated) |
| group_request | _optional_ (example: superadmin) |
| failed_login_attempts | _optional_ (example: 0) |
| change_username | _optional_ (example: false) |
| change_password | _optional_ (example: false) |
| reset_password | _optional_ (example: false) |
| email_verify | _optional_ (example: false) |
| group_id | _optional_ (example: 7320292c-627e-4e5a-b059-583eabdd6264) |
| email | _optional_ (example: [test@test.ai](mailto:test@test.ai)) |
| created_on | _optional_ (example: 1568419646794) |
| last_login | _optional_ (example: null) |
Path: api/v1/group/id/:id/type/:type/users
**Kind**: static method of [GroupTypeUsers](#GroupTypeUsers)
| Param | Type | Description |
| --- | --- | --- |
| id | any | Group name or ID. (example: superadmin) |
| type | any | Group type. (example: group) |
| filter | any | Filter parameters (example: locked=false,created_on>2021-06-03,created_on<2021-06-06) (example: locked=false,created_on>2021-06-03,created_on<2021-06-06) |
| limit | any | Number of maximum results. (example: 10) (example: 10) |
| skip | any | Number of db rows skipped. (example: 2) (example: 2) |
| sort | any | Sort by any user object key (examples: id, domain, locked, etc.) (example: created_on) |
| sortdir | any | Sort direction (example ascending order: ASC) (example: ASC) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
## GroupTypeUser
**Kind**: global class
* [GroupTypeUser](#GroupTypeUser)
* [.delete(type, id, authorization_bearer)](#GroupTypeUser.delete)
* [.removeGroupInheritance(type, id, inheritgroupid, inheritgrouptype, authorization_bearer)](#GroupTypeUser.removeGroupInheritance)
* [.addGroupInheritance(type, id, inheritgroupid, inheritgrouptype, authorization_bearer)](#GroupTypeUser.addGroupInheritance)
* [.editPropertyValue(type, id, property, value, authorization_bearer)](#GroupTypeUser.editPropertyValue)
* [.editProperty(body, type, id, property, authorization_bearer)](#GroupTypeUser.editProperty)
* [.edit(body, type, id, authorization_bearer)](#GroupTypeUser.edit)
* [.getProperty(type, id, property, authorization_bearer)](#GroupTypeUser.getProperty)
* [.get(type, id, authorization_bearer)](#GroupTypeUser.get)
### GroupTypeUser.delete(type, id, authorization_bearer)
delete - Delete a user by it's id or username from group of a particular type.
Path: api/v1/group/type/:type/user/:id
**Kind**: static method of [GroupTypeUser](#GroupTypeUser)
| Param | Type | Description |
| --- | --- | --- |
| type | any | The type of the group (example: accounts) |
| id | any | id or name (example: user7) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### GroupTypeUser.removeGroupInheritance(type, id, inheritgroupid, inheritgrouptype, authorization_bearer)
removeGroupInheritance - Remove a user to a group of a particular type of group.
Path: api/v1/group/type/:type/user/:id/inheritance/group/:inheritgroupid/type/:inheritgrouptype
**Kind**: static method of [GroupTypeUser](#GroupTypeUser)
| Param | Type | Description |
| --- | --- | --- |
| type | any | type of group (example: group) |
| id | any | id or name of the user (example: user5) |
| inheritgroupid | any | id or name of the group to inherit (example: group2) |
| inheritgrouptype | any | type of the group to inherit (example: group) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### GroupTypeUser.addGroupInheritance(type, id, inheritgroupid, inheritgrouptype, authorization_bearer)
addGroupInheritance - Add a user to a group of a particular type of group.
Path: api/v1/group/type/:type/user/:id/inheritance/group/:inheritgroupid/type/:inheritgrouptype
**Kind**: static method of [GroupTypeUser](#GroupTypeUser)
| Param | Type | Description |
| --- | --- | --- |
| type | any | type of group (example: group) |
| id | any | id or name of the user (example: user5) |
| inheritgroupid | any | id or name of the group to inherit (example: group2) |
| inheritgrouptype | any | type of the group to inherit (example: group) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### GroupTypeUser.editPropertyValue(type, id, property, value, authorization_bearer)
editPropertyValue - Edit a current user's property data as a path param from a group of a particular type.
Path: api/v1/group/type/:type/user/:id/property/:property/:value
**Kind**: static method of [GroupTypeUser](#GroupTypeUser)
| Param | Type | Description |
| --- | --- | --- |
| type | any | The type of the group (example: group) |
| id | any | id or name (example: user5) |
| property | any | (example: email) |
| value | any | (example: swag@yolo.com) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### GroupTypeUser.editProperty(body, type, id, property, authorization_bearer)
editProperty - Edit a user's property by it's id or username from a group of a particular type.
Path: api/v1/group/type/:type/user/:id/property/:property
**Kind**: static method of [GroupTypeUser](#GroupTypeUser)
| Param | Type | Description |
| --- | --- | --- |
| body | Object | |
| type | any | The type of the group (example: accounts) |
| id | any | id or name (example: user6) |
| property | any | (example: email) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
**Example**
body
```json
{
"locked": false
}
```
### GroupTypeUser.edit(body, type, id, authorization_bearer)
edit - Edit a user by it's id or username from group of a particular type.
Path: api/v1/group/type/:type/user/:id
**Kind**: static method of [GroupTypeUser](#GroupTypeUser)
| Param | Type | Description |
| --- | --- | --- |
| body | Object | |
| type | any | The type of the group (example: accounts) |
| id | any | id or name (example: user6) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
**Example**
body
```json
{
"locked": false
}
```
### GroupTypeUser.getProperty(type, id, property, authorization_bearer)
getProperty - Get a user's property by it's id or username from group of a particular type.
Path: api/v1/group/type/:type/user/:id/property/:property
**Kind**: static method of [GroupTypeUser](#GroupTypeUser)
| Param | Type | Description |
| --- | --- | --- |
| type | any | The type of the group (example: accounts) |
| id | any | id or name (example: user6) |
| property | any | (example: email) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### GroupTypeUser.get(type, id, authorization_bearer)
get - Get a user by it's id or username from group of a particular type.
Path: api/v1/group/type/:type/user/:id
**Kind**: static method of [GroupTypeUser](#GroupTypeUser)
| Param | Type | Description |
| --- | --- | --- |
| type | any | The type of the group (example: accounts) |
| id | any | id or name (example: user6) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
## GroupRequest
**Kind**: global class
## GroupRequestUser
**Kind**: global class
* [GroupRequestUser](#GroupRequestUser)
* [.delete(body, type, id, authorization_bearer)](#GroupRequestUser.delete)
* [.addGroupInheritance(type, id, inheritgroupid, inheritgrouptype, authorization_bearer)](#GroupRequestUser.addGroupInheritance)
* [.editProperty(body, type, id, property, authorization_bearer)](#GroupRequestUser.editProperty)
* [.edit(body, type, id, authorization_bearer)](#GroupRequestUser.edit)
### GroupRequestUser.delete(body, type, id, authorization_bearer)
delete - Delete a user by it's id or username from the user's `group_request` of a particular type.
Path: api/v1/group/request/type/:type/user/:id
**Kind**: static method of [GroupRequestUser](#GroupRequestUser)
| Param | Type | Description |
| --- | --- | --- |
| body | Object | |
| type | any | (example: testgroup) |
| id | any | (example: user69) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
**Example**
body
```json
{
"locked": false
}
```
### GroupRequestUser.addGroupInheritance(type, id, inheritgroupid, inheritgrouptype, authorization_bearer)
addGroupInheritance - Add a user to a group from the user's `group_request` of a particular type.
Path: api/v1/group/request/type/:type/user/:id/inheritance/group/:inheritgroupid/type/:inheritgrouptype
**Kind**: static method of [GroupRequestUser](#GroupRequestUser)
| Param | Type | Description |
| --- | --- | --- |
| type | any | type of group (example: group) |
| id | any | id or name of the user (example: user5) |
| inheritgroupid | any | id or name of the group to inherit (example: group2) |
| inheritgrouptype | any | type of the group to inherit (example: group) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### GroupRequestUser.editProperty(body, type, id, property, authorization_bearer)
editProperty - Edit a user's property by it's id or username from the user's `group_request` of a particular type.
Path: api/v1/group/request/type/:type/user/:id/property/:property
**Kind**: static method of [GroupRequestUser](#GroupRequestUser)
| Param | Type | Description |
| --- | --- | --- |
| body | Object | |
| type | any | (example: accounts) |
| id | any | (example: user6) |
| property | any | (example: email) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
**Example**
body
```json
"chad@yolo.com"
```
### GroupRequestUser.edit(body, type, id, authorization_bearer)
edit - Edit a user by it's id or username from the user's `group_request` of a particular type.
Path: api/v1/group/request/type/:type/user/:id
**Kind**: static method of [GroupRequestUser](#GroupRequestUser)
| Param | Type | Description |
| --- | --- | --- |
| body | Object | |
| type | any | (example: accounts) |
| id | any | (example: user6) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
**Example**
body
```json
{
"locked": false
}
```
## Users
**Kind**: global class
* [Users](#Users)
* [.byGroupRequest(group_request, authorization_bearer)](#Users.byGroupRequest)
* [.count(limit, skip, filter, ids, authorization_bearer)](#Users.count)
* [.get(sort, limit, skip, filter, sortdir, ids, params, authorization_bearer)](#Users.get)
### Users.byGroupRequest(group_request, authorization_bearer)
byGroupRequest - Gets all the users that have the specified group request
##### Optional Query Params
| Param | Description |
| --- | --- |
| id | *optional* (example: 26c6aeff-ab95-4bdd-8260-534cf92d1c23) |
| username | *optional* (example: user7) |
| locked | *optional* (example: true) |
| locked_reason | *optional* (example: Activation Required email your admin to get your account activated) |
| group_request | *optional* (example: superadmin) |
| failed_login_attempts | *optional* (example: 0) |
| change_username | *optional* (example: false) |
| change_password | *optional* (example: false) |
| reset_password | *optional* (example: false) |
| email_verify | *optional* (example: false) |
| group_id | *optional* (example: 7320292c-627e-4e5a-b059-583eabdd6264) |
| email | *optional* (example: test@test.ai) |
| created_on | *optional* (example: 1568419646794) |
| last_login | *optional* (example: null) |
Path: api/v1/users/group/request/:group_request
**Kind**: static method of [Users](#Users)
| Param | Type | Description |
| --- | --- | --- |
| group_request | any | name of the group (example: superadmin) |
| authorization_bearer | string | The client_credentials generated OAUth2 access token. |
### Users.count(limit, skip, filter, ids, authorization_bearer)
count - Gets all the users
##### Optional Query Params
\*Note: you can only use range operators (<,B >,B >=,B <=) on the following columns: created_on, updated_on, dob.
| Param | Description |
| --- | --- |
| id | _optional_ (example: 26c6aeff-ab95-4bdd-8260-534cf92d1c23) |
| username | _optional_ (example: user7) |
| locked | _optional_ (example: true) |
| locked_reason | _optional_ (example: Activation Required email your admin to get your account activated) |
| group_request | _optional_ (example: superadmin) |
| failed_login_attempts | _optional_ (example: 0) |
| change_username | _optional_ (example: false) |
| change_password | _optional_ (example: false) |
| reset_password | _optional_ (example: false) |
| email_verify | _optional_ (example: false) |
| group_id | _optional_ (example: 7320292c-627e-4e5a-b059-583eabdd6264) |
| email | _optional_ (example: [test@test.ai](mailto:test@test.ai)) |
| created_on | _optional_ (example: 1568419646794) |
| last_login | _optional_ (example: null) |
Path: api/v1/users/count
**Kind**: static method of [Users](#Users)
| Param | Type | Description |
| --- | --- | --- |
| limit | any | Number of maximum results. (example: 2) (example: 2) |
| skip | any | Number of db rows skipped. (example: 10) (example: 10) |
| filter | any | Filter parameters (example: locked=false,created_o