openapi: 3.1.0
info:
  description: |-
    <h2>IAM OVERVIEW</h2>

    IAM technology can be used to initiate, capture, record and manage user identities and their related access permissions in an automated fashion. This ensures that access privileges are granted according to one interpretation of policy and all individuals and services are properly authenticated, authorized and audited.
    The business IT environment is ever evolving and managing access has become a big administrative burden. Users switch between projects and as their duties change, it could result in changes to their access level. The users with privileges beyond their requirement is potentially unsafe and can lead to data loss or theft.
    Zerion Identity is a web service that helps you securely control access to Zerion resources for your users. You use Zerion Identity to control who can use your Zerion resources (authentication) and what resources they can use and in what ways (authorization).

    <h3>GOALS</h3>

    Centralize Data collector, Dataflow and future micro services login authentication and access management.
    Create an expandable access management system for future micro services.

    <h3>SPECIFICATIONS</h3>

    Zerion Identity and Access consists of the following core objects

    <h3>Users</h3>

    An user is an entity that you create in Zerion Identity to represent the person or service using it when interacting with Zerion Identity. A primary use for users is to give people you work with the ability to sign in to the Zerion Identity Management Console for interactive tasks and to make programmatic requests to Zerion Identity services using the API. A user in Zerion Identity consists of a name, a password to sign into the Zerion Identity Management Console, and up to two devices associated with the SQRL login keys. When a user is created, an unique randomized entity key is generated for that user.

    <h3>User Groups</h3>

    An group is a collection of users. You can use groups to specify permissions for a collection of users, which can make those permissions easier to manage for those users. For example, you could have a group called Admins and give that group the types of permissions that administrators typically need. Any user in that group automatically has the permissions that are assigned to the group. If a new user joins your organization and should have administrator privileges, you can assign the appropriate permissions by adding the user to that group. Similarly, if a person changes jobs in your organization, instead of editing that user's permissions, you can remove him or her from the old groups and add him or her to the appropriate new groups. Note that a group is not truly an identity because it cannot be identified as a Principal in an access policy. It is only a way to attach policies to multiple users at one time.

    <h3>Permissions</h3>

    Permissions let you specify who has access to Zerion resources, and what actions they can perform on those resources. Every Zerion Identity user starts with no permissions. In other words, by default, users can do nothing. To give a user permission to do something, you can add the permission to the user (that is, attach a policy to the user) or add the user to a group that has the desired permission. For example, you might grant a user permission to list his or her own details. You might also expand that permission and also let each user create, update, and delete their SQRL keys. When you give permissions to a group, all users in that group get those permissions. For example, you can give the Admins group permission to perform any of the Zerion Identity actions on any of the Zerion account resources. Another example: You can give the Managers group permission to list the forms in that particular Zerion account.

    <h3><b>General Notes:</b></h3>

    <li><b>Most list based requests will return a maximum of 100 objects per request (Users, User Groups, and Permissions).</b></li>
    <li>Default response will be returned when invalid grammar is passed into the request.</li>
    <li>Field grammar can include filters (single or multiple conditions) and sort order.</li>

    <h3><b>Using Parameters</b></h3>

    <li>Parameters will allow you to refined the request and consist of the following:</li>
    <li><b>fields:</b> Allow you to specify which attributes are returned.  Filter and sort priority can be assigned to each field.  </li>
    <li><b>limit:</b> Allow you to specify how many results are returned.</li>
    <li><b>offset:</b> Allow you to specify number of results to skip.</li>
    <li>For example, this url would only provide the user ids and names.  <br><blockquote>https://identity.zerionsoftware.com/v1/users</blockquote></li>
    <li>This example demonstrates returning first name, last name, and profile id.  This will also skip the first record only display 2 after that.  <br><blockquote>https://identity.zerionsoftware.com/v1/users?<b>fields=firstName,lastName,profileId&offset=1&limit=2</b></blockquote></li>

    <h3><b>Sorting Fields:</b></h3>

    <li>To sort by column(s), there are three components:</li>
    <li><b>Column:</b> The field you want to sort by</li>
    <li><b>Operator:</b> These consist of < (ascending) and  > (descending)</li>
    <li><b>Sort Priority:</b>  When sorting by multiple columns, you set priority by designating a number after the operator.</li>
    <li>In this example, lastName has first priority in ascending order followed by firstName in descending order. <br><blockquote> https://identity.zerionsoftware.com/v1/users?<b>fields=firstName:>2,lastName:&lt;1 </b> </blockquote></li>

    <h3><b>Filtering Fields:</b></h3>

    <p>Adding filters will narrow down your request output or input.  This can be used with both GET and PUT requests.<br>
    <b>GET:</b> Will return any data that meets your filter’s rules.<br>
    <b>PUT:</b> Instead of updating a specific record, update many records that match the filter.  For example, changing everyone who is now over 18 from child to an adult.</p>

    <li><b>Three Components of Filtering</b></li>
    <li><b>Column:</b> The field you want to filter</li>
    <li><b>Operator:</b> These consist of <, <=, >, >=, = and ~</li>
    <li><b>Value:</b>The value you are basing your filter on.  Boolean values can be passed in either as true and false, or 0 and 1.</li>

    <li><b>Examples</b></li>
    <li>Get everyone who is between Profile Id 161658 AND 161705 (Note: the '&' symbol may need to be url encoded which is '%26') <br><blockquote><b>profileId((>="161658")&(<="161705"))</b></blockquote></br> or encoded<blockquote><b>profileId((>="161658")%26(<="161705"))</b></blockquote></li>
    <li>Get everyone that Profile Id is less than or equal to 161658 OR more than 161705 <br><blockquote><b>profileId((<="161658")|(>="161705"))</blockquote></b></li>
    <li>Get all usernames that start with 'K' <br><blockquote><b>username(~"K%")</blockquote></b></li>
    <li>Get all usernames that end with 'son' <br><blockquote> <b>username(~"%son")</b></blockquote></li>
    <li>Get all usernames that contain 'mit' <br><blockquote> <b>username(~"%mit%")</b></blockquote></li>
    <li>Now combining the examples above in a URL.<br><blockquote>https://identity.zerionsoftware.com/v1/users?fields=<b>profileId((>="161658")%26(<="161705")),username(~"demo%")</b></blockquote></li>

    <li><b>Searching Multiple Specific Values</b></li>
    <li>This will allow you to pass in multiple specifc values you want the query to return.  Form example,</li>
    <li>Get both records for username kjohnson AND mjordan <br><blockquote><b>username(="kjohnson"|="mjordan")</blockquote></b></li>

    <!--
    <h1>Making API Requests</h1>
    <li>To make requests to the API, you must obtain an access token.  To obtain an a valid access token, click on the link below to get started.</li>
    <li><a href = "https://iformbuilder.zendesk.com/hc/en-us/articles/201702900-What-are-the-API-Apps-Start-Here-">Generating Access Token</a></li>
    -->
  title: Zerion Identity and Access Management
  version: ''
