Innoslate's REST APIs
Learn about Authorization and API Elements available through Enterprise Edition.
Sections Available in REST API
Function
Description
Authorization
Learn the intricacies of access to authorization within Innoslate's API ecosystem.
API Elements Available
Explore the extensive array of API elements available in Innoslate. We provide a comprehensive overview of each component.
Innoslate offers a comprehensive API set that is built upon the principles of Representational State Transfer (REST), a widely adopted architectural style for web services. This approach provides a structured framework for interactive applications to exchange data using standard HTTP methods, including GET, POST, PUT, and DELETE. REST operates under a stateless, client-server model, ensuring that each request contains all the information needed for processing. This design enhances scalability and allows for independent server operations. By emphasizing resources identified by unique URIs, REST facilitates organized and efficient data access and manipulation. Its inherent simplicity and adaptability make REST an excellent choice for developing APIs that are compatible with various applications and data formats, such as JSON and XML, thereby promoting seamless integration and empowering developers to build powerful applications.
Getting Started
To begin utilizing the APIs, please ensure you have the following prerequisites:
1. Access to Innoslate Enterprise. If you are currently using Innoslate Cloud, kindly reach out to your Account Manager for assistance in obtaining access to Innoslate Enterprise.
2. An API Authentication Token.
3. A REST Client, which may vary based on your technical expertise.
Generating Authentication Token:
Click the “User Account” drop-down menu (green circle with your initial) at the top right of the Innoslate navigation bar.
Click “My Profile ”.
This opens the “Edit Your Profile Information ” menu. Select 'Create API Key'.
4. Give the API key a name then click “
Generate Authentication Key ”.
5. The API key will generate the authentication token. Note: Once you leave this view you will not see the authentication token so copy it to a safe place.
6. Exit the view either by clicking the “Save ”, “Cancel ”, or ‘X’ at the top of the modal. The authentication token does not require the save button to be clicked.
API Call Requirements
In a rest client, pick the method type: GET, POST, PUT, and DELETE.
Type in the URL to your Innoslate instance followed by the appropriate API: http://localhost:8080/api/v4/o/demo/p/232/users
Headers:
Add “Authorization” with a value of 'basic' and then the API Key. Ensure a space between the value 'basic' and the API Key with no trailing space.
Allocate Ids
To successfully add new objects to projects using the PUT or POST methods, you must first allocate with the following API call. After obtaining the returned IDs and Global IDs, you will use the IDs in the payload to update entities and create new objects.
Method: Get
URL: api/v4/o/:organizationSlug/allocate_ids - Parameters:
Type: entity, class, relation, property, label
Count
Response: [{“id”:130,”globalId”: “I_9AYHDK70QMK99_8H187”}]
Example: api/v4/o/demo/allocate_ids?type=entity&count=10
API Elements
Entities:
Entities from the search query
Method: GET
URL: api/v4/o/:organizationSlug/entities - Parameters: o query
Optional Parameters: o limit o offset
Response: Array of Entity Objects
Example: api/v4/o/demo/entities?query=class%3AAction&projectId=64&limit=30&offset=0
Method: POST, PUT
URL: api/v4/o/:organizationSlug/entities
Payload: Array of Entity Objects
Payload Example: [{"number":"1","labelIds":[],"sortNumber":"000001.00000.0000.000.000.000.000.15639", "classId":3,"createdIn" :0,"modifiedIn":0,"linkedLabelId":0,"rels":[],"attrs":{}, "controlStep":null,"controlType":"SERIAL","branches":[],"di agrams":{}, "isArchived":false,"isLocked":false,"followers":["john.doe"],"projectId":64, "globalId":"I_6168Y8QCZCK 6S_AKAJ8HC1TC3ES","isRedacted":false,"id":15639, "name":"Asset","description":"","created":1541771921633," modified":1541771973213, "createdBy":"john.doe","modifiedBy":"john.doe","version":2}]
Response: Array of Entity Objects
Fetch entities by Ids
Method: GET
URL: api/v4/o/:organizationSlug/entities/:ids - Optional Parameters:
includeChildren o includeArchived o includeRelations o levels
Response: Array of Entity Objects
Update entities by Ids
Method: POST, PUT
URL: api/v4/o/:organizationSlug/entities/ids
Payload: Array of Entity Object
Payload Example: [234, 233]
Response: Array of Entity Objects
Delete entities by Ids
Method: DELETE
URL: api/v4/o/:organizationSlug/entities/ids
Payload: Array of Entity Object
Payload Example: [234, 233]
Response: Array of Entity Objects
Transform entities into another class
Revert entities to previous version
Method: PUT
URL: api/v4/o/:organizationSlug/entities/revert/:ids/:versionNumbers
Response: Array of reverted Entity Objects
Example: api/v4/o/demo/entities/transform/3/9390,9450
Restore deleted entities
Method: PUT
URL: api/v4/o/:organizationSlug/entities/restore/:ids
Response: Array of reverted Entity Objects
Example:
Auto number entities
Method: PUT
URL: api/v4/o/:organizationSlug/entities/autonumber/:id - Optional Parameters: o startNumber o singleLevel o useControlStep
Response: Array of auto numbered Entity Objects - Example:
Counts:
Fetch entities count:
Method: GET
URL: api/v4/o/:organizationSlug/p/:projectId/entities/counts - Parameters (ONE of the following is required):
label=true o class=true
propertyId=<property ID>
Response: Array of label Id, classes Id, or property Id and their entities count
Example: /api/v4/o/orgName/p/1/entities/counts?propertyId=262 Fetch diagram count
Method: GET
URL: api/v4/o/:organizationSlug/p/:projectId/diagrams/counts
Response: Array of diagrams their entities count
Schema:
Organization schema
Method: GET
URL: api/v4/o/:organizationSlug/schema
Response: Schema Object
Update organization schema
Method: POST, PUT
URL: api/v4/o/:organizationSlug/schema - Payload: Schema Object -
Payload Example:
Response: Schema Object
Delete organization schema properties or labels
Method: DELETE
URL: api/v4/o/:organizationSlug/schema/:type/:ids
Response: Schema Object
Fetch project schema
Method: GET
URL: api/v4/o/:organizationSlug/p/:projectId/schema
Response: Schema Object
Update project schema
Method: POST, PUT
URL: api/v4/o/:organizationSlug/p/:projectId/schema - Payload: Schema Object - Payload Example:
Response: Schema Object
Delete project schema properties or labels
Method: DELETE
URL: api/v4/o/:organizationSlug/p/:projectId/schema/:type/:ids - Response: Schema Object
Baselines:
Fetch baselines
Method: GET
URL: api/v4/o/:organizationSlug/p/:projectId/baselines
Optional Parameters: o key
Response: Baseline Objects
Create new baseline
Method: POST
URL: api/v4/o/:organizationSlug/p/:projectId/baselines
Payload: Baseline Object
Payload Example:
Response: Baseline Object
Update baseline
Method: PUT
URL: api/v4/o/:organizationSlug/p/:projectId/baselines
Payload: Baseline Object
Payload Example:
Response: Baseline Object
Delete baseline
Method: DELETE
URL: api/v4/o/:organizationSlug/p/:projectId/baselines
Payload: Baseline Object
Payload Example:
Response: Baseline Object Baseline Snapshot:
Fetch baseline snapshot
Method: PUT
URL: api/v4/o/:organizationSlug/p/:projectId/baselines/:baselineId/snapshot
Response: Array of baselined Entity Objects
Projects:
Fetch my projects
Method: GET
URL: api/v4/o/:organizationSlug/p - Optional Parameters:
Response: Array of Project Objects
Fetch a project
Method: GET
URL: api/v4/o/:organizationSlug/p/:projectId
Response: Project Object
Update a project
Method: POST, PUT
URL: api/v4/o/:organizationSlug/p/:projectId - Payload: Project Object - Payload Example:
Response: Project Object
Delete a project
Method: DELETE
URL: api/v4/o/:organizationSlug/p/:projectId
Response: Project Object
Folders:
folders
Method: GET
URL: api/v4/o/:organizationSlug/folders - Response: Array of Folder Objects
Roles:
Fetch roles
Method: GET
URL: api/v4/o/:organizationSlug/roles
Response: Array of Role Objects
Create new roles
Method: POST
URL: api/v4/o/:organizationSlug/roles
Payload: Role Object
Payload Example: {"name": "my role", "description": "role description", "permissions": ["READ", "SHARE"]}
Response: Role Object
Update role
Method: PUT
URL: api/v4/o/:organizationSlug/roles
Payload: Role Object
Payload Example: {"name": "my role2", "description": "role description", "permissions": ["READ"]} - Response: Role Object
Delete a role
Method: DELETE
URL: api/v4/o/:organizationSlug/roles/:roleId
Response: Role Object
Example: /api/v4/o/free/roles/1
Teams:
Fetch
Method: GET
URL: api/v4/o/:organizationSlug/teams
Response: Array of Team Objects
Create new team
Method: POST
URL: api/v4/o/:organizationSlug/teams
Payload: Team Object
Payload Example: {"name": "my team", "description": "team description"} - Response: Team Object
Update team
Method: PUT
URL: api/v4/o/:organizationSlug/teams
Payload: Team Object
Payload Example: {"name": "my team 2", "description": "team description 2"}
Response: Team Object
Delete a team
Method: DELETE
URL: api/v4/o/:organizationSlug/teams/:teamId
Response: Team Object
Example: /api/v4/o/free/team/1
Team Users:
Fetch users on a team
Method: GET
URL: api/v4/o/:organizationSlug/teams/:teamId/users
Response: Array of Team Users Objects
Add user to a team
Method: POST
URL: api/v4/o/:organizationSlug/teams/:teamId/users/:usernamesOrEmails
Response: Array of User Objects
Example: /api/v4/o/:orgslug/teams/1/users/john.doe
Remove a user from a team
Method: DELETE
URL: api/v4/o/:organizationSlug/teams/:teamId/users/:usernamesOrEmails
Response: Array of User Objects
Example: /api/v4/o/:orgslug/teams/1/users/john.doe
Files:
Download file
Method: GET
URL: api/v4/o/:organizationSlug/files/:key/download
Response: Downloads the file
Serve file
Method: Get
URL: api/v4/o/:organizationSlug/files/:key/serve - Optional Parameters: o preview
Response: Serves the file
Fetch file’s metadata
Method: GET
URL: api/v4/o/:organizationSlug/files/:key
Response: File Object’s Metadata
Upload File
Method: POST
URL: api/v4/o/:organizationSlug/p/:projectId/files
Payload: Binary file
Response: File Object
Update File
Method: PUT
URL: api/v4/o/:organizationSlug/p/:projectId/files
Payload: Array of Files
Response: Array of File Object
Download project file
Method: GET
URL: api/v4/o/:organizationSlug/p/:projectId/files/:key/download
Response: Downloads the file
Serve project file - Method: Get
URL: api/v4/o/:organizationSlug/p/:projectId/files/:key/serve - Optional Parameters: o preview
Response: Serves the file
Fetch project file’s metadata
Method: GET
URL: api/v4/o/:organizationSlug/p/:projectId/files/:key - Response: File Object’s Metadata
Comments:
Fetch comments
Method: GET
URL: api/v4/o/:organizationSlug/comments /:id
Response: Comment Object
Fetch by entity Id - Method: GET
URL: api/v4/o/:organizationSlug/comments/entities/:entityId
Response: Array of Comment Objects
Fetch by project Id
Method: GET
URL: api/v4/o/:organizationSlug/p/:projectId/comments - Optional Parameters: o Limit
offset
Response: Array of Comment Objects
Create new comment
Method: POST
URL: api/v4/o/:organizationSlug/comments
Payload: Array of Comment Objects
Response: Array of Comment Objects
Update a comment
Method: PUT
URL: api/v4/o/:organizationSlug/comments
Payload: Comment Object
Response: Comment Object
Delete a comment
Method: DELETE
URL: api/v4/o/:organizationSlug/comments/:id - Response: Comment Object
Exporters:
Export XML
Method: GET
URL: api/v4/o/:organizationSlug/p/:projectId/export/xml
Response: Export the XML Innoslate File
Export Inno
Method: GET
URL: api/v4/o/:organizationSlug/p/:projectId/export/ zip - Response: Exports the Inno Innoslate File
Quality Checker:
Run Quality Checker
Method: POST
URL: api/v4/o/:organizationSlug/qualitychecker
Payload: Array of EntityIds
Response: success
Project users (Share/Unshare):
Fetch a user to project
Method: GET
URL: api/v4/o/:organizationSlug/p/:projectId/users
Response: Array of User Objects
Add
Method: POST
URL: api/v4/o/:organizationSlug/users/:usernamesOrEmails Parameters:roleId
Response: User Objects
Example: /api/v4/o/free/p/1/users/john.doe?roleId=1
Remove
Method: DELETE
URL: api/v4/o/:organizationSlug/users/:usernamesOrEmails
Response: User Objects
Example: /api/v4/o/free/p/1/users/john.doe
Project Team (Share/Unshare):
Fetch team on a project
Method: GET
URL: api/v4/o/:organizationSlug/p/:projectId/teams
Response: Array of Team Objects
Add team to a project
Method: POST
URL: api/v4/o/:organizationSlug/p/:projectId/ teams /:teamId - Parameters: o roleId
Response: Team Object
Example: /api/v4/o/free/p/1/teams/2?roleId=1
Remove
Method: DELETE
URL: api/v4/o/:organizationSlug/p/:projectId/teams/:teamId
Response: Team Object
Example: /api/v4/o/free/p/1/ teams/2
Organizations:
Fetch my organizations
Method: GET
URL: api/v4/o
Response: Array of organizations
Fetch organization by Id
Method: GET
URL: api/v4/o/:organizationSlug
Response: Organization Object
Create organization
Method: POST
URL: api/v4/o
Payload: Organization Object
Payload Example: {"slug": "example", "name": "org name", "description": "org description","membersCanCreateProjects": true}
Response: Organization Object
Update organization
Method: PUT
URL: api/v4/o
Payload: Organization Object - Payload Example: {"slug": "example", "name": "org name1", "description": "org description2","membersCanCreateProjects": false}
Response: Organization Object
Delete organization
Method: DELETE
URL: api/v4/o/:organizationSlug
Response: Organization Object
Example: /api/v4/o/example
Organization Users:
Fetch organization users
Method: GET
URL: api/v4/o/:organizationSlug/users
Response: Array of users
Add user to an organization
Method: POST
URL: /api/v4/o/:orgslug/users/:username
Parameters o Permission: [admin, member]
Response: User Object
Example: /api/v4/o/free/users/john.doe?permission=member
Remove user from organization
Method: DELETE
URL: api/v4/o/:organizationSlug/users/:usernamesOrEmails
Response: User Object
Example: /api/v4/o/free/users/john.doe
Logs:
Fetch access logs
Method: GET
URL: api/v4/accesslogs/:type/:since
Response: Array of User and last access
Fetch access logs for the past 30 days
Method: GET
URL: api/v4/accesslogs/:type
Response: Array of User and last access
Fetch access log per organization
URL: api/v4/o/:organizationSlug/accesslogs/:type/:since
Response: Array of User and last access
Fetch access logs per organization for the past 30 days
Method: GET
URL: api/v4/o/:organizationSlug/accesslogs/:type
Response: Array of User and last access
Fetch new user logs
Method: GET
URL: api/v4/newuserlogs/:since
Response: Array of Users
Fetch new user logs for the past 30 days
Method: GET
URL: api/v4/newuserlogs - Response: Array of User
Intelligence:
Run Intelligence
Method: POST
URL: api/v4/o/:organizationSlug/p/:projectId/intelligence - Response: List of Issues
Traceability assist:
Run traceability assist
Method: POST
URL: api/v4/o/:organizationSlug/assist/traceability
Response: Array of Objects with entityIds and confidence
Suspect assist:
Run suspect assist
Method: POST
URL: api/v4/o/:organizationSlug/assist/ suspect
Response: Array of Objects with entityIds and confidence
Feedback:
Send Feedback
Method: POST
URL: api/v4/o/:organizationSlug/feedback
Payload: Organization Object
Payload Example: { email: "", firstName: "John", lastName: "Doe", message: "Test Message"}
Response: success
⚠️Reminder: Allocate Ids:
In order to put/post new objects to projects, it is necessary to first allocate Ids for them.
Use the returned Ids and Global Ids in the payload when updating entities to create new entities.
Method: Get
URL: api/v4/o/:organizationSlug/allocate_ids - Parameters:
Type: entity, class, relation, property, label
Count
Response: [{“id”:130,”globalId”:I_9AYHDK70QMK99_8H187}]
To continue learning about Enterprise User Guides, Click Here .
(Next Article: JAVA SDK Integration)