OpenGov Users API

Users can be attached to Records as the Applicant or as a Guest.

OpenAPI Specification

opengov-users-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: v2
  title: Permitting & Licensing Users API
  contact:
    name: OpenGov Permitting & Licensing API
    url: https://opengov.com
    email: developers@opengov.com
  description: "The OpenGov Permitting & Licensing API provides programmatic access to Permitting & Licensing data and workflows. With this API, you can integrate with other systems, build custom applications, or automate tasks. \n\nThe API is designed around REST principles, supports JSON:API standards, and exposes resources such as records, inspections, fees, approvals, and user accounts. This documentation covers available endpoints, request and response formats, and error codes, helping developers extend and integrate OpenGov Permitting & Licensing securely and efficiently.\n"
  license:
    name: OpenGov Permitting & Licensing API
    url: https://opengov.com
servers:
- url: https://api.plce.opengov.com/plce
  description: Production
  x-og-envs:
  - production
  - staging
  - development
  - local
security:
- bearerAuth: []
- basicHttpAuthentication: []
- auth0Prod: []
- auth0Dev: []
tags:
- name: Users
  description: Users can be attached to Records as the Applicant or as a Guest.
paths:
  /v2/{community}/users:
    parameters:
    - $ref: '#/paths/~1v2~1{community}~1approval-steps/parameters/0'
    get:
      summary: List users
      description: 'Retrieve users in the community that match the specified filters.

        ### Permissions Required

        `User Read`'
      operationId: getUsers
      x-og-claims-required:
      - PLC_USER_READ
      tags:
      - Users
      parameters:
      - $ref: '#/paths/~1v2~1{community}~1approval-steps/get/parameters/0'
      - $ref: '#/paths/~1v2~1{community}~1approval-steps/get/parameters/1'
      - name: filter[email]
        in: query
        description: Filter by the email of a user
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Users
          headers:
            X-RateLimit-Limit:
              $ref: '#/paths/~1v2~1{community}~1files/post/responses/201/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/paths/~1v2~1{community}~1files/post/responses/201/headers/X-RateLimit-Remaining'
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/paths/~1v2~1{community}~1records~1{recordID}~1guests/get/responses/200/content/application~1vnd.api+json/schema/properties/data/items'
                  links:
                    $ref: '#/paths/~1v2~1{community}~1approval-steps/get/responses/200/content/application~1vnd.api+json/schema/properties/links'
                  meta:
                    $ref: '#/paths/~1v2~1{community}~1approval-steps/get/responses/200/content/application~1vnd.api+json/schema/properties/meta'
                required:
                - data
                - links
                - meta
        '400':
          $ref: '#/paths/~1v2~1{community}~1approval-steps/get/responses/400'
        '401':
          $ref: '#/paths/~1v2~1{community}~1approval-steps/get/responses/401'
        '403':
          $ref: '#/paths/~1v2~1{community}~1approval-steps/get/responses/403'
        '404':
          description: '**Resource not found**: The server has not found anything matching the Request-URI. No indication is given of whether the condition is temporary or permanent.

            '
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/paths/~1v2~1{community}~1approval-steps/get/responses/400/content/application~1vnd.api+json/schema'
              examples:
                not_found:
                  summary: Resource not found
                  value:
                    errors:
                    - id: error-404-001
                      code: NOT_FOUND
                      detail: The requested resource could not be found
                      status: '404'
                      title: Not Found
        '406':
          $ref: '#/paths/~1v2~1{community}~1approval-steps/get/responses/406'
        '500':
          $ref: '#/paths/~1v2~1{community}~1approval-steps/get/responses/500'
    post:
      summary: Create a user
      description: 'Create a user.

        ### Permissions Required

        `User Write`'
      operationId: postUser
      x-og-claims-required:
      - PLC_USER_WRITE
      tags:
      - Users
      parameters:
      - $ref: '#/paths/~1v2~1{community}~1approval-steps~1{approvalStepID}/patch/parameters/0'
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  type: object
                  title: User
                  properties:
                    type:
                      type: string
                      enum:
                      - user
                      example: user
                    attributes:
                      type: object
                      properties:
                        firstName:
                          type: string
                          description: First name of the user
                          example: David
                        lastName:
                          type: string
                          description: Last name of the user
                          example: Wilson
                        email:
                          type: string
                          description: Email of the user
                          example: david.wilson@email.com
                        phoneNo:
                          type: string
                          description: Phone number of the user
                          example: 206-555-0187
                        address:
                          type: string
                          description: Address 1
                          example: 456 Oak Avenue
                        address2:
                          type: string
                          description: Address 2
                          example: Apartment 7C
                        city:
                          type: string
                          description: City
                          example: Seattle
                        state:
                          type: string
                          description: State
                          example: WA
                        zip:
                          type: string
                          description: ZIP Code
                          example: '98101'
      responses:
        '201':
          description: Created
          headers:
            X-RateLimit-Limit:
              $ref: '#/paths/~1v2~1{community}~1files/post/responses/201/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/paths/~1v2~1{community}~1files/post/responses/201/headers/X-RateLimit-Remaining'
            Location:
              $ref: '#/paths/~1v2~1{community}~1inspection-events/post/responses/201/headers/Location'
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    x-tags:
                    - Users
                    - Record Guests
                    required:
                    - id
                    - type
                    - attributes
                    title: User
                    properties:
                      type:
                        type: string
                        enum:
                        - user
                      id:
                        type: string
                        description: The user ID
                      attributes:
                        type: object
                        properties:
                          firstName:
                            type: string
                            description: First name of the user
                            example: John
                          lastName:
                            type: string
                            description: Last name of the user
                            example: Doe
                          email:
                            type: string
                            description: Email of the user
                            example: john.doe@example.com
                          phoneNo:
                            type: string
                            description: Phone number of the user
                            example: 123-456-7890
                          address:
                            type: string
                            description: Address 1
                            example: 123 Main St
                          address2:
                            type: string
                            description: Address 2
                            example: Apt 1
                          city:
                            type: string
                            description: City
                            example: Anytown
                          state:
                            type: string
                            description: State
                            example: CA
                          zip:
                            type: string
                            description: ZIP Code
                            example: '12345'
                required:
                - data
        '400':
          $ref: '#/paths/~1v2~1{community}~1approval-steps/get/responses/400'
        '401':
          $ref: '#/paths/~1v2~1{community}~1approval-steps/get/responses/401'
        '403':
          $ref: '#/paths/~1v2~1{community}~1approval-steps/get/responses/403'
        '404':
          $ref: '#/paths/~1v2~1{community}~1approval-steps/get/responses/404'
        '406':
          $ref: '#/paths/~1v2~1{community}~1approval-steps/get/responses/406'
        '409':
          $ref: '#/paths/~1v2~1{community}~1approval-steps~1{approvalStepID}/patch/responses/409'
        '415':
          $ref: '#/paths/~1v2~1{community}~1approval-steps~1{approvalStepID}/patch/responses/415'
        '500':
          $ref: '#/paths/~1v2~1{community}~1approval-steps/get/responses/500'
  /v2/{community}/users/{userID}:
    parameters:
    - $ref: '#/paths/~1v2~1{community}~1approval-steps/parameters/0'
    - name: userID
      in: path
      description: ID of the user
      required: true
      schema:
        type: string
    get:
      summary: Retrieve a user
      description: 'Retrieve a user by ID.

        ### Permissions Required

        `User Read`'
      operationId: getUser
      x-og-claims-required:
      - PLC_USER_READ
      tags:
      - Users
      responses:
        '200':
          description: Returns the user object
          headers:
            X-RateLimit-Limit:
              $ref: '#/paths/~1v2~1{community}~1files/post/responses/201/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/paths/~1v2~1{community}~1files/post/responses/201/headers/X-RateLimit-Remaining'
          content:
            application/vnd.api+json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/paths/~1v2~1{community}~1records~1{recordID}~1guests/get/responses/200/content/application~1vnd.api+json/schema/properties/data/items'
                required:
                - data
        '400':
          $ref: '#/paths/~1v2~1{community}~1approval-steps/get/responses/400'
        '401':
          $ref: '#/paths/~1v2~1{community}~1approval-steps/get/responses/401'
        '403':
          $ref: '#/paths/~1v2~1{community}~1approval-steps/get/responses/403'
        '404':
          $ref: '#/paths/~1v2~1{community}~1approval-steps/get/responses/404'
        '406':
          $ref: '#/paths/~1v2~1{community}~1approval-steps/get/responses/406'
        '500':
          $ref: '#/paths/~1v2~1{community}~1approval-steps/get/responses/500'
