NowCerts Insureds API

Create, update, search, and retrieve insureds and prospects, including custom fields, contacts, tags, notes, tasks, claims, and the policies associated with each insured. Backed by confirmed endpoints such as /api/Insured/Insert, /api/InsuredDetailList, and /api/Customers/GetCustomers.

OpenAPI Specification

nowcerts-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: NowCerts API
  description: >-
    The NowCerts API is the REST interface to the NowCerts insurance agency
    management system (now branded Momentum AMP; the API is still served from
    api.nowcerts.com). It lets an agency and its integration partners import,
    update, search, and retrieve their own book of business - insureds and
    prospects, policies and coverages, carriers and underwriters, endorsements
    and commissions, and tasks and workflow. All requests are authenticated with
    a bearer token obtained from https://api.nowcerts.com/token using the OAuth2
    password grant; the account making the request must have the "API
    Integration" agent role assigned, and API access is available on the
    Professional subscription tier and above.

    Endpoints in this document are confirmed from the live ASP.NET Web API help
    page at api.nowcerts.com/Help (v2.1.5). Request and response schemas are
    honestly modeled from the documented operations and standard AMS field sets;
    where a payload was not fully enumerated on the help page it is marked as
    modeled and additionalProperties is left open. This is a representative
    subset of a 160+ endpoint API, organized around the five core resources
    catalogued for the API Evangelist network.
  version: 2.1.5
  contact:
    name: NowCerts / Momentum AMP
    url: https://www.nowcerts.com
  x-modeled: >-
    Endpoint paths and methods are confirmed real from api.nowcerts.com/Help.
    Schemas are modeled from documented behavior and typical AMS fields, not
    copied from an official machine-readable spec (NowCerts does not publish
    OpenAPI).
servers:
  - url: https://api.nowcerts.com/api
    description: NowCerts production API
security:
  - bearerAuth: []
tags:
  - name: Authentication
    description: Obtain and refresh bearer tokens.
  - name: Insureds
    description: Insureds and prospects (customers), their contacts, and related data.
  - name: Policies
    description: Policies, coverages, and quotes.
  - name: Carriers
    description: Carrier, underwriter, and line-of-business reference data.
  - name: Endorsements
    description: Policy endorsements and their financial detail.
  - name: Tasks
    description: Tasks, task work groups, and to-do workflow.
