CobbleStone Contract Insight (Preview)

The Cobblestone - Contract Insight connector allows you to connect our contract management software with many popular web and data services. The basic out of the box (OOB) endpoints will allow you to review Schema table names and whether they can be searched, edited, and updated. You can pull Entity information on table names, and Query, add, and update Customer record data.

This connector is available in the following products and regions:

Service Class Regions
Logic Apps Standard All Logic Apps regions except the following:
     -   Azure Government regions
     -   Azure China regions
     -   US Department of Defense (DoD)
Power Automate Premium All Power Automate regions except the following:
     -   US Government (GCC)
     -   US Government (GCC High)
     -   China Cloud operated by 21Vianet
     -   US Department of Defense (DoD)
Power Apps Premium All Power Apps regions except the following:
     -   US Government (GCC)
     -   US Government (GCC High)
     -   China Cloud operated by 21Vianet
     -   US Department of Defense (DoD)
Contact
Name CobbleStone Team
URL https://www.cobblestonesoftware.com
Email mefriebis@cobblestonesystems.com
Connector Metadata
Publisher Cobblestone Software
Website https://www.cobblestonesoftware.com
Privacy Policy https://www.cobblestonesoftware.com/company/privacy-policy
Categories Business Management;Sales and CRM

The CobbleStone Contract Insight connector allows you to connect our software with many popular web and data services. The basic out of the box (OOB) endpoints will allow you to review schema table names and whether they can be searched, edited, and updated. You can pull Entity information on table names, and query, add, and update Customer record data.

CobbleStone Software provides leading contract management software (CLM), vendor management, eSourcing, and procurement software for organizations around the world. CobbleStone Contract Insight software automates and streamlines the entire source-to-contract lifecycle for legal, procurement, sales, risk, and supplier management professionals in numerous industries around the world. CobbleStone combines a user-friendly interface with robust features, backed by VISDOM® artificial intelligence and machine learning. CobbleStone is the trusted contract lifecycle management software provider for thousands of users with unparalleled industry experience.

Prerequisites

Requires existing license to CobbleStone Software (Contact Insight).

Authorization (OAUTH 2.0)

Credentials can be setup/generated through your CobbleStone Software system.

How to get credentials

To create the API Client credentials through your CobbleStone Software system, use the following steps:

Within your CobbleStone Software system, a system administrator can navigate to the following page to setup/configure credentials:

(NOTE: This is under the "My" top menu item and then select "My API Clients")

This allows a system admin to create OAuth 2.0 credentials (Client ID and Client Secret) for use with the connector.

From logging into your CobbleStone Software system:

To begin, you will open CobbleStone Software and go under My > My API Clients…

image1

Create a new API Client entry by clicking Add API Client and give it a unique name. The name is only internal and can be anything meaningful to its purpose. We recommend using a different API key to organize things into small, manageable, and purposeful tasks.

image2

This will generate a key and only admin personnel have access to the page. It is bound the the person who generated the key and they are the only one who can see it. You can share they key but only the logged in user can see it.

image3

At this point we are done setting up the API Client entry. This Client ID and Client Securet are used for the connector to communicate with your CobbleStone Software system.

Get started with your connector

Entity List

This step would pull the list of entities that API is allowed to work with.

  • Input: No input for this step.

image4

  • Output The response is a collection of objects that have the following properties:
    • EntityName: table name in the database
    • EntityNameDisplay: title of table
    • AllowAdd: allows you to use this table in Add Endpoint
    • AllowEdit: allows you to use this table in Update Endpoint
    • AllowView: allows you to use this table in Get Endpoint
    • EntityNameForAPI: this is the value you use in URL segment

Schema

  • Input: Name of entity to be selected from drop down list.

image5

  • Output The response is a collection of objects that have the following properties:
    • Name: name in database
    • IsPrimaryKey: Boolean that determines if it is a primary key
    • IsIdentity: Boolean to determine if it is auto increment
    • IsNullable: Boolean that allows a NULL value
    • DBType: Data types for field
    • MaxLength: Max number of characters in the field (NULL for number field)
    • DataPrecision: Max number of decimal places (NULL when it isn’t a number)
    • DataScale: Max number of floating points (NULL when it isn’t a number)
    • HasDefaultValue: Boolean
    • IsComputedColumn: Boolean that indicates the value is a concatenation or calculation
    • IsPassword: Boolean indicates the field stores a password