servers:
  - url: https://identity.zerionsoftware.com/v1/
paths:
  /policies:
    delete:
      operationId: delete-policies
      summary: Delete a List of Policies
      description: ''
      parameters:
        - name: fields
          in: query
          description: extra information of each user on the list
          required: false
          schema:
            type: string
        - name: limit
          in: query
          description: maximum count of the user list
          required: false
          schema:
            type: number
          example: '100'
        - name: offset
          in: query
          description: skip that many users before beginning to return
          required: false
          schema:
            type: number
          example: '0'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  examples:
                    - 7e72b386ac43d1414e59188b
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              examples:
                response:
                  value:
                    - id: 7e72b386ac43d1414e59188b
                    - id: 7e72b386ac43d1414e59188c
              schema:
                type: object
                properties:
                  id:
                    description: the deleted policy id
                    type: string
                required:
                  - id
      security:
        - oauth2: []
      tags:
        - Policy Resource
    get:
      operationId: get-policies
      summary: Retrieve a List of Policies
      description: ''
      parameters:
        - name: fields
          in: query
          description: extra information of each user on the list
          required: false
          schema:
            type: string
        - name: limit
          in: query
          description: maximum count of the user list
          required: false
          schema:
            type: number
          example: '100'
        - name: offset
          in: query
          description: skip that many users before beginning to return
          required: false
          schema:
            type: number
          example: '0'
      responses:
        '200':
          description: OK
          headers:
            Total-Count:
              schema:
                type: string
          content:
            application/json:
              examples:
                response:
                  value:
                    - id: 7e72b386ac43d1414e59188b
                      name: demo_policy1
                      permissions:
                        - actions:
                            - zim::create::users
                          effect: allow
                          resources:
                            - zws::servers::demo::*
                      profileId: 171235
                      serverId: demo
                    - id: 7e72b386ac43d1414e59188c
                      name: demo_policy2
                      permissions:
                        - actions:
                            - zim::create::users
                          effect: allow
                          resources:
                            - zws::servers::demo::*
                      profileId: 171235
                      serverId: demo
                    - id: 7e72b386ac43d1414e59188d
                      name: demo_policy3
                      permissions:
                        - actions:
                            - zim::create::users
                          effect: allow
                          resources:
                            - zws::servers::demo::*
                      profileId: 171235
                      serverId: demo
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  permissions:
                    type: array
                    items: {}
                  profile_id:
                    type: number
                  server_id:
                    type: string
                required:
                  - id
                  - name
                  - permissions
                  - serverId
                  - profileId
      security:
        - oauth2: []
      tags:
        - Policy Resource
    post:
      operationId: post-policies
      summary: Create New Policies
      description: ''
      parameters:
        - name: profile_id
          in: query
          description: id of the profile
          required: true
          schema:
            type: string
          example: self
      requestBody:
        $ref: '#/components/requestBodies/Create_New_User_GroupsBody'
      responses:
        '201':
          description: Created
          headers: {}
          content:
            application/json:
              examples:
                response:
                  value:
                    - id: 7e72b386ac43d1414e59188d
                    - id: 7e72b386ac43d1414e59188e
              schema:
                type: object
                properties:
                  id:
                    description: the created policies id
                    type: string
                required:
                  - id
      security:
        - oauth2: []
      tags:
        - Policy Resource
    put:
      operationId: put-policies
      summary: Update a List of Policies
      description: ''
      parameters:
        - name: fields
          in: query
          description: extra information of each user on the list
          required: false
          schema:
            type: string
        - name: limit
          in: query
          description: maximum count of the user list
          required: false
          schema:
            type: number
          example: '100'
        - name: offset
          in: query
          description: skip that many users before beginning to return
          required: false
          schema:
            type: number
          example: '0'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                description:
                  type: string
                  examples:
                    - Description of this user group
                id:
                  type: string
                  examples:
                    - 7e72b386ac43d1414e59188b
                name:
                  type: string
                  examples:
                    - demo_group1
                type:
                  type: string
                  examples:
                    - no idea what this is
                used_as:
                  type: string
                  examples:
                    - no idea what this is
              required:
                - name
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              examples:
                response:
                  value:
                    - id: 7e72b386ac43d1414e59188b
                    - id: 7e72b386ac43d1414e59188c
              schema:
                type: object
                properties:
                  id:
                    description: the updated policy id
                    type: string
                required:
                  - id
      security:
        - oauth2: []
      tags:
        - Policy Resource
  /policies/{policy_id}:
    delete:
      operationId: delete-policies-policy-id
      summary: Delete a Policy
      description: ''
      parameters:
        - name: policy_id
          in: path
          description: id of the policy
          required: true
          schema:
            type: string
          example: self
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              examples:
                response:
                  value:
                    id: 7e72b386ac44d1414e59188b
              schema:
                type: object
                properties:
                  id:
                    description: the deleted policy id
                    type: string
                required:
                  - id
      security:
        - oauth2: []
      tags:
        - Policy Resource
    get:
      operationId: get-policies-policy-id
      summary: Retrieve a policy
      description: ''
      parameters:
        - name: policy_id
          in: path
          description: id of the policy
          required: true
          schema:
            type: string
          example: self
      responses:
        '200':
          description: OK
          headers: {}
          content:
            '*/*':
              schema:
                type: object
                properties:
                  created_date:
                    type: string
                  description:
                    type: string
                  id:
                    type: string
                  modified_date:
                    type: string
                  name:
                    type: string
                  permissions:
                    type: array
                    items: {}
                  profile_id:
                    type: number
                  role_type:
                    type: string
                  server_id:
                    type: string
                  type:
                    type: string
                  used_as:
                    type: string
                  user_groups:
                    type: array
                    items: {}
                  users:
                    type: array
                    items: {}
                required:
                  - id
                  - name
                  - permissions
                  - roleType
      security:
        - oauth2: []
      tags:
        - Policy Resource
    put:
      operationId: put-policies-policy-id
      summary: Update a Polilcy
      description: ''
      parameters:
        - name: policy_id
          in: path
          description: id of the policy
          required: true
          schema:
            type: string
          example: self
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                description:
                  type: string
                  examples:
                    - Description of this user group
                type:
                  type: string
                  examples:
                    - no idea what this is
                used_as:
                  type: string
                  examples:
                    - no idea what this is
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              examples:
                response:
                  value:
                    id: 7e72b386ac44d1414e59188b
              schema:
                type: object
                properties:
                  id:
                    description: the updated policy id
                    type: string
                required:
                  - id
      security:
        - oauth2: []
      tags:
        - Policy Resource
  /policies/{policy_id}/userGroups:
    delete:
      operationId: delete-policies-policy-id-user-groups
      summary: Unassign User Group from Policy
      description: ''
      parameters:
        - name: policy_id
          in: path
          description: id of the policy
          required: true
          schema:
            type: string
          example: self
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                properties:
                  id:
                    type: string
                required:
                  - id
                type: object
              examples:
                - - id: 6f72b386ac43d1414e59188d
                  - id: 6f72b386ac43d1414e59188e
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              examples:
                response:
                  value:
                    - id: 6e72b386ac43d1414e59188d
                    - id: 6e72b386ac43d1414e59188e
              schema:
                type: object
                properties:
                  id:
                    type: string
                required:
                  - id
      security:
        - oauth2: []
      tags:
        - Policy Resource
    get:
      operationId: get-policies-policy-id-user-groups
      summary: Retrieve a Policy User Group Assignment
      description: ''
      parameters:
        - name: policy_id
          in: path
          description: id of the policy
          required: true
          schema:
            type: string
          example: self
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              examples:
                response:
                  value:
                    id: 6e72b386ac43d1414e59188d
                    name: demo_group
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                required:
                  - id
                  - name
      security:
        - oauth2: []
      tags:
        - Policy Resource
    post:
      operationId: post-policies-policy-id-user-groups
      summary: Assign User Group to Policy
      description: ''
      parameters:
        - name: policy_id
          in: path
          description: id of the policy
          required: true
          schema:
            type: string
          example: self
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                properties:
                  id:
                    type: string
                required:
                  - id
                type: object
              examples:
                - - id: 6f72b386ac43d1414e59188d
                  - id: 6f72b386ac43d1414e59188e
      responses:
        '201':
          description: Created
          headers: {}
          content:
            application/json:
              examples:
                response:
                  value:
                    - id: 6e72b386ac43d1414e59188d
                    - id: 6e72b386ac43d1414e59188e
              schema:
                type: object
                properties:
                  id:
                    type: string
                required:
                  - id
      security:
        - oauth2: []
      tags:
        - Policy Resource
  /policies/{policy_id}/users:
    delete:
      operationId: delete-policies-policy-id-users
      summary: Unassign User from Policy
      description: ''
      parameters:
        - name: policy_id
          in: path
          description: id of the policy
          required: true
          schema:
            type: string
          example: self
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                properties:
                  id:
                    type: string
                required:
                  - id
                type: object
              examples:
                - - id: 6f72b386ac43d1414e59188d
                  - id: 6f72b386ac43d1414e59188e
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              examples:
                response:
                  value:
                    - id: 6e72b386ac43d1414e59188d
                    - id: 6e72b386ac43d1414e59188e
              schema:
                type: object
                properties:
                  id:
                    type: string
                required:
                  - id
      security:
        - oauth2: []
      tags:
        - Policy Resource
    get:
      operationId: get-policies-policy-id-users
      summary: Retrieve a Policy User Assignment
      description: ''
      parameters:
        - name: policy_id
          in: path
          description: id of the policy
          required: true
          schema:
            type: string
          example: self
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              examples:
                response:
                  value:
                    id: 6e72b386ac43d1414e59188d
                    username: demo_user
              schema:
                type: object
                properties:
                  id:
                    type: string
                  username:
                    type: string
                required:
                  - id
                  - username
      security:
        - oauth2: []
      tags:
        - Policy Resource
    post:
      operationId: post-policies-policy-id-users
      summary: Assign User to Policy
      description: ''
      parameters:
        - name: policy_id
          in: path
          description: id of the policy
          required: true
          schema:
            type: string
          example: self
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                properties:
                  id:
                    type: string
                required:
                  - id
                type: object
              examples:
                - - id: 6f72b386ac43d1414e59188d
                  - id: 6f72b386ac43d1414e59188e
      responses:
        '201':
          description: Created
          headers: {}
          content:
            application/json:
              examples:
                response:
                  value:
                    - id: 6e72b386ac43d1414e59188d
                    - id: 6e72b386ac43d1414e59188e
              schema:
                type: object
                properties:
                  id:
                    type: string
                required:
                  - id
      security:
        - oauth2: []
      tags:
        - Policy Resource
  /userGroups:
    delete:
      operationId: delete-user-groups
      summary: Delete a List of User Groups
      description: ''
      parameters:
        - name: fields
          in: query
          description: extra information of each user on the list
          required: false
          schema:
            type: string
        - name: limit
          in: query
          description: maximum count of the user list
          required: false
          schema:
            type: number
          example: '100'
        - name: offset
          in: query
          description: skip that many users before beginning to return
          required: false
          schema:
            type: number
          example: '0'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  examples:
                    - 6e72b386ac43d1414e59188b
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              examples:
                response:
                  value:
                    - id: 6e72b386ac43d1414e59188b
                    - id: 6e72b386ac43d1414e59188c
              schema:
                type: object
                properties:
                  id:
                    description: the deleted user group id
                    type: string
                required:
                  - id
      security:
        - oauth2: []
      tags:
        - User Group Resource
    get:
      operationId: get-user-groups
      summary: Retrieve a List of User Groups
      description: ''
      parameters:
        - name: fields
          in: query
          description: extra information of each user on the list
          required: false
          schema:
            type: string
        - name: limit
          in: query
          description: maximum count of the user list
          required: false
          schema:
            type: number
          example: '100'
        - name: offset
          in: query
          description: skip that many users before beginning to return
          required: false
          schema:
            type: number
          example: '0'
      responses:
        '200':
          description: OK
          headers:
            Total-Count:
              schema:
                type: string
          content:
            application/json:
              examples:
                response:
                  value:
                    - id: 6e72b386ac43d1414e59188b
                      name: demo_group1
                      profileId: 171235
                      serverId: demo
                    - id: 6e72b386ac43d1414e59188c
                      name: demo_group2
                      profileId: 171235
                      serverId: demo
                    - id: 6e72b386ac43d1414e59188d
                      name: demo_group3
                      profileId: 171235
                      serverId: demo
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  profile_id:
                    type: number
                  server_id:
                    type: string
                required:
                  - id
                  - name
                  - serverId
                  - profileId
      security:
        - oauth2: []
      tags:
        - User Group Resource
    post:
      operationId: post-user-groups
      summary: Create New User Groups
      description: ''
      parameters:
        - name: profile_id
          in: query
          description: id of the profile
          required: true
          schema:
            type: string
          example: self
      requestBody:
        $ref: '#/components/requestBodies/Create_New_User_GroupsBody'
      responses:
        '201':
          description: Created
          headers: {}
          content:
            application/json:
              examples:
                response:
                  value:
                    - id: 6e72b386ac43d1414e59188d
                    - id: 6e72b386ac43d1414e59188e
              schema:
                type: object
                properties:
                  id:
                    description: the created user group id
                    type: string
                required:
                  - id
      security:
        - oauth2: []
      tags:
        - User Group Resource
    put:
      operationId: put-user-groups
      summary: Update a List of User Groups
      description: ''
      parameters:
        - name: fields
          in: query
          description: extra information of each user on the list
          required: false
          schema:
            type: string
        - name: limit
          in: query
          description: maximum count of the user list
          required: false
          schema:
            type: number
          example: '100'
        - name: offset
          in: query
          description: skip that many users before beginning to return
          required: false
          schema:
            type: number
          example: '0'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                description:
                  type: string
                  examples:
                    - Description of this user group
                id:
                  type: string
                  examples:
                    - 6e72b386ac43d1414e59188b
                name:
                  type: string
                  examples:
                    - demo_group1
                type:
                  type: string
                  examples:
                    - no idea what this is
                used_as:
                  type: string
                  examples:
                    - no idea what this is
              required:
                - name
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              examples:
                response:
                  value:
                    - id: 6e72b386ac43d1414e59188b
                    - id: 6e72b386ac43d1414e59188c
              schema:
                type: object
                properties:
                  id:
                    description: the updated user group id
                    type: string
                required:
                  - id
      security:
        - oauth2: []
      tags:
        - User Group Resource
  /userGroups/{user_group_id}:
    delete:
      operationId: delete-user-groups-user-group-id
      summary: Delete a User Group
      description: ''
      parameters:
        - name: user_group_id
          in: path
          description: id of the user group
          required: true
          schema:
            type: string
          example: self
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              examples:
                response:
                  value:
                    id: 6e72b386ac44d1414e59188b
              schema:
                type: object
                properties:
                  id:
                    description: the deleted user group id
                    type: string
                required:
                  - id
      security:
        - oauth2: []
      tags:
        - User Group Resource
    get:
      operationId: get-user-groups-user-group-id
      summary: Retrieve a user group
      description: ''
      parameters:
        - name: user_group_id
          in: path
          description: id of the user group
          required: true
          schema:
            type: string
          example: self
      responses:
        '200':
          description: OK
          headers: {}
          content:
            '*/*':
              schema:
                type: object
                properties:
                  created_date:
                    type: string
                  description:
                    type: string
                  id:
                    type: string
                  modified_date:
                    type: string
                  name:
                    type: string
                  profile_id:
                    type: number
                  server_id:
                    type: string
                  type:
                    type: string
                  used_as:
                    type: string
                  users:
                    type: array
                    items: {}
                required:
                  - id
                  - name
                  - description
                  - profileId
                  - serverId
                  - type
                  - usedAs
                  - createdDate
                  - modifiedDate
                  - users
      security:
        - oauth2: []
      tags:
        - User Group Resource
    put:
      operationId: put-user-groups-user-group-id
      summary: Update a User Group
      description: ''
      parameters:
        - name: user_group_id
          in: path
          description: id of the user group
          required: true
          schema:
            type: string
          example: self
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                description:
                  type: string
                  examples:
                    - Description of this user group
                name:
                  type: string
                  examples:
                    - demo_group
                type:
                  type: string
                  examples:
                    - no idea what this is
                used_as:
                  type: string
                  examples:
                    - no idea what this is
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              examples:
                response:
                  value:
                    id: 6e72b386ac44d1414e59188b
              schema:
                type: object
                properties:
                  id:
                    description: the updated user group id
                    type: string
                required:
                  - id
      security:
        - oauth2: []
      tags:
        - User Group Resource
  /userGroups/{user_group_id}/users:
    delete:
      operationId: delete-user-groups-user-group-id-users
      summary: Unassign User from User Group
      description: ''
      parameters:
        - name: user_group_id
          in: path
          description: id of the user group
          required: true
          schema:
            type: string
          example: self
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                properties:
                  user_id:
                    type: string
                required:
                  - userId
                type: object
              examples:
                - - userId: 6f72b386ac43d1414e59188d
                  - userId: 6f72b386ac43d1414e59188e
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              examples:
                response:
                  value:
                    - id: 6e72b386ac43d1414e59188d
                    - id: 6e72b386ac43d1414e59188e
              schema:
                type: object
                properties:
                  id:
                    type: string
                required:
                  - id
      security:
        - oauth2: []
      tags:
        - User Group Resource
    get:
      operationId: get-user-groups-user-group-id-users
      summary: Retrieve a User Group User Assignment
      description: ''
      parameters:
        - name: user_group_id
          in: path
          description: id of the user group
          required: true
          schema:
            type: string
          example: self
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              examples:
                response:
                  value:
                    id: 6e72b386ac43d1414e59188d
                    username: demo_user
              schema:
                type: object
                properties:
                  id:
                    type: string
                  username:
                    type: string
                required:
                  - id
                  - username
      security:
        - oauth2: []
      tags:
        - User Group Resource
    post:
      operationId: post-user-groups-user-group-id-users
      summary: Assign User to User Group
      description: ''
      parameters:
        - name: user_group_id
          in: path
          description: id of the user group
          required: true
          schema:
            type: string
          example: self
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                properties:
                  id:
                    type: string
                required:
                  - id
                type: object
              examples:
                - - id: 6f72b386ac43d1414e59188d
                  - id: 6f72b386ac43d1414e59188e
      responses:
        '201':
          description: Created
          headers: {}
          content:
            application/json:
              examples:
                response:
                  value:
                    - id: 6e72b386ac43d1414e59188d
                    - id: 6e72b386ac43d1414e59188e
              schema:
                type: object
                properties:
                  id:
                    type: string
                required:
                  - id
      security:
        - oauth2: []
      tags:
        - User Group Resource
  /users:
    delete:
      operationId: delete-users
      summary: Delete a List of Users
      description: ''
      parameters:
        - name: fields
          in: query
          description: extra information of each user on the list
          required: false
          schema:
            type: string
        - name: limit
          in: query
          description: maximum count of the user list
          required: false
          schema:
            type: number
          example: '100'
        - name: offset
          in: query
          description: skip that many users before beginning to return
          required: false
          schema:
            type: number
          example: '0'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  examples:
                    - 5e72b386ac43d1414e59188b
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              examples:
                response:
                  value:
                    - id: 5e72b386ac43d1414e59188b
                    - id: 5e72b386ac43d1414e59188c
              schema:
                type: object
                properties:
                  id:
                    description: the deleted user id
                    type: string
                required:
                  - id
      security:
        - oauth2: []
      tags:
        - User Resource
    get:
      operationId: get-users
      summary: Retrieve a List of Users
      description: ''
      parameters:
        - name: fields
          in: query
          description: extra information of each user on the list
          required: false
          schema:
            type: string
        - name: limit
          in: query
          description: maximum count of the user list
          required: false
          schema:
            type: number
          example: '100'
        - name: offset
          in: query
          description: skip that many users before beginning to return
          required: false
          schema:
            type: number
          example: '0'
      responses:
        '200':
          description: OK
          headers:
            Total-Count:
              schema:
                type: string
          content:
            application/json:
              examples:
                response:
                  value:
                    - id: 5e72b386ac43d1414e59188b
                      profileId: 171235
                      serverId: demo
                      username: demo_user
                    - id: 5e72b386ac43d1414e59188c
                      profileId: 171235
                      serverId: demo
                      username: inspector_1
                    - id: 5e72b386ac43d1414e59188d
                      profileId: 171235
                      serverId: demo
                      username: inspector_2
              schema:
                type: object
                properties:
                  id:
                    type: string
                  profile_id:
                    type: number
                  server_id:
                    type: string
                  username:
                    type: string
                required:
                  - id
                  - username
                  - serverId
                  - profileId
      security:
        - oauth2: []
      tags:
        - User Resource
    post:
      operationId: post-users
      summary: Create New Users
      description: ''
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  examples:
                    - support@iformbuilder.com
                first_name:
                  type: string
                  examples:
                    - Calvin
                last_name:
                  type: string
                  examples:
                    - Johnson
                password:
                  type: string
                  examples:
                    - testing123
                profile_id:
                  type: number
                  examples:
                    - 12345
                server_id:
                  type: string
                  examples:
                    - app
                username:
                  type: string
                  examples:
                    - demo_user
              required:
                - username
                - password
                - email
                - serverId
                - profileId
      responses:
        '201':
          description: Created
          headers: {}
          content:
            application/json:
              examples:
                response:
                  value:
                    - id: 5e72b386ac43d1414e59188b
                    - id: 5e72b386ac43d1414e59188c
              schema:
                type: object
                properties:
                  id:
                    description: the created user id
                    type: string
                required:
                  - id
      security:
        - oauth2: []
      tags:
        - User Resource
    put:
      operationId: put-users
      summary: Update a List of Users
      description: ''
      parameters:
        - name: fields
          in: query
          description: extra information of each user on the list
          required: false
          schema:
            type: string
        - name: limit
          in: query
          description: maximum count of the user list
          required: false
          schema:
            type: number
          example: '100'
        - name: offset
          in: query
          description: skip that many users before beginning to return
          required: false
          schema:
            type: number
          example: '0'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                xxx_status:
                  type: number
                email:
                  type: string
                  examples:
                    - support@iformbuilder.com
                first_name:
                  type: string
                  examples:
                    - Calvin
                id:
                  type: string
                  examples:
                    - 5e72b386ac43d1414e59188b
                last_name:
                  type: string
                  examples:
                    - Johnson
              required:
                - id
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              examples:
                response:
                  value:
                    - id: 5e72b386ac43d1414e59188b
                    - id: 5e72b386ac43d1414e59188c
              schema:
                type: object
                properties:
                  id:
                    description: the updated user id
                    type: string
                required:
                  - id
      security:
        - oauth2: []
      tags:
        - User Resource
  /users/{user_id}:
    delete:
      operationId: delete-users-user-id
      summary: Delete a User
      description: ''
      parameters:
        - name: user_id
          in: path
          description: id of the user
          required: true
          schema:
            type: string
          example: self
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              examples:
                response:
                  value:
                    id: 5e72b386ac44d1414e59188b
              schema:
                type: object
                properties:
                  id:
                    description: the deleted user id
                    type: string
                required:
                  - id
      security:
        - oauth2: []
      tags:
        - User Resource
    get:
      operationId: get-users-user-id
      summary: Retrieve a user
      description: ''
      parameters:
        - name: user_id
          in: path
          description: id of the user
          required: true
          schema:
            type: string
          example: self
      responses:
        '200':
          description: OK
          headers: {}
          content:
            '*/*':
              schema:
                type: object
                properties:
                  created_date:
                    type: string
                  email:
                    type: string
                  entity_key_hashes:
                    type: array
                    items: {}
                  failed_login_count:
                    type: number
                  first_name:
                    type: string
                  id:
                    type: string
                  last_login:
                    type: string
                  last_name:
                    type: string
                  modified_date:
                    type: string
                  profile_id:
                    type: number
                  server_id:
                    type: string
                  status:
                    type: number
                  username:
                    type: string
                required:
                  - id
                  - username
                  - firstName
                  - lastName
                  - createdDate
                  - modifiedDate
                  - email
                  - lastLogin
                  - failedLoginCount
                  - status
                  - entityKeyHashes
                  - serverId
                  - profileId
      security:
        - oauth2: []
      tags:
        - User Resource
    put:
      operationId: put-users-user-id
      summary: Update a User
      description: ''
      parameters:
        - name: user_id
          in: path
          description: id of the user
          required: true
          schema:
            type: string
          example: self
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                xxx_status:
                  type: number
                email:
                  type: string
                  examples:
                    - support@iformbuilder.com
                first_name:
                  type: string
                  examples:
                    - Calvin
                last_name:
                  type: string
                  examples:
                    - Johnson
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              examples:
                response:
                  value:
                    id: 5e72b386ac44d1414e59188b
              schema:
                type: object
                properties:
                  id:
                    description: the updated user id
                    type: string
                required:
                  - id
      security:
        - oauth2: []
      tags:
        - User Resource