paths:
  /token:
    servers:
      - url: https://api.nowcerts.com
    post:
      operationId: getToken
      tags:
        - Authentication
      summary: Obtain a bearer token
      description: >-
        Exchange agency user credentials for a bearer access token using the
        OAuth2 password grant. The user must have the "API Integration" agent
        role. Returns an access_token used as a Bearer token on all subsequent
        requests.
      security: []
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
                - grant_type
                - username
                - password
              properties:
                grant_type:
                  type: string
                  enum: [password]
                username:
                  type: string
                password:
                  type: string
                  format: password
                client_id:
                  type: string
      responses:
        '200':
          description: A bearer token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
  /Insured/Insert:
    post:
      operationId: insertInsured
      tags:
        - Insureds
      summary: Insert or update an insured/prospect
      description: >-
        Create a new insured or prospect, or update an existing one when a
        matching database id is supplied. Supports custom fields. Schema modeled.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Insured'
      responses:
        '200':
          description: The created or updated insured.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Insured'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /InsuredDetailList:
    get:
      operationId: listInsuredDetail
      tags:
        - Insureds
      summary: List insured/prospect master data
      description: >-
        Returns insured and prospect master records. Supports OData-style query
        options (for example $filter, $top, $skip, $orderby) as exposed by the
        underlying ASP.NET Web API detail-list endpoints.
      parameters:
        - $ref: '#/components/parameters/ODataFilter'
        - $ref: '#/components/parameters/ODataTop'
        - $ref: '#/components/parameters/ODataSkip'
        - $ref: '#/components/parameters/ODataOrderBy'
      responses:
        '200':
          description: A list of insureds.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Insured'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /Customers/GetCustomers:
    get:
      operationId: getCustomers
      tags:
        - Insureds
      summary: Multi-field insured/prospect search
      description: Search insureds and prospects across name, email, phone, and other fields.
      parameters:
        - name: searchText
          in: query
          schema:
            type: string
          description: Free-text search term matched across insured fields.
      responses:
        '200':
          description: Matching insureds/prospects.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Insured'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /Policy/Insert:
    post:
      operationId: insertPolicy
      tags:
        - Policies
      summary: Insert or update a policy
      description: Create a new policy or update an existing one for a given insured. Schema modeled.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Policy'
      responses:
        '200':
          description: The created or updated policy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Policy'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /Policy/PartialUpdate:
    patch:
      operationId: partialUpdatePolicy
      tags:
        - Policies
      summary: Partially update a policy
      description: Apply a partial update to an existing policy identified by its database id.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Policy'
      responses:
        '200':
          description: The updated policy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Policy'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /Policy/FindPolicies:
    get:
      operationId: findPolicies
      tags:
        - Policies
      summary: Search policies
      description: Search policies by policy number, carrier, line of business, and effective/expiration dates.
      parameters:
        - name: policyNumber
          in: query
          schema:
            type: string
        - name: carrier
          in: query
          schema:
            type: string
        - name: lineOfBusiness
          in: query
          schema:
            type: string
        - name: effectiveDate
          in: query
          schema:
            type: string
            format: date
        - name: expirationDate
          in: query
          schema:
            type: string
            format: date
      responses:
        '200':
          description: Matching policies.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Policy'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /PolicyDetailList:
    get:
      operationId: listPolicyDetail
      tags:
        - Policies
      summary: List policy master data
      description: Returns policy master records, with OData-style query options.
      parameters:
        - $ref: '#/components/parameters/ODataFilter'
        - $ref: '#/components/parameters/ODataTop'
        - $ref: '#/components/parameters/ODataSkip'
        - $ref: '#/components/parameters/ODataOrderBy'
      responses:
        '200':
          description: A list of policies.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Policy'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /Policy/Coverages:
    get:
      operationId: getPolicyCoverages
      tags:
        - Policies
      summary: Get policy coverages
      description: Returns coverage detail for a policy.
      parameters:
        - name: policyId
          in: query
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Coverage detail.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Coverage'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /Policy/StatusTypes:
    get:
      operationId: getPolicyStatusTypes
      tags:
        - Policies
      summary: List policy status types
      description: Returns the enumeration of policy status types.
      responses:
        '200':
          description: Policy status types.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
  /CarrierDetailList:
    get:
      operationId: listCarrierDetail
      tags:
        - Carriers
      summary: List carriers
      description: Returns the insurance carriers configured for the agency, with OData-style query options.
      parameters:
        - $ref: '#/components/parameters/ODataFilter'
        - $ref: '#/components/parameters/ODataTop'
        - $ref: '#/components/parameters/ODataSkip'
        - $ref: '#/components/parameters/ODataOrderBy'
      responses:
        '200':
          description: A list of carriers.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Carrier'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /UnderwriterDetailList:
    get:
      operationId: listUnderwriterDetail
      tags:
        - Carriers
      summary: List underwriters
      description: Returns the underwriters associated with carriers.
      responses:
        '200':
          description: A list of underwriters.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
  /LineOfBusinessList:
    get:
      operationId: listLineOfBusiness
      tags:
        - Carriers
      summary: List lines of business
      description: Returns the lines of business (LOB) master data used to classify policies and carriers.
      responses:
        '200':
          description: A list of lines of business.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
  /Policy/InsertWithEndorementId:
    post:
      operationId: insertPolicyWithEndorsementId
      tags:
        - Endorsements
      summary: Insert a policy tied to an endorsement id
      description: Create or update a policy referencing an existing endorsement id. Schema modeled.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/Policy'
                - type: object
                  properties:
                    endorsementId:
                      type: string
                      format: uuid
      responses:
        '200':
          description: The created or updated policy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Policy'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /PolicyEndorsementDetailList:
    get:
      operationId: listPolicyEndorsementDetail
      tags:
        - Endorsements
      summary: List policy endorsements
      description: Returns endorsement records for the agency's policies, with OData-style query options.
      parameters:
        - $ref: '#/components/parameters/ODataFilter'
        - $ref: '#/components/parameters/ODataTop'
        - $ref: '#/components/parameters/ODataSkip'
        - $ref: '#/components/parameters/ODataOrderBy'
      responses:
        '200':
          description: A list of endorsements.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Endorsement'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /PolicyEndorsementAgencyCommissionDetailList:
    get:
      operationId: listEndorsementAgencyCommissionDetail
      tags:
        - Endorsements
      summary: List endorsement agency commissions
      description: Returns agency commission detail for policy endorsements.
      responses:
        '200':
          description: A list of endorsement agency commissions.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
  /TasksWork/InsertUpdate:
    post:
      operationId: insertUpdateTask
      tags:
        - Tasks
      summary: Insert or update a task work group
      description: Create or update a task and its work group. Schema modeled.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Task'
      responses:
        '200':
          description: The created or updated task.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Task'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /TasksList:
    get:
      operationId: listTasks
      tags:
        - Tasks
      summary: List tasks
      description: Returns task records, with OData-style query options.
      parameters:
        - $ref: '#/components/parameters/ODataFilter'
        - $ref: '#/components/parameters/ODataTop'
        - $ref: '#/components/parameters/ODataSkip'
        - $ref: '#/components/parameters/ODataOrderBy'
      responses:
        '200':
          description: A list of tasks.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Task'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /TasksWorkGroupList:
    get:
      operationId: listTaskWorkGroups
      tags:
        - Tasks
      summary: List task work groups
      description: Returns task work group records.
      responses:
        '200':
          description: A list of task work groups.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
  /ToDoList:
    get:
      operationId: listToDo
      tags:
        - Tasks
      summary: List to-do items
      description: Returns to-do items for the agency's workflow.
      responses:
        '200':
          description: A list of to-do items.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
  /heartbeat:
    get:
      operationId: heartbeat
      tags:
        - Authentication
      summary: API availability check
      description: Lightweight liveness check for the API.
      security: []
      responses:
        '200':
          description: The API is available.
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Bearer token obtained from https://api.nowcerts.com/token via the OAuth2
        password grant. The user must have the "API Integration" agent role.
  parameters:
    ODataFilter:
      name: $filter
      in: query
      description: OData-style filter expression.
      schema:
        type: string
    ODataTop:
      name: $top
      in: query
      description: Maximum number of records to return.
      schema:
        type: integer
    ODataSkip:
      name: $skip
      in: query
      description: Number of records to skip.
      schema:
        type: integer
    ODataOrderBy:
      name: $orderby
      in: query
      description: OData-style ordering expression.
      schema:
        type: string
  responses:
    Unauthorized:
      description: Missing or invalid bearer token, or the user lacks the API Integration role.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: The request was malformed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    TokenResponse:
      type: object
      description: OAuth2 password-grant token response. Modeled.
      properties:
        access_token:
          type: string
        token_type:
          type: string
          example: bearer
        expires_in:
          type: integer
        refresh_token:
          type: string
      additionalProperties: true
    Insured:
      type: object
      description: An insured or prospect (customer). Modeled from documented insured fields.
      properties:
        databaseId:
          type: string
          format: uuid
        commercialName:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        email:
          type: string
          format: email
        phone:
          type: string
        type:
          type: string
          description: Insured or Prospect.
        addressLine1:
          type: string
        city:
          type: string
        state:
          type: string
        zipCode:
          type: string
        customFields:
          type: object
          additionalProperties: true
      additionalProperties: true
    Policy:
      type: object
      description: An insurance policy. Modeled from documented policy fields.
      properties:
        databaseId:
          type: string
          format: uuid
        insuredDatabaseId:
          type: string
          format: uuid
        number:
          type: string
        carrierName:
          type: string
        lineOfBusiness:
          type: string
        effectiveDate:
          type: string
          format: date
        expirationDate:
          type: string
          format: date
        premium:
          type: number
        statusType:
          type: string
      additionalProperties: true
    Coverage:
      type: object
      description: A coverage line on a policy. Modeled.
      properties:
        name:
          type: string
        limit:
          type: number
        deductible:
          type: number
      additionalProperties: true
    Carrier:
      type: object
      description: An insurance carrier. Modeled.
      properties:
        databaseId:
          type: string
          format: uuid
        name:
          type: string
        naicCode:
          type: string
        phone:
          type: string
      additionalProperties: true
    Endorsement:
      type: object
      description: A policy endorsement record. Modeled.
      properties:
        databaseId:
          type: string
          format: uuid
        policyDatabaseId:
          type: string
          format: uuid
        endorsementNumber:
          type: string
        effectiveDate:
          type: string
          format: date
        premiumChange:
          type: number
      additionalProperties: true
    Task:
      type: object
      description: A task / to-do work item. Modeled.
      properties:
        databaseId:
          type: string
          format: uuid
        subject:
          type: string
        description:
          type: string
        dueDate:
          type: string
          format: date-time
        assignedToAgentId:
          type: string
          format: uuid
        completed:
          type: boolean
      additionalProperties: true
    Error:
      type: object
      properties:
        message:
          type: string
        error:
          type: string
      additionalProperties: true