Get (a.k.a Select) Endpoint

  • There is a nested object that need to be sent with this request in order to fulfill a pull request, which are the following:

    • Entity name: Name of entity to be selected from drop down list.
    • Fields: an array of fields (Name: which is the field name in database and it is mandatory, Alias: which is similar to AS alias in SQL and it is optional), NOTE: field name here doesnt exist as drop down list, the user must be aware of those names by using schema endpoint (for example through our API swagger page). image6 In the above sample i am requesting two columns with different aliases so the response will limited to two columns set.
      image7 In the above example I did switch to regular input and deleted everything so the Fields collection will be empty, in this scenario it will similar to ( SELECT * ) in SQL world meaning pull all columns.
    • Where Clause: it is a nested object that we created a GUI tool to handle generating it and it is shipped with our APIs. To get into that tool web page you need to add \Web to the end of your API base url and you will end to the login page image8 The username and password here client_id and client_secret you generated to use for the connector's connection. Build your criteria as illustrated in the image below. image9 After you are done with criterias click Edit Filter button below to get the following dialog. image10 Copy that json and bring it back to where clause input in power automate and add it as an expression ( json() ) illustrated in the following image (NOTE: dont pasteas text ot it wont be parsed when it is sent back to endpoint). image11
    • Order by tag: fill the column you want to order by, add more than one to order by more than one field, then at Order By Tag Direction chose the direction or leave it for the default value of ASC (Ascending). NOTE: never use same input for more than one field comma seperated and always make sure of the column spelling from schema endpoint using our API swagger page.
    • Order by tag: fill the column you want to group by, add more than one to group by more than one field. NOTE: never use same input for more than one field comma seperated and always make sure of the column spelling from schema endpoint using our API swagger page.
    • Start Index: corresponds to the simplest form of OFFSET function in SQL. It is set to zero if we need to fetch records starting with the first one. In other words, you may skip first N records in the resulting set.
    • Length: corresponds to the simplest form of FETCH function in SQL. In other words, you can take N records from resulting set starting with the record number specified by StartIndex attribute.

    Response is an array of objects where each object represents a row. image12

Update Endpoint

  • Request object contains of array of Fields that needs to be updated, same where clause explained in Get endpoint above and a boolean flag for Triggering workflow.

    • Entity name: Name of entity to be selected from drop down list.
    • Fields: array of objects known in API as Tuples, contains Name and Value pair where Name is the field name in database and value is the new value. NOTE: field names have to be spelled correctly and if user isnt sure then use our API swagger page.
    • Trigger Workflow: tells the API to fire any workflow associated with the current entity, default value is false.

    image13

    Response will be an object containing a message, number of affected rows successfully and number of failed to affect rows.

Add (a.k.a Insert) Endpoint

  • Request object contains only Tuples which is similar to the one illustrated in Update endpoint and those Name/Value pairs will be the new fields for the new record.

    image14

    Response will be an object containing a message and the newly auto generated Id.

Known issues and limitations

Currently the connector does not support sending or receiving binary files.

The "Update" endpoint is limited to a max of 500 affected rows per hit. If more then 500 records need to be updated, they need to be processed in multiple hits.

Common errors and remedies

  • The following are the common error our client may encounter:

    • 400 Bad Request
    • 401 Unauthorized
    • 405 Method Not Allowed
    • 415 Unsupported Media Type

    The above error codes will have the following Json response: { "LogId": (string) unique identifier of the error (GUID format), "Message": (string) error desciption, "Exception": (object) similar to System.Exception in .NET }

    We provide an ad-hoc report within ContractInsight to list all errors logged via APIs and client would be able to search error via LogId property.

Throttling Limits

Name Calls Renewal Period
API calls per connection10060 seconds

Actions

Create a new a record for a specified entity

Add a record (limited to one record per call) to specified entity. The response will be the system generated ID.

Pull list of entities that API is allowed to work with

Returns the list of names and three flagged properties indicating whether it can be edited, updated, or viewed/queried.

Pull list of record(s) for a given entity

Pull list of records for a given entity with specific criteria, order by tag, group by tag and number of records. Note: There is no limit on number of records to be pulled but the user has to consider that larger results will be slower to process.

Pull metadata about all columns in specific entity

Lists columns, data types, and any restrictions or flags (NULL, Length, Primary Key, etc.) in a table.

Update record(s) for a specified entity

Update record(s) for a specified entity/area with specific criteria and a TriggerWorkflow as flag to run workflow after the update request succeeds or not. Maximum number of records that can be updated is 500 per call.

Create a new a record for a specified entity

Add a record (limited to one record per call) to specified entity. The response will be the system generated ID.

Parameters

Name Key Required Type Description
Entity Name
entityName True string

Table name name to add record to.

Name
Name string
Value
Value object

Returns

Pull list of entities that API is allowed to work with

Returns the list of names and three flagged properties indicating whether it can be edited, updated, or viewed/queried.

Returns

List of Entities

Pull list of record(s) for a given entity

Pull list of records for a given entity with specific criteria, order by tag, group by tag and number of records. Note: There is no limit on number of records to be pulled but the user has to consider that larger results will be slower to process.

Parameters

Name Key Required Type Description
Entity Name
entityName True string

Table name to query data from.