components:
  schemas:
    New_Policy_Creation: {}
    New_User_Creation: {}
    New_User_Group_Creation: {}
    Policy: {}
    Policy_Collection: {}
    Policy_User_Assignment: {}
    Policy_User_Group_Assignment: {}
    User: {}
    User_Collection: {}
    User_Group: {}
    User_Group_Collection: {}
    User_Group_User_Assignment: {}
  requestBodies:
    Assign_User_to_User_GroupBody:
      content:
        application/json:
          schema:
            type: array
            items:
              properties:
                id:
                  type: string
              required:
                - id
              type: object
            examples:
              - - id: 6f72b386ac43d1414e59188d
                - id: 6f72b386ac43d1414e59188e
    Create_New_User_GroupsBody:
      content:
        application/json:
          schema:
            type: object
            properties:
              description:
                type: string
                examples:
                  - Demo group description
              name:
                type: string
                examples:
                  - demo_group
              type:
                type: string
                examples:
                  - no idea what this is
              usedAs:
                type: string
                examples:
                  - no idea what this is
            required:
              - name
              - description
  securitySchemes:
    oauth2:
      flows:
        authorizationCode:
          authorizationUrl: /
          scopes: {}
          tokenUrl: /
      type: oauth2
tags:
  - name: User Resource
  - name: User Group Resource
  - name: Policy Resource