components:
  securitySchemes:
    basicHttpAuthentication:
      type: http
      scheme: basic
      description: 'Basic HTTP Authentication

        '
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'The OpenGov Permitting & Licensing API is authenticated using the OAuth2 Client Credentials flow. Access tokens are provided as a bearer token Authorization header in all API requests.

        To obtain an access token, you must have an OpenGov-provided Client ID and Client Secret.

        Access tokens are obtained by making a POST request to `https://accounts.viewpointcloud.com/oauth/token`

        '
    auth0Prod:
      type: openIdConnect
      openIdConnectUrl: https://accounts.viewpointcloud.com/.well-known/openid-configuration
      description: 'The OpenGov Permitting & Licensing API is authenticated using the OAuth2 Client Credentials flow. Access tokens are provided as a bearer token Authorization header in all API requests.

        To obtain an access token, you must have an OpenGov-provided Client ID and Client Secret.

        '
    auth0Dev:
      type: openIdConnect
      openIdConnectUrl: https://login.vpctest.com/.well-known/openid-configuration
      description: 'The OpenGov Permitting & Licensing API is authenticated using the OAuth2 Client Credentials flow. Access tokens are provided as a bearer token Authorization header in all API requests.

        To obtain an access token, you must have an OpenGov-provided Client ID and Client Secret.

        '