Attribute
Attribute string
Alias
Alias string
Clause
Clause object
Fields
Fields array of string
Direction
Direction string
GroupByTag
GroupByTag array of string
StartIndex
StartIndex integer

What index to start at, Default = 0

Length
Length integer

Row count starting from StartIndex, cannot excceed 1000, Default = 100

Returns

Pull metadata about all columns in specific entity

Lists columns, data types, and any restrictions or flags (NULL, Length, Primary Key, etc.) in a table.

Parameters

Name Key Required Type Description
Entity Name
entityName True string

Name of the Table to retrieve schema for.

Returns

List of columns, data types, and any restrictions or flags (NULL, Length, Primary Key, etc.) in a table

Update record(s) for a specified entity

Update record(s) for a specified entity/area with specific criteria and a TriggerWorkflow as flag to run workflow after the update request succeeds or not. Maximum number of records that can be updated is 500 per call.

Parameters

Name Key Required Type Description
Entity Name
entityName True string

Table name to update record(s) in.

Clause
Clause string
Name
Name string
Value
Value object
TriggerWorkflow
TriggerWorkflow boolean

Returns

Triggers

A scheduled trigger for created and updated records

A scheduled trigger that shows both created (new) records and any records which have been updated since a given amount of time.

A scheduled trigger that query created (new) records on a given interval

Query all newly created records by a date & time field compared to current date & time (greater than or equal to) on a specific interval.

A scheduled trigger that shows records updated since a specific datetime

Query all update records by a date & time field compared to current date & time (greater than or equal to) on a specific interval.

A scheduled trigger for created and updated records

A scheduled trigger that shows both created (new) records and any records which have been updated since a given amount of time.

Parameters

Name Key Required Type Description
Table Name
entityName True string

Table name to pull updated record(s) from.

Attribute
Attribute string
Alias
Alias string
Clause
Clause object
Fields
Fields array of string
Direction
Direction string
GroupByTag
GroupByTag array of string
StartIndex
StartIndex integer

What index to start at, Default = 0

Length
Length integer

Row count starting from StartIndex, cannot excceed 1000, Default = 100

Returns

response
object

A scheduled trigger that query created (new) records on a given interval

Query all newly created records by a date & time field compared to current date & time (greater than or equal to) on a specific interval.

Parameters

Name Key Required Type Description
Entity Name
entityName True string

Table name to pull new record(s) from.

Attribute
Attribute string
Alias
Alias string
Clause
Clause object
Fields
Fields array of string
Direction
Direction string
GroupByTag
GroupByTag array of string
StartIndex
StartIndex integer

What index to start at, Default = 0

Length
Length integer

Row count starting from StartIndex, cannot excceed 1000, Default = 100

Returns

response
object

A scheduled trigger that shows records updated since a specific datetime

Query all update records by a date & time field compared to current date & time (greater than or equal to) on a specific interval.

Parameters

Name Key Required Type Description
Entity Name
entityName True string

Table name to pull updated record(s) from.

Attribute
Attribute string
Alias
Alias string
Clause
Clause object
Fields
Fields array of string
Direction
Direction string
GroupByTag
GroupByTag array of string
StartIndex
StartIndex integer

What index to start at, Default = 0

Length
Length integer

Row count starting from StartIndex, cannot excceed 1000, Default = 100

Returns

response
object

Definitions

APIEntityListResponse

List of Entities

Name Path Type Description
Items
APIEntity

Define each entity

APIEntity

Define each entity

Name Path Type Description
EntityName
EntityName string

Entity name as it is in database

EntityNameDisplay
EntityNameDisplay string

Entity display name

AllowAdd
AllowAdd boolean

Indicates if allowed to add new record

AllowEdit
AllowEdit boolean

Indicates if allowed to edit record(S)

AllowView
AllowView boolean

Indicates if allowed to view record(s)

EntityNameForAPI
EntityNameForAPI string

Entity name that is used in CSS API

APISchemaResponse

List of columns, data types, and any restrictions or flags (NULL, Length, Primary Key, etc.) in a table

Name Path Type Description
Items
APISchema

APISchema

Name Path Type Description
Name
Name string
IsPrimaryKey
IsPrimaryKey boolean
IsIdentity
IsIdentity boolean
IsNullable
IsNullable boolean
DBType
DBType string
MaxLength
MaxLength integer
DataPrecision
DataPrecision integer
DataScale
DataScale integer
HasDefaultValue
HasDefaultValue boolean
IsComputedColumn
IsComputedColumn boolean
IsPassword
IsPassword boolean

APIAddRequestTuple

Name Path Type Description
Name
Name string
Value
Value object

APIUpdateResponse

Name Path Type Description
TotalAffected
TotalAffected integer
TotalFailed
TotalFailed integer
Message
Message string

APIAddRequest

Name Path Type Description
Tuples
Tuples array of APIAddRequestTuple

APIQueryResponse

Name Path Type Description
Items
object

object

This is the type 'object'.