UNPKG

@vista.io/vista-api-client

Version:

NodeJS implementation of the Vista API.

122 lines (83 loc) 5.91 kB
# Vista API for NodeJS NodeJS client for the Vista API. ## Reference - [Vista API Documentation](https://docs.govista.io/api/) ## Prerequisites You'll need to create a Vista API key from the Vista Dashboard. ## Usage Install the package: ``` npm install @vista.io/vista-api-client; ``` Then in your Node application: ```js import VistaClient from '@vista.io/vista-api-client'; const VISTA_API_KEY = 'create-in-vista-dashboard'; const client = new VistaClient(VISTA_API_KEY, 'branch_name'); const roles = client.roles.list() ``` After that you are good to go! Please see the [Vista API Documentation](https://docs.govista.io/api/) for the API documentation. ## All Operator You can use `VistaClient.ALL` in place where `resource_id` or `resource_type` is accepted to indicate all. ## Changing Branches for Operation Although `branch` is required as a part of the constructor, one may use `client.withBranch(branch: string)` to use supply a different branch using the same client. ## Usage The following describes methods namespaced by Vista [resources](https://docs.govista.io/Concepts/Terminology). ### Admin `client.admin` | method | description | |--------|-------------| | `createBranch(branch: string)`| Creates a set of read-only tokens meant to be used by Vista React components | | `cloneBranch(branch: string, newBranch: string)`| Clones [templates](https://docs.govista.io/Concepts/Terminology#permission-template) in `branch` to `newBranch` | | `createReadTokens()`| Creates a set of read-only tokens meant to be used by Vista React components | | `getCompany()`| Gets Company ID | ### [Resource Types](https://docs.govista.io/Concepts/Terminology#resource) `client.resourceTypes` | method | description | |--------|-------------| | `list()` | Lists all Resource Types | | `upsert(name: string, actions: string[], attributes: {id: string, target_resource_type: string, attribute_type: 'RELATIONSHIP' \| 'SCALAR'}[])` | Upserts a Resource Type | | `addRelationship(fromId: string, fromResourceType: string, attribute: string, toId: string, toResourceType: string)`| Adds an attribute relationship between 2 resourceIds | ### [Roles](https://docs.govista.io/Concepts/Terminology#role) `client.roles` | method | description | |--------|-------------| | `client.roles.list(orgId?: string)` | Lists all Roles | | `client.roles.upsert(roleId: string, permissions: { resourceType: string, attribute: string, action: string, ownerId: string }[] owners: { key: { query: string, dbId: string } }, arentRoles: string[], orgId: string)` | Upserts a Role | ### [Users](https://docs.govista.io/Concepts/Terminology#user) `client.users` | method | description | |--------|-------------| | `create(userId: string, orgId: string)` | Creates new User | | `list(orgId?: string)`| Lists Users in `orgId` | | `listOrgs()`| Lists all orgs for set branch | | `assignToUserset(userId: string, usersetId: string)` | Adds User to a Userset | | `removeFromUserset(userId: string, usersetId: string)` | Removes User from Userset | | `check(userId: string, action: string, resourceType: string, resourceId: string, attribute?: string)` | Checks User access | | `expand(userId: string)` | Returns all permissions for users (action, resource_type, resource_id) | | `grantAction(userId: string, action: string, resourceType: string, resourceId: string, attribute?: string?)` | Allows User to perform `action` on (`resourceId`, `resourceType`) | | `revokeAction(userId: string, action: string, resourceType: string, resourceId: string, attribute?: string?)` | Revokes `action` on (`resourceId`, `resourceType`) for User | | `grantRole(userId: string, roleId: string, resourceType: string, resourceId: string)` | Grants Role to User | | `revokeRole(userId: string, roleId: string, resourceType: string, resourceId: string)` | Revokes Role from User | ### [Usersets](https://docs.govista.io/Concepts/Terminology#userset) `client.usersets` | method | description | |--------|-------------| | `create(userId: string, orgId: string)` | Creates Userset | | `inherit(childRoleId: string, parentRoleId: string)` | Adds Userset as child of parent Userset | | `grantAction(userId: string, action: string, resourceType: string, resourceId: string, attribute?: string)` | Allows User to perform `action` on (`resourceId`, `resourceType`) | | `revokeAction(userId: string, action: string, resourceType: string, resourceId: string, attribute?: string)` | Revokes `action` on (`resourceId`, `resourceType`) for Userset | | `grantRole(userId: string, roleId: string, resourceType: string, resourceId: string)` | Grants Role to Userset | | `revokeRole(userId: string, roleId: string, resourceType: string, resourceId: string)` | Revokes Role from Userset | ### Grants `client.grants` | method | description | |--------|-------------| | `list(userId: string \| null, action: string \| null, resourceId: string \| null, resourceType: string \| null, attribute: string \| null, orgId: string \| null, startTime: string \| null, endTime: string \| null)`| List & filter grants by arguments, `startTime` is inclusive (>=) and `endTime` is exclusive (<) | | `listUnflattened(usersetId: string \| None, relation: string \| None, relationType: string \| None, resourceId: string \| None, resourceType: string \| None, attribute: string \| None, orgId: string \| None)`| Filters User or Userset grants | ### Blueprint `client.blueprint` | method | description | |--------|-------------| | `upsert(fpath: string)`| Upserts branches, resource types, and roles defined in blueprint file (yaml or json). `fpath` is the relative path to the vista config file.|