x-og-spec-id: plc-api-v2
x-og-claims:
  PLC_RECORD_READ: Record Read
  PLC_RECORD_WRITE: Record Write
  PLC_RECORD_ARCHIVE: Record Archive
  PLC_RECORD_STEP_READ: Workflow Read
  PLC_RECORD_STEP_CREATE: Workflow Write
  PLC_RECORD_STEP_UPDATE: Workflow Write
  PLC_RECORD_STEP_COMMENT_READ: Comment Read
  PLC_RECORD_STEP_COMMENT_WRITE: Comment Write
  PLC_USER_READ: User Read
  PLC_USER_WRITE: User Write
  PLC_RECORD_TYPE_READ: Record Type Read
  PLC_SYSTEM_CONFIG_READ: System Config Read
  PLC_LOCATION_READ: Location Read
  PLC_LOCATION_WRITE: Location Write
  PLC_PAYMENT_READ: Payment Read
  PLC_PAYMENT_WRITE: Payment Write
  PLC_FILE_READ: File Read
  PLC_FILE_WRITE: File Write
  PLC_ACTIVITY_LOG_READ: Activity Log Read
x-tagGroups:
- name: Records
  tags:
  - Record
  - Record Applicant
  - Record Guests
  - Record Primary Location
  - Record Additional Locations
  - Record Forms
  - Record Change Requests
  - Record Attachments
  - Record Workflow Steps
  - Record Workflow Step Comments
- name: Locations
  tags:
  - Locations
  - Location Flags
- name: Users
  tags:
  - Users
  - User Flags
- name: Approvals
  tags:
  - Approval Steps
- name: Documents
  tags:
  - Document Steps
  - Issued Documents
- name: Inspections
  tags:
  - Inspection Steps
  - Inspection Types
  - Inspection Events
  - Inspection Results
  - Checklist Results
- name: Payments
  tags:
  - Payment Steps
  - Fees
  - Transactions
  - Ledger Entries
- name: Projects
  tags:
  - Projects
- name: Files
  tags:
  - Files
- name: Configuration
  tags:
  - Organization
  - Departments
  - Record Types
  - Record Type Form
  - Record Type Attachments
  - Record Type Document Templates
  - Record Type Fees
  - Record Type Workflow
  - Inspection Type Templates
  - Checklist Templates
- name: Activity Logs
  tags:
  - Activity Logs