Signavio Process Manager API Guide
Signavio Process Manager API Guide
PUBLIC
2026-03-27
3 Authentication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5 Resource APIs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5.1 Dictionary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
API Reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Custom Attribute Values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Creating Custom Attributes for Dictionary Categories. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Multi-Language Dictionary Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.2 Directory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
API Reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.3 Import and Export. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
API Reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.4 Model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
API Reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Creating Custom Attributes for a BPMN Diagram. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.5 Search. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64
API Reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
6 Custom Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
9 Troubleshooting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
With the SAP Signavio Process Manager APIs, you can integrate the application with third-party applications,
allowing you to manage all diagram, folder, and dictionary data. You can do things such as create, update or
retrieve your data in addition to other operations.
Each API provides a collection of endpoints related to a specific resource. You can learn about the functionality
provided by each API in the Resource APIs section, as well as general information about requests and
responses, and examples of using the API.
For more information, visit our complete getting started tutorial available on the SAP community page at
Getting Started with SAP Signavio Process Manager API .
If you wish to send requests to this API using Postman, we provide a ready-to-use collection for you to
download and reuse. You can find it at the SAP Samples GitHub repository .
API access requires setting up technical user accounts with the appropriate licenses and permissions.
To integrate with the SAP Signavio Process Manager API, we advise that you create technical user accounts
and assign only the API Edition license to these technical users. Don't add any other licenses to your technical
users. The dedicated API Edition license enables technical users to bypass the single sign-on login process,
facilitating seamless API operations.
When creating technical user accounts, we recommend using dedicated technical email addresses, such as
integrations-one@[companyname].com, integrations-two@[companyname].com, and so on, instead of personal
emails. You would need access to these email addresses. Assigning the API Edition license to technical users
works like assigning any other license to a regular user. For more information, see User Accounts.
Tip
It's best practice to always use one API technical user account for each integration scenario or integration
system.
Make sure that the technical users have the required permissions, such as the ability to read processes or
to create dictionary items. Granting permissions is done by adding access rights. For more information, see
Manage Access Rights.
Restriction
With the API Edition license assigned to technical user accounts, users are unable to access the
application through the user interface.
If there is already one or more API Edition licenses available in your workspace, go ahead and assign them to
the technical user accounts. If an API Edition license isn't readily available in your workspace, request one by
proceeding as follows:
1. Contact SAP Support by creating a support case in SAP for Me. For more information, see Reporting an
Issue in the SAP Signavio Support Guide.
2. Include your Tenant ID and region or server when submitting the incident. Our support team will assign
licenses to your workspace and from there, you can assign them to the technical user accounts.
Utilizing the credentials of a user associated with any license other than API Edition consumes a paid
license, which incurs additional cost.
Password Policy
Use the SAP Signavio Process ManagerSAP Signavio Process Modeler technical user's password and not your
SSO password.
• Create a technical, non-SSO, user in User Management. For more information, see User Accounts in the
SAP Signavio Process ManagerSAP Signavio Process Modeler Workspace Admin Guide, OR
• Reset the password for your SSO-created user in User Management. For more information, see Changing
User Settings in the same guide.
To access an SAP Signavio Process Manager API, the user must first be authenticated. Authentication is done
by dispatching a token request to acquire a JWT (JSON Web Token) and cookie. For this, a user e-mail address
and password are required.
Token Request
Method POST
Endpoint /auth/v1/token
Tip
Token Response
If you omit the tokenonly=true parameter, successful authentication results in a 302 Found response
status, instead of 200 OK.
From the response, you can access the cookie and the JWT:
• The cookie is returned in a response field named JSESSIONID. Copy the corresponding value to obtain the
cookie.
• The JWT is returned in the response body. The token forms the entirety of the body's content. Therefore
you can obtain the JWT by copying the whole response body.
• Include the cookie in the request's Cookie header with the value 'JSESSIONID={value}', substituting the
cookie value.
• Include the JWT by adding an x-signavio-id request header with the token as its value.
Note
The authentication token is valid for 8 hours upon receipt. On reaching this time limit, the token expires and
a new token must be obtained.
Base URL
API endpoints are relative to the base URL, which is specific to your region. For the token request, replace the
baseUrl in the following path:
[Link]
Australia [Link]
Canada [Link]
EU [Link]
Japan [Link]
Singapore [Link]
USA [Link]
Example
Example
import requests
def authenticate():
# Provide values for the following variables
base_url = ''
username = ''
password = ''
tenantId = ''
payload = {
'name': username,
'password': password,
'tokenonly': 'true',
'tenant': tenantId
}
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
}
login_url = base_url + '/auth/v1/token'
# Send request
response = [Link]("POST", login_url, data=payload,
headers=headers)
# Decode token from response body
auth_token = [Link]('utf-8')
return {
'auth_token': auth_token
}
authenticate()
Related Information
Find out how URLs map to resources in SAP Signavio Process ManagerAPIs as well as how resources are
represented.
URL Scheme
All requests use the following URL scheme, where the {id} and {extension} path segments are optional:
[Link]
[Link]
[Link]
The baseUrl value is region-specific and depends on your location. The available regions are:
Australia [Link]
Canada [Link]
EU [Link]
Japan [Link]
Singapore [Link]
USA [Link]
Resource Name
Each type of resource has its own name that is used in URLs, for example directory (for folders) and model.
Example
Not all resources implement all HTTP methods. Requesting a resource without an ID is only possible with the
GET method and not all resources support this method.
ID
The ID is a unique identifier. Requesting a resource URL with an ID returns all information available about the
resource. A resource is usually divided into several sub-resources, each identified by its extension.
Extension
The extension defines a sub-resource that contains attributes or other resources. For example, a model has the
extension info that includes the attributes title, description, creation date.
{
"href": "<resourceUri>",
"rel": "<resourceType>",
"rep": <representation>
}
Resource URI
Use this relative URI to get or manipulate the resource’s data. Every URI starts with a forward slash and the
resource name (depending on its type), followed by URL path segments for the ID and an optional extension
type.
Resource Type
In most cases, the resource type is the same as the extension and is used to qualify the resource. For example,
in /model/e78c0b90010f489fa9025aaa27cc6174/info the resource type is info.
Representation
The resource representation can either be a JSON object or a JSON array that contains the resource’s content.
The structure differs from one resource type to another.
5.1 Dictionary
With the Dictionary API, you can create and manage dictionary entries and dictionary categories.
Note
The terms 'dictionary' and 'glossary' can be used interchangeably. In this documentation, the term
'dictionary' is used, while the API endpoints use the term 'glossary'.
In general, the functions provided by this API enable you to perform CRUD actions, in other words creating,
retrieving, updating, and deleting dictionary entries and categories.
Prerequisites
Before using the API, you must obtain an authentication token. Refer to Authentication [page 6] for further
guidance. Once you have the token, include it in all requests by adding an x-signavio-id request header with
the token as the header's value.
Requests
Requests to the Dictionary API are dispatched to the following URLs accordingly:
In both cases, the base URL is region-specific. The available base URLs are:
Australia [Link]
Canada [Link]
EU [Link]
Japan [Link]
Singapore [Link]
USA [Link]
Retrieving Information
You can retrieve dictionary information in one of two ways: a general search or requesting individual resources.
This applies to both dictionary entries and dictionary categories.
The first way is to perform a search. Sending a GET request to /spm/v1/glossary or /spm/v1/
glossarycategory returns a list of dictionary entries or dictionary categories respectively. In both cases,
the search can be refined using additional query parameters.
For example, when searching dictionary entries, you can use parameters to:
Tip
When searching, we recommend setting the include parameter to all. This executes a search in
all dictionary items, including meta-attribute values and dictionary items from a category and its
subcategories.
The second way to retrieve information is to request resources individually. Sending a GET request
to /spm/v1/glossary/{id} or /spm/v1/glossarycategory/{id} returns a specific dictionary entry or
dictionary category respectively.
Refer to the API Reference [page 15] or the API Documentation on the SAP Business Accelerator Hub for a
comprehensive description of request information.
The Dictionary API provides a range of actions for keeping your dictionary up-to-date. For both dictionary
entries and dictionary categories, new resources can be created and existing resources can be updated or
deleted.
Creation is done by dispatching a POST request to the URL of the corresponding resource type. Attributes of
the new resource are provided in accompanying form data.
To discover custom dictionary attributes' IDs and data structures, use the SAP Signavio Process Manager
user interface to create a dictionary item in the corresponding category. Then, retrieve the dictionary entry
via the API and use the JSON representation of the dictionary entry as a template.
Updating is done by dispatching a PUT request to the URL of the corresponding resource. Similarly to creation,
updated attributes are provided in accompanying form data.
Caution
Existing metadata values aren’t deleted if you send a PUT request without a metaDataValues attribute.
This differs from other optional parameters. For example, an existing description of a dictionary entry is
deleted if the request body doesn’t contain the description parameter.
Deleting is done by dispatching a DELETE request to the URL of the corresponding resource.
Caution
Deleting dictionary entries and dictionary categories is permanent. Deleted resources can't be restored.
Refer to the API Reference [page 15] or the API Documentation on the SAP Business Accelerator Hub for a
comprehensive description of request information.
Responses
For a complete listing of all response types per endpoint, refer to the API Reference [page 15] or the API
Documentation on the SAP Business Accelerator Hub. This includes responses to successful operations as well
as potential errors.
Example
The following script executes a dictionary full-text search and prints the result:
Sample Code
import requests
from conf import *
from [Link] import authenticate
# user variables
query = "test"
limit = 10
offset = 0
# Provide appropriate base URL
base_url = ''
dictionary_url = base_url + "/spm/v1/glossary"
query_url = "{0}?q={1}".format(dictionary_url, query)
auth_data = authenticate()
Output Code
[
{
"rel": "gitem",
"href": "/glossary/2dfa3594fbf54f4db948e985af47c571",
"rep": {
"glossaryId": "8cce891eaabe4294bfa90dfd560be22c",
"linkedByCount": 0,
"replacedItemIds": [],
"linkedCount": 0,
"formats": {
"description": []
},
"id": "2dfa3594fbf54f4db948e985af47c571",
"categoryName": "IT Systems",
"category": "/glossarycategory/a52d17797a2442669a5b4e9c66dcefb0",
"title": "new IT system entry",
"color": "#61AEF2",
"description": "A new IT system.",
"hasAttachments": true,
"metaDataValues": {},
"occurrence": 0,
"attachments": [
{
"id": "c70a72f86e3d4ce6b2df8ff011d8eb37",
"label": "Signavio",
"url": "[Link]
}
],
"language": "de_de"
}
},
{
"rel": "info",
"href": "/glossary",
"rep": {
"size": 1
}
}
]
For more examples, refer to the API Documentation on the SAP Business Accelerator Hub.
All endpoints listed here are relative to {baseUrl}/spm/v1. This is explained further in URLs and Resource
Representation [page 9].
Unless otherwise indicated, all requests should include the following headers:
Cookie JSESSIONID=(jsessionid)
Accept application/json
All endpoints listed here could potentially return the following errors:
Status Code 500, The custom dictionary categories feature isn't available for your
[Link] workspace.
Status Code 404, no access The accessing user doesn’t have the permission to access the
corresponding dictionary category.
GET /glossary
category Filters by entry type - ORG_UNIT, DOCUMENT, ACTIVITY, STATE, or IT_SYSTEM, representing
the pre-defined dictionary categories Organizational Units, Documents, Activities, Events, IT
Systems, respectively, or a Dictionary category’s ID.
sort If set to title, sorts entries by title; otherwise, the search sorts results by a dynamically
determined relevance score.
offset Within the returned results, return results starting at offset, useful in combination with the limit
parameter (paging).
include Optional. If set to all, dictionary entries from a category and its subcategories are listed.
Note
Use paging and adhere to entry limits when fetching dictionary entries. You can retrieve a maximum of
1000 records per request. To fetch the first 1000 records, use the query parameter ?limit=1000. To
access the next 1000 records, use the query parameters ?limit=1000&offset=1000, and continue this
pattern for subsequent records. For more information, see Restrictions and Limits [page 82].
Response
Returns a JSON representation of the search results. All dictionary entries are contained in a top-level array
(bounded by [ and ]), and contain the key-value pair "rel": "gitem" (for 'glossary item'). The important
fields inside the content of their rep object have the same semantics as is defined when creating dictionary
entries. They're:
• id
• title
• category
• description
• attachments
• categoryName
• color
Note
If the category ID in the category query string isn't found, the response includes all categories instead of
having a 404 Not Found status.
Example
Example response:
[
{
"rel":"gitem",
],
"linkedCount":0,
"formats":{
"description":[
]
},
"id":"2dfa3594fbf54f4db948e985af47c571",
"categoryName":"IT Systems",
"category":"/glossarycategory/a52d17797a2442669a5b4e9c66dcefb0",
"title":"new IT system entry",
"color":"#61AEF2",
"description":"A new IT system.",
"hasAttachments":true,
"metaDataValues":{
},
"occurrence":0,
"attachments":[
{
"id":"c70a72f86e3d4ce6b2df8ff011d8eb37",
"label":"Signavio",
"url":"[Link]
}
],
"language":"de_de"
}
},
{
"rel":"info",
"href":"/glossary",
"rep":{
"size":1
}
}
]
Potential Errors
GET /glossary/<id>
Response
Returns a JSON object representing the dictionary entry.
Example
Example response:
]
},
"color":"#800000",
"granted_revision_user":"",
"author":"/user/36821979e14b417dac355a748f896874",
"granted_revision_date":"2017-10-17 10:44:46 +0200",
"description":"The new back end system needs to support the legacy data
format. Otherwise, the integration with older 3rd-party integrations breaks.",
"language":"en",
"replacedItemIds":[
],
"type":"UNDEFINED",
"authorCompany":"Signavio",
"title":"Support legacy data format",
"categoryName":"Requirements",
"headRevisionNum":1,
"authorName":"John Doe",
"metaDataValues":{
"meta-summary":""
},
"comment":"",
"id":"e44ace669662486286c70183c8655388",
"category":"/glossarycategory/e8be7975fe4446138e5495a6a3e9c13a",
"hasAttachments":false,
"glossaryId":"be5e25dd63d747f5bd8635b0e0c2f38c",
"updated":"2017-10-17 10:44:46 +0200",
"headRevision":"/itemrevision/47225a21d39b429ebe2ead3a191a4676"
}
This operation retrieves the specified dictionary entry along with additional meta information, including the
category containing the entry.
GET /glossary/<id>/info
Response
Returns a JSON object representing the dictionary entry.
Example
Example response:
[
{
"rel":"link",
"href":"/glossary/e44ace669662486286c70183c8655388/link",
"rep":[
]
},
{
"rel":"subscription",
]
},
{
"rel":"info",
"href":"/glossary/e44ace669662486286c70183c8655388/info",
"rep":{
"granted_revision":"/itemrevision/47225a21d39b429ebe2ead3a191a4676",
"granted_revision_number":1,
"formats":{
"description":[
]
},
"color":"#800000",
"granted_revision_user":"",
"author":"/user/36821979e14b417dac355a748f896874",
"granted_revision_date":"2017-10-17 10:44:46 +0200",
"description":"The new back end system needs to support the legacy data
format. Otherwise, the integration with older 3rd-party integrations breaks.",
"language":"en",
"replacedItemIds":[
],
"type":"UNDEFINED",
"authorCompany":"Signavio",
"title":"Support legacy data format",
"categoryName":"Requirements",
"headRevisionNum":1,
"authorName":"John Doe",
"metaDataValues":{
},
"comment":"",
"id":"e44ace669662486286c70183c8655388",
"category":"/glossarycategory/e8be7975fe4446138e5495a6a3e9c13a",
"hasAttachments":false,
"glossaryId":"be5e25dd63d747f5bd8635b0e0c2f38c",
"updated":"2017-10-17 10:44:46 +0200",
"headRevision":"/itemrevision/47225a21d39b429ebe2ead3a191a4676"
}
},
{
"rel":"parents",
"href":"/glossary/e44ace669662486286c70183c8655388/parents",
"rep":[
{
"rel":"cat",
"href":"/glossarycategory/e8be7975fe4446138e5495a6a3e9c13a",
"rep":{
"decisionInput":false,
"color":"#800000",
"hidden":false,
"workflowSyncUpToDate":false,
"publishingMode":"AUTO",
"type":"UNDEFINED",
"isStandard":false,
"workflowSyncEnabled":false,
"name":"Requirements",
GET /glossarycategory
Query Parameters
allCategories (Optional) If set to true, all categories’ representations are returned at once,
without the need to send additional queries for sub-categories.
showHidden (Optional) If set to true, categories configured as hidden are included in the
result.
Response
Returns a list of all dictionary categories. The content data is partly made up of information as described in
creating dictionary categories. Additionally, each category contains the following information:
ChildCategories Array of prefixed IDs of categories that have this category as parent category.
ItemCount The number of dictionary entries in this category (excluding those in sub-
categories).
OldCategory If the category corresponds to one of the six standard categories, this field is set.
For example, some reports consider the content of these categories. The following
oldCategories exist:
Example
Example response:
[
{
"rel":"cat",
"href":"/glossarycategory/b64046bf36654833bdf66231bb1f3cd7",
"rep":{
"childCategories":[
],
"id":"/glossarycategory/b64046bf36654833bdf66231bb1f3cd7",
"order":0,
"items":[
],
"oldCategory":"ORG_UNIT",
"color":"#C22F1E",
"hidden":false,
"name":"Organizational Units",
"childCategoryCount":0,
"itemCount":0,
"glossaryId":"8cce891eaabe4294bfa90dfd560be22c"
}
},
{
"rel":"cat",
"href":"/glossarycategory/ec6e5cba209e44f9a6a072860622fc0a",
"rep":{
"childCategories":[
],
"id":"/glossarycategory/ec6e5cba209e44f9a6a072860622fc0a",
"order":1,
"items":[
],
"oldCategory":"DOCUMENT",
"color":"#F0AD26",
"hidden":false,
"name":"Documents",
"childCategoryCount":0,
"itemCount":0,
"glossaryId":"8cce891eaabe4294bfa90dfd560be22c"
}
},
{
"rel":"cat",
"href":"/glossarycategory/ab5852a9aecd45bba7c3bf40635d5c3f",
"rep":{
"childCategories":[
],
"id":"/glossarycategory/ab5852a9aecd45bba7c3bf40635d5c3f",
"order":2,
"items":[
],
"oldCategory":"ACTIVITY",
"color":"#B8CC00",
],
"oldCategory":"STATE",
"color":"#00A7AC",
"hidden":false,
"name":"Events",
"childCategoryCount":1,
"itemCount":0,
"glossaryId":"8cce891eaabe4294bfa90dfd560be22c"
}
},
{
"rel":"cat",
"href":"/glossarycategory/02407da1bca6441e82192cf97560d2d3",
"rep":{
"childCategories":[
],
"id":"/glossarycategory/02407da1bca6441e82192cf97560d2d3",
"order":0,
"items":[
],
"color":"#00A7AC",
"parentCategory":"/glossarycategory/85686412c24e4dd2a04f03df07345d8c",
"hidden":false,
"name":"mySecondCustomCategory",
"childCategoryCount":0,
"itemCount":0,
"glossaryId":"8cce891eaabe4294bfa90dfd560be22c"
}
},
{
"rel":"cat",
"href":"/glossarycategory/a52d17797a2442669a5b4e9c66dcefb0",
"rep":{
"childCategories":[
],
"id":"/glossarycategory/a52d17797a2442669a5b4e9c66dcefb0",
"order":4,
"items":[
],
"oldCategory":"IT_SYSTEM",
"color":"#61AEF2",
"hidden":false,
"name":"IT Systems",
"childCategoryCount":0,
"itemCount":0,
"glossaryId":"8cce891eaabe4294bfa90dfd560be22c"
],
"id":"/glossarycategory/d442e84547584812be868602f5901aee",
"order":5,
"items":[
"be19b2b56a714e0e85f2230c7bcb339d",
"7426f361937a475997772fadddd70781",
"f7b9ea1625174c138cb0b92bead675f3"
],
"oldCategory":"NONE",
"color":"#7F7F7F",
"hidden":false,
"name":"Others",
"childCategoryCount":0,
"itemCount":3,
"glossaryId":"8cce891eaabe4294bfa90dfd560be22c"
}
},
{
"rel":"cat",
"href":"/glossarycategory/2b73a954c03c4e6182fac8c896513bb4",
"rep":{
"childCategories":[
],
"id":"/glossarycategory/2b73a954c03c4e6182fac8c896513bb4",
"order":6,
"items":[
"4cfba70728694e4da6da8fa5279a5d39",
"5d10dcbbc2c5450f865e337d6403d9b2",
"a0d9c01f153e451d9a528469984360c6"
],
"color":"#fffaaa",
"hidden":false,
"name":"myFirstCustomCategory",
"childCategoryCount":0,
"itemCount":3,
"glossaryId":"8cce891eaabe4294bfa90dfd560be22c"
}
}
]
Potential Errors
Status Code 500, Access for users using a web browser isn't allowed.
[Link]: Make sure the HTTP headers are set correctly to
Accept: application/json.
GET /glossarycategory/<id>
Query Parameters
allCategories (Optional) If set to true, all categories’ representations are returned at once,
without the need to send additional queries for sub-categories.
showHidden (Optional) If set to true, categories configured as hidden are included in the
result.
Response
Returns a list of this category’s sub-categories (rel is cat), and an object with information on the category
itself (rel is info). Sending a GET request to /glossarycategory/{id}/info fetches the information
object only.
Example
Example response:
[
{
"rel":"priv",
"href":"/glossarycategory/851e9da35ccc4931969efe5c7bc10a40/priv",
"rep":[
"[Link]",
"all"
]
},
{
"rel":"info",
"href":"/glossarycategory/851e9da35ccc4931969efe5c7bc10a40/info",
"rep":{
"id":"/glossarycategory/851e9da35ccc4931969efe5c7bc10a40",
"order":2,
"oldCategory":"ACTIVITY",
"color":"#FFFFFF",
"hidden":false,
"name":"Aktivitäten",
"childCategoryCount":2,
"itemCount":1,
"glossaryId":"1435c148625d411ba68bd711185db688"
}
},
{
"rel":"cat",
"href":"/glossarycategory/cdc39ba2cd4b49e883d89bf20fcdce3c",
"rep":{
"childCategories":[
],
"id":"/glossarycategory/cdc39ba2cd4b49e883d89bf20fcdce3c",
"order":0,
"color":"#FFFFFF",
"parentCategory":"/glossarycategory/851e9da35ccc4931969efe5c7bc10a40",
],
"id":"/glossarycategory/5d5b871a4f0e4957aaf82281d5baed2b",
"order":1,
"color":"#FFFFFF",
"parentCategory":"/glossarycategory/851e9da35ccc4931969efe5c7bc10a40",
"hidden":false,
"name":"child2",
"childCategoryCount":0,
"itemCount":0,
"glossaryId":"1435c148625d411ba68bd711185db688"
}
}
]
POST /glossary
Request Headers
Content-Type application/x-www-form-urlencoded
Form Parameters
force (Optional) Set to true if you want to create a new dictionary entry even if an entry with
the same name already exists.
attachments Add a single attachment as an object. For multiple attachments, add them as an array of
objects:
[
{"url":"[Link] "label":"Example"}
]
{
"meta-my-single-line-text": "one",
"meta-my-multi-line-text": "two\nthree\nfour",
"meta-my-dictionary-link": "/glossary/
3aabd26a654c4123a71c597210810000",
"meta-my-date": "2018-12-24T16:46:00.000Z",
"meta-my-number": "42",
"meta-my-drop-down": "ci1545668214217710650210",
"meta-my-url": {
"label": "Example",
"url": "[Link]
},
"meta-my-boolean": true
}
Response
Returns a JSON object containing the created dictionary item.
Note
To discover custom dictionary attributes' IDs and data structures, use the SAP Signavio Process Manager
user interface to create a dictionary item in the corresponding category. Then retrieve the dictionary entry
via the API, for example by executing a sufficiently specific search and use the JSON representation of the
dictionary entry as a template.
Example
Example response:
{
"rel":"gitem",
"href":"/glossary/2dfa3594fbf54f4db948e985af47c571",
"rep":{
"glossaryId":"8cce891eaabe4294bfa90dfd560be22c",
"linkedByCount":0,
"replacedItemIds":[
],
"linkedCount":0,
"formats":{
"description":[
]
},
"id":"2dfa3594fbf54f4db948e985af47c571",
"categoryName":"IT Systems",
"category":"/glossarycategory/a52d17797a2442669a5b4e9c66dcefb0",
"title":"new IT system entry",
"color":"#61AEF2",
"description":"A new IT system.",
"hasAttachments":true,
"metaDataValues":{
"meta-summary":""
},
"occurrence":0,
"attachments":[
{
"id":"c70a72f86e3d4ce6b2df8ff011d8eb37",
Potential Errors
An entry with the title (TITLE) already exists. Re-send with form
parameter force=true to create the entry anyway. The existing
item won't be overwritten.
Status Code 500, An error occurred while trying to manipulate additional data related
UpdatingModelFailed to the dictionary entry.
PUT /glossary/<id>/info
Request Headers
Content-Type application/x-www-form-urlencoded
Form Parameters
force (Optional) Set to true if you want to create a new dictionary entry even if an entry with
the same name already exists.
attachments Add a single attachment as an object. For multiple attachments, add them as an array of
objects:
[
{"url":"[Link] "label":"Example"}
]
{
"meta-my-single-line-text": "one",
"meta-my-multi-line-text": "two\nthree\nfour",
"meta-my-dictionary-link": "/glossary/
3aabd26a654c4123a71c597210810000",
"meta-my-date": "2018-12-24T16:46:00.000Z",
"meta-my-number": "42",
"meta-my-drop-down": "ci1545668214217710650210",
"meta-my-url": {
"label": "Example",
"url": "[Link]
},
"meta-my-boolean": true
}
Note
Existing metaDataValues aren’t deleted if you send a PUT request without a metaDataValues attribute.
This differs from other optional parameters. For example, an existing description of a dictionary entry is
deleted if the request body doesn’t contain the description parameter.
Caution
DELETE /glossary/<id>
Response
{"success" : true}
Potential Errors
POST /glossarycategory
Content-Type application/x-www-form-urlencoded
Form Parameters
color A HEX color to display with the category, for example #800000 (dark red)
order The order the category takes among categories within the same context
parentCategory The category's parent category. Leave the parameter unset to create the category on the
top-most level.
restricted If set to true, the category may only be accessible to users who own a specific privilege.
Response
Returns the newly created category.
Example
Example response:
{
"rel":"cat",
"href":"/glossarycategory/02407da1bca6441e82192cf97560d2d3",
"rep":{
"childCategories":[
],
"id":"/glossarycategory/02407da1bca6441e82192cf97560d2d3",
"order":0,
"items":[
],
"color":"#00A7AC",
"parentCategory":"/glossarycategory/85686412c24e4dd2a04f03df07345d8c",
"hidden":false,
"name":"mySecondCustomCategory",
"childCategoryCount":0,
"itemCount":0,
"glossaryId":"8cce891eaabe4294bfa90dfd560be22c"
}
}
Potential Errors
PUT /glossarycategory/<id>
Request Headers
Content-Type application/x-www-form-urlencoded
Request Parameters
color A HEX color to display with the category, for example #800000 (dark red)
order The order the category takes among categories within the same context
parentCategory The category's parent category. Leave the parameter unset to create the category on the
top-most level.
restricted If set to true, the category may only be accessible to users who own a specific privilege.
Potential Errors
• Organizational Units
• Documents
• Activities
• Events
Caution
DELETE /glossarycategory/<id>
Query Parameters
moveContent If set to true, before deleting the category with all its sub-categories, the content is moved to
the 'Others' category. Otherwise, sub-categories and all contained dictionary entries and the
sub-categories' contained dictionary entries are deleted.
Response
A successful response returns:
{"success" : true}
Potential Errors
Status Code 500, The five former standard categories and the
[Link] new 'Others' category can't be moved to
another parent category:
• Organizational Units
• Documents
• Activities
• Events
• IT Systems
• Others
• Single-line text
• Multi-line text
All types, except for Boolean and multi-line text, can be lists.
Examples
Single-line text
"singlelinetext" : "a single line"
Multi-line text
"multilinetext" : "Many lines: \nLine
two. \n\n\nLine three after an empty
line."
Dictionary link
"dictionarylink" : [{
"id" :
"43e92bb841934ab796cae15f51f05cde",
"category" : "/glossarycategory/
c82004460f7f413e9612b23f8d8e3840",
"title" : "Signavio"
}]
Document URL
"documenturl" : {
"label" : "Signavio Homepage",
"url" : "[Link]
}
Boolean
"booleanattributeid" : true
The /spm/v1/meta endpoint enables you to add custom attributes to a dictionary category.
To add a custom attribute, dispatch a POST request to /spm/v1/meta with the following form parameters:
glossaryBindings The dictionary category for which the custom attribute should be created.
category Optional. Restricts the attribute for a specific category for the custom attribute of type
"MetaDataGlossaryLink".
Example
The following Python script creates a new custom attribute of type "MetaDataStringInfo" for dictionary
category:
import requests
from conf import *
from [Link] import authenticate
# user variables
glossaryBindings = {"category": "<category_ID>", "order": 5}
name = "A sample custom attribute"
attributeType = "MetaDataStringInfo"
isGlossaryDefinition = True
parent = "/meta"
isList = True
custom_attribute_url = base_url + "/spm/v1/meta"
Example response:
{
"rel": "meta",
"href": "/meta/meta-asamplecustomattributefordi",
"rep": {
"glossaryBindings": [
{ "category": "9ea30b047e75497d919028c110b2f980", "order": 9 }
],
"lineWrap": false,
"defaultValue": "",
"length": 0,
"description": "",
"isGlossaryDefinition": true,
"type": "MetaDataStringInfo",
"isList": true,
"multilanguage": false,
"stencilsetBindings": [],
"readonly": false,
"name": "A sample custom attribute for dictionary",
"id": "meta-asamplecustomattributefordi"
}
}
Dictionary attributes can be stored in multiple languages. You can add and retrieve them via the API.
In the response, check the object whose href ends with "languages". Its corresponding rep object contains an
escaped JSON string in the value property, which represents the currently defined list of content languages.
If an attribute has been created to support multiple languages, it has a property of multilanguage=true.
This property is returned in the response to a GET /spm/v1/meta request.
Note that this doesn’t necessarily mean that translations are available in all configured languages, only that the
attribute supports adding them.
The default language of an attribute is determined by the chosen locale, for example "en_us" or "de_de".
When an attribute supports multiple languages, the translations of its values are accessible via a property
whose name follows this format: <attribute>_<locale>.
For example, when retrieving a dictionary entry via /spm/v1/glossary, assuming a default locale of "en_us"
and "de_de" as a secondary language:
Similarly to when retrieving them, adding multi-language attributes requires suffixing their name with the locale
of the corresponding translation.
When creating a dictionary entry with POST /spm/v1/glossary, you can supply as a parameter:
1. The attribute value in the default language, for example in the description parameter.
2. The translation of the attribute value into any secondary languages by adding the locale as a suffix to the
attribute name, for example in the description_de_de parameter.
5.2 Directory
With the Directory API, you can manage both directories and directory metadata as well as publish content in
SAP Signavio Process Manager.
In general, the functions provided by this API enable you to perform CRUD actions on directories and their
metadata, in other words creating, retrieving, updating, and deleting them.
Before sending requests, ensure that you followed authentication procedures as described in Authentication
[page 6] to obtain an authentication token. Include this token in all requests by adding an x-signavio-id
request header with the token as the header's value.
Requests
Requests to the Directory API are sent to [Link] The base URL is region-
specific and should be substituted by the correct base URL for your region:
Australia [Link]
Canada [Link]
EU [Link]
Japan [Link]
Singapore [Link]
USA [Link]
Managing Information
You can use this API to retrieve directory metadata. Endpoints are provided to obtain metadata for individual
directories or all items within a specific directory.
You can also send requests for managing directories individually, such as creating, updating, and deleting
them.
Example
The endpoint PUT /spm/v1/directory/{id} allows you to move the directory identified by {id} to a
new location.
Refer to the API Reference [page 38] or the API Documentation on the SAP Business Accelerator Hub for
comprehensive descriptions of each request and its parameters.
For a complete listing of all response types per endpoint, refer to the API Reference [page 38] or the API
Documentation on the SAP Business Accelerator Hub. This includes responses to successful operations as well
as potential errors.
Example
The following code example gets the root folder’s meta data:
Source Code
Output Code
[{
"rel": "dir",
"href": "/directory/961aa342dc4d4115b9ded669517a18d8",
"rep": {
"type": "public",
"visible": true,
"created": "2016-03-07 10:34:30 +0100",
"description": "",
"name": "Shared Documents",
"deleted": false
}
}, {
"rel":"dir",
"href":"/directory/ced8a7b57de04de4ba75a57193442ac8",
"rep": {
[...],
"type":"private",
}
}, {
"rel":"dir",
"href":"/directory/c15ac64587f740b0a9eba2cbac5342e3",
"rep": {
[...],
"type":"trash",
Related Information
All endpoints listed here are relative to {baseUrl}/spm/v1. This is explained further in URLs and Resource
Representation [page 9].
Unless otherwise indicated, all requests should include the following headers:
Cookie JSESSIONID=(jsessionid);LBROUTEID=(lbrouteid)
Accept application/json
GET /directory
The actual folder names may differ depending on the workspace language. Each resource's rel and type
properties differ depending on the resource type. The folders Shared Documents, My Documents, and
Trash have the rel field set to dir and are tagged with a type field, which can be either public, private
or trash. Such type fields are only defined for root folder structures. For the Dictionary, the rel field is set to
glos (from 'glossary').
Tip
Although the href property values start with a /, they're relative to the base path rather than being
absolute URL paths.
Example
Example response
[{
"rel": "dir",
"href": "/directory/961aa342dc4d4115b9ded669517a18d8",
"rep": {
"type": "public",
"visible": true,
"created": "2016-03-07 10:34:30 +0100",
"description": "",
"name": "Shared Documents",
"deleted": false
}
}, {
"rel":"dir",
"href":"/directory/ced8a7b57de04de4ba75a57193442ac8",
"rep": {
[...],
"type":"private",
}
}, {
"rel":"dir",
"href":"/directory/c15ac64587f740b0a9eba2cbac5342e3",
"rep": {
[...],
"type":"trash",
}
},{
"rel":"glos",
"href":"/glossarymanager/5999186c164f42dfbd62683459cefb2d",
"rep": {
"visible":true,
"uri":"/p/glossary?originId=5999186c164f42dfbd62683459cefb2d"
}
}]
GET /directory/<id>
Response
Returns a JSON array listing the related resources of the folder.
Example
[
{
"rel": "info",
"href": "/directory/961aa342dc4d4115b9ded669517a18d8/info",
"rep": {
"visible": true,
"created": "2016-08-27 13:23:09 +0200",
"description": "",
"name": "Shared Documents",
"type": "public",
"deleted": false
}
},
{
"rel": "parents",
"href": "/directory/961aa342dc4d4115b9ded669517a18d8/parents",
"rep": {}
},
{
"rel": "dir",
"href": "/directory/40d7fed893894624878a43f5e99943e7",
"rep": {}
},
{
"rel": "mod",
"href": "/model/fea8a2ac6d184bf2852ecbaa11622a51",
"rep": {
"rev": 1,
"parent": "/directory/961aa342dc4d4115b9ded669517a18d8",
"granted_revision": "",
"type": "Prozesslandkarte",
"deleted": false,
"namespace": "[Link]
"author": "/user/d2e2757a6e6f4856a7843e6ceb69a20e",
"revision": "/revision/d44c345964624d4483b3c61399e4f4be",
"isLicensedStencilSet": true,
"created": "2016-04-07 16:02:59 +0200",
"updated": "2016-04-07 16:02:59 +0200",
"description": "The Description",
"name": "Value Chain: Procurement",
"comment": "",
"parentName": "Shared Documents"
}
}
]
Potential Errors
The root folder structures contain a link to their actual folder representation in the href
property. In the case of the example response to this request, a GET request to /directory/
961aa342dc4d4115b9ded669517a18d8 returns the folder structure of the Shared Documents folder.
Generally, a folder's JSON representation is returned by GET /directory/<id>. This folder structure is an
array that contains the items info, parent, dir and mod. The GET request returns a JSON array with the
following relevant items:
• The info item contains in especially the name, the creation date and a description.
• The parents item contains a reference (href) to the parents resource. A GET request to this reference
returns an array listing all parent folders and their parents, recursively. Each item keeps a reference to the
actual resource representation in the href field and also a short description. The order of the parents is
bottom-up, so the direct parent folder is the first item of the array, the parent’s parent folder is second and
so on.
Tip
The parents item lists all the folder’s ancestors, not just its direct parent folder.
• Each dir item represents a sub-folder, and contains a reference to the folder resource of this sub-folder.
• Each mod item represents a model within the folder, and contains a reference to the corresponding model
resource.
Navigating to Sub-Folders
You can navigate through the folder tree step by step, by using the href references of the dir and parents
items. The following example explains navigating to the folder Obtainment - Example processes and
getting the model structure of the diagram obtainment example:
1. GET /directory returns the four root folder structures. The folder tagged public has the href value /
directory/961aa342dc4d4115b9ded669517a18d8.
2. GET /directory/961aa342dc4d4115b9ded669517a18d8 returns the folder structure of Shared
Documents. It contains a dir item for each sub-folder of Shared Documents. One of the sub-
folders is named Obtainment - Example processes and has the href value /directory/
40d7fed893894624878a43f5e99943e7.
3. GET /directory/40d7fed893894624878a43f5e99943e7 finally returns the Obtainment -
Example processes folder. It contains multiple items of the type mod that represent the model
diagrams in the folder. One of them is named obtainment example and has the model_id
98e75r98wehjt9o54r0w7805u.
4. GET /model/98e75r98wehjt9o54r0w7805u returns the model object of the diagram.
POST /directory
Content-Type application/x-www-form-urlencoded
Form Parameters
parent A reference to the parent folder that will contain the new folder, in the format /directory/
<parent_folder_id>
Response
Remember
The expected HTTP response status is 200 OK rather than 201 Created.
Potential Errors
PUT /directory/<id>/info
Request Headers
Content-Type application/x-www-form-urlencoded
Form Parameters
Response
Potential Errors
PUT /directory/<id>
Note
This operation moves the given directory to a new parent directory. It's also used for soft deletion – in other
words, "moving to trash" – if the parent ID is the ID of the Trash.
Request Headers
Content-Type application/x-www-form-urlencoded
Form Parameters
Response
Returns a JSON representation of the moved folder with its updated parents property.
Potential Errors
Delete a Folder
DELETE /directory/<id>
Caution
This operation deletes the given directory and all items within. No recovery is possible.
Response
Returns a JSON snippet:
{ "success": true }
Potential Errors
This API allows users to import and export artifacts related to SAP Signavio Process Manager.
Prerequisites
Before using the API, you must obtain an authentication token. Refer to Authentication [page 6] for further
guidance. Once you have the token, include it in all requests by adding an x-signavio-id request header with
the token as the header's value.
Requests
When importing or exporting, requests are generally sent to endpoints of the following format:
[Link]
• resourceType: The type of resource being imported or exported, for example model or revision.
• resourceId: The unique identifier of the resource.
• representation: The type of representation the resource is being imported or exported as, for example
png or bpmn_2_0_xml.
Some exceptions to this format exist. Refer to the API Reference [page 45] or the API documentation on the
SAP Business Accelerator Hub for a comprehensive description of the available endpoints.
Australia [Link]
Canada [Link]
EU [Link]
Japan [Link]
Singapore [Link]
USA [Link]
To export the latest version of a model (also called the head revision), set resourceType to model and provide
the model's ID as resourceId.
To export a specific version of a model, set resourceType to revision and provide the revision's ID as
resourceId.
Responses
For a complete description of all response types per endpoint, refer to the API Reference [page 45] or the API
Documentation on the SAP Business Accelerator Hub. This includes responses to successful operations as well
as potential errors.
Related Information
All endpoints listed here are relative to {baseUrl}/spm/v1. URLs are explained further in URLs and Resource
Representation [page 9].
Unless otherwise indicated, all requests should include the following headers:
Cookie JSESSIONID=(jsessionid)
Accept application/json
All endpoints listed here could potentially return the following errors:
You can export the latest revision (also called the head revision) of a diagram via this endpoint:
GET /model/<model_id>/<content_type>
GET /revision/<revision_id>/<content_type>
Replace content_type with the desired export format. Available options are:
• json
• bpmn2_0_xml
• png
• svg
Query Parameters
updateShapeLabels true, result: .json, shape labels are updated based on linked
dictionary items.
mergeDictionaryEntryAttributes true, result: .json, diagram attributes from linked dictionary entries
are added to the attributes of their linking shapes.
mergeLinkedObjectAttributes true, result: .json, diagram attributes from other diagrams that are
linked via collapsed subprocesses are added to the attributes of
their linking collapsed subprocess.
excludeRiskManagement true, result: .json, risk and control attributes, which are linked to
dictionary items, are excluded from the .json, so updating a model
via PUT request doesn't overwrite the Dictionary links.
exportSubprocesses true, result: .json, linked subprocesses are part of the export
alongside the main BPMN 2.0 diagram.
Note
To fetch the DMN 1.2 XML representation of a diagram’s latest revision, send two separate requests: one to
generate the XML and then a second to download the XML.
GET /model/<id>/dmn
• The response is a JSON document rather than an HTTP 303 See Other redirect.
• The response returns a Content-Type of application/json;charset=utf-8.
Example
Example response:
{
"href": "/dmn",
"rel": "exp",
"rep": {
"downloadUrl": "[Link]
06620b1c66c54efdbec2e7881d70",
"messages": [],
"success": true
}
}
GET /dmn-xml-download/<download_id>
Example
Example response:
POST /bpmn2_0-import
Request Headers
Content-Type multipart/form-data
Form Parameters
bpmn2_0file File name and content of the BPMN 2.0 XML file
directory The directory where the content of the BPMN 2.0 XML file should be imported into
modelid (Optional) The ID of an existing model for which to create a new revision
Response
"[true]\r\n"
With the Model API, you can manage process models and their revisions.
In general, the functions provided by this API enable you to perform CRUD actions on models, namely creating,
retrieving, updating, and deleting them. Additional functionality includes creating and managing a model's
revisions, and performing syntax checks.
Note
To access the API reference for extracting BPMN 2.0 in various formats, see Export a Diagram Revision.
This allows you to retrieve diagrams and revisions as XML or JSON, providing complete access to the
BPMN model, including details about its tasks and transitions.
Prerequisites
Before sending requests, ensure that you followed authentication procedures as described in Authentication
[page 6] to obtain an authentication token. Include this token in all requests by adding an x-signavio-id
request header with the token as the header's value.
Requests
Australia [Link]
Canada [Link]
EU [Link]
Japan [Link]
Simgapore [Link]
USA [Link]
The Model API allows you to create, retrieve, update, and delete models (the CRUD operations), providing full
control over the model's life cycle. For models with revisions, you can retrieve a list of these revisions along with
each revision's metadata.
You can also create, retrieve, update, and delete specific revisions of a model.
Find out more in the API Reference [page 52] or the API documentation on the SAP Business Accelerator
Hub.
When creating or updating models in the editor, follow these field length restrictions to avoid breaking an
integration:
This API provides a function for performing a syntax check on a BPMN 2.0 process diagram. Learn more in the
API Reference [page 60].
Publishing Models
• To publish the latest revision of a model, use the POST /publish endpoint. Find out more in Rename a
Diagram or Change Its Published Revision [page 58].
• To publish a previous revision of a model, use the PUT /model/{id}/info endpoint. Find out more in
Rename a Diagram or Change Its Published Revision [page 58]
Responses
For a complete listing of all response types per endpoint, refer to the API Reference [page 52] or the API
Documentation on the SAP Business Accelerator Hub. This includes responses to successful operations as well
as potential errors.
The following code example gets a list with all the revisions of a particular model, together with each revision’s
metadata:
Source Code
import requests
# user variables
# ID of the diagram revision you want to retrieve the revision list for
diagram_ID = '<diagram_ID>'
Output Code
[
{
"rel": "info",
"href": "/model/beb279a43d1d4080808b048510e7e091/revisions",
"rep": {
"size": 3
}
},
{
"rel": "revision",
"href": "/revision/3e4e1ae44c934ff79fbf9fa7f77dc078",
"rep": {
"rev": 3,
"author": "/user/36821979e14b417dac355a748f896874",
"authorName": "John Doe",
"created": "2017-10-17 11:59:42 +0200",
"isDeployed": false,
"comment": "",
"authorCompany": "Signavio",
"status": "none"
}
},
{
"rel": "revision",
"href": "/revision/c3bcc71abcca4e3aa2b84e49c668bf7c",
"rep": {
"rev": 2,
"author": "/user/36821979e14b417dac355a748f896874",
"authorName": "John Doe",
"created": "2017-10-17 11:59:37 +0200",
"isDeployed": false,
"comment": "",
Related Information
All endpoints listed here are relative to {baseUrl}/spm/v1. URLs are explained further in URLs and Resource
Representation [page 9].
Unless otherwise indicated, all requests should include the following headers:
Cookie JSESSIONID=(jsessionid)
Accept application/json
All endpoints listed here could potentially return the following errors:
GET /model/<id>
Request
Retrieves the meta data of a model. If you don’t add any sub-endpoints, the following data is retrieved:
• info
• views
• status
• parents
• subscription
• priv
Note
To access the API reference for extracting BPMN 2.0 in various formats, see Export a Diagram Revision.
This allows you to retrieve diagrams and revisions as XML or JSON, providing complete access to the
BPMN model, including details about its tasks and transitions.
info Basic diagram info, for example the last update or its parent folder. This sub-
endpoint also returns details about the publication status of the diagram, including
information such as the publication time, the published revision, and the publishing
user. As demonstrated in this endpoint's example response, all fields prefixed with
'granted' describe publication status.
glossaryinfo All linked dictionary items with their basic data, for example title, description, or
custom attributes.
language Desired content language, for example "de_de" or "zh_cn". If this parameter isn't
provided or an item isn't translated into this language, then the values of the
workspace default language are used as a fallback.
priv Privileges (access rights) of the current user for this diagram
subscription Settings for the notification subscription for this diagram set for the current user
The log entry isDeployed refers to a deprecated feature and is always false.
Example
{
"deleted": false,
"formats": {},
"name": "Delivery-to-payment",
"isLicensedStencilSet": true,
"namespace": "[Link]
"type": "Business Process Diagram (BPMN 2.0)",
"granted_revision": "/revision/ac5b0f5c9d61437480492e50cafb1b86",
"granted_revision_number": 3,
"granted_revision_date": "2024-10-22 10:48:28 +0200",
"granted_revision_user": "/user/567c007cc30245bd90efc4983da25fc6",
"granted_revision_user_name": "John Doe",
"parentName": "End-to-end processes",
"authorName": "John Doe",
"authorCompany": "SAP",
"created": "2024-10-22 10:19:11 +0200",
"parent": "/directory/6fb49f379f7547ccb133c2aae920e6e7",
"author": "/user/567c007cc30245bd90efc4983da25fc6",
"revision": "/revision/ac5b0f5c9d61437480492e50cafb1b86",
"rev": 3,
"comment": "",
"updated": "2024-10-22 10:48:19 +0200",
"status": {
"id": "none",
"deleted": false,
"publish": false,
"approve": false
},
"isDeployed": false,
"sri": "sri:eu:1bd018cbea0844eb96cf3d5f1e39d8f5:spm:model/
258ec2c424954e2492cce933a9985a04",
"sri_path": "sri:eu:1bd018cbea0844eb96cf3d5f1e39d8f5:spm:directory/
b0eff8603c254d7d8f5bf5a8aa4cbf10;sri:eu:1bd018cbea0844eb96cf3d5f1e39d8f5:spm:d
irectory/6fb49f379f7547ccb133c2aae920e6e7",
"sri_revision": "sri:eu:1bd018cbea0844eb96cf3d5f1e39d8f5:spm:model/
258ec2c424954e2492cce933a9985a04:revision/ac5b0f5c9d61437480492e50cafb1b86",
"description": "",
"name_en": "Delivery-to-payment"
}
GET /model/<id>/revisions
Response
Returns a diagram's list of revisions, together with each diagram revision's metadata.
Example
Example response
[
{
"rel":"info",
"href":"/model/beb279a43d1d4080808b048510e7e091/revisions",
"rep":{
"size":3
}
},
{
"rel":"revision",
"href":"/revision/3e4e1ae44c934ff79fbf9fa7f77dc078",
"rep":{
"rev":3,
"author":"/user/36821979e14b417dac355a748f896874",
"authorName":"John Doe",
"created":"2017-10-17 11:59:42 +0200",
"isDeployed":false,
"comment":"",
"authorCompany":"Signavio",
"status":"none"
}
},
{
"rel":"revision",
"href":"/revision/c3bcc71abcca4e3aa2b84e49c668bf7c",
"rep":{
"rev":2,
"author":"/user/36821979e14b417dac355a748f896874",
"authorName":"John Doe",
"created":"2017-10-17 11:59:37 +0200",
"isDeployed":false,
"comment":"",
"authorCompany":"Signavio",
"status":"none"
}
},
{
"rel":"revision",
"href":"/revision/a2a25a97821b4b09acf3617ba70e2863",
"rep":{
"rev":1,
"author":"/user/36821979e14b417dac355a748f896874",
"authorName":"John Doe",
"created":"2017-10-17 11:54:33 +0200",
"isDeployed":false,
"comment":"",
"authorCompany":"Signavio",
"status":"none"
}
}
GET /editorcreate
Remember
This operation creates an empty diagram, but it doesn't store the diagram. To store a diagram, refer to
Store a New Diagram [page 57].
Request Headers
Content-Type application/x-www-form-urlencoded
Form Parameters
stencilset The notation URI value for the stencil set. For example: [Link]
bpmn2.0#
Response
Field Length
Response Headers
Note
The Location response header value is the model ID, not a relative URL.
POST /model
Request Headers
Content-Type application/x-www-form-urlencoded
Remember
Form Parameters
parent /directory/<parent_directory_id>
id (Optional) ID of the diagram, as provided when creating a new diagram draft [page 56].
Response
Returns a JSON representation of the diagram.
Example
Example response
[{
[...]
}, {
"rel": "parents",
"href": "/model/83b98a0d07c7482a934c6140ea07b434/parents",
"rep": [{
"rel": "dir",
"href": "/directory/40d7fed893894624878a43f5e99943e7",
"rep": {
"visible": true,
"created": "2016-03-07 10:34:41 +0100",
"description": "",
"name": "End-to-end processes",
"parent": "/directory/fa9149ed892348cb884b5bea7ba5ab2b",
"deleted": false
}
},{
"rel": "dir",
[...]
}]
}, {
"rel": "info",
"href": "/model/83b98a0d07c7482a934c6140ea07b434/info",
"rep": {
PUT /model/<id>/info
Renames the model specified with the ID, or changes the model revision that is published in SAP Signavio
Process Collaboration Hub.
Request Headers
Content-Type application/x-www-form-urlencoded
Form Parameters
granted_revision /revision/<revision_id>
Response
Returns a JSON representation of the diagram with updated properties.
Potential Errors
POST /model
Request Headers
Content-Type application/x-www-form-urlencoded
Form Parameters
copy true
parent The parent folder that will contain the copy, in the format /directory/<parent_folder_id>
Response
Returns a JSON representation of the diagram with updated properties.
Move a Diagram
PUT /model/<id>
Request Headers
Content-Type application/x-www-form-urlencoded
Form Parameters
parent The new containing folder of the diagram, in the format /directory/<parent_folder_id>
Response
Returns a JSON array with the items related to this model.
PUT /model/<id>
Note
This updates the specified diagram by creating a new diagram revision. You can still retrieve and restore
older diagram revisions.
Tip
You can also use this endpoint to update a model's attributes. To do so, follow these steps:
1. Retrieve the model whose attributes you'd like to update by exporting it in JSON format [page 46].
2. In the exported JSON representation, find the attributes you'd like to alter and make your changes.
3. Upload the updated version of your diagram using this endpoint. Provide your updated JSON
representation in the json_xml form parameter.
Request Headers
Content-Type application/x-www-form-urlencoded
Form Parameters
Field Length
When you update a diagram, consider the limits applied to fields:
Response
Returns a JSON array with the items related to this model.
POST /syntaxchecker
Remember
Use the JSON representation of the BPMN 2.0 process diagram, rather than the BPMN XML, and encode it
as a form parameter value in the form-encoded request. Don't use the JSON or XML representation as the
entire request body.
Content-Type application/x-www-form-urlencoded
Form Parameters
ns [Link]
isJson true
Response
Example
Example response
{
"rel": "syntaxchecker",
"href": "/syntaxchecker",
"rep": [
{
"should": {},
"must": {
"sid-435FD0FE-A44E-4FFA-810D-A528FA0C781B": [
"BPMN_NO_TARGET"
]
},
"guidelineId": "syntax_checker"
}
]
}
Publish an Item
Publish the latest revision of one or more diagrams to SAP Signavio Process Collaboration Hub.
POST /publish
Note
To publish older revisions, send a separate request for each diagram. Refer to Rename a Diagram or
Change Its Published Revision [page 58]
Request Headers
Content-Type application/x-www-form-urlencoded
models An identifier for the model to be published in the format /model/<id>. Include one models
parameter for each model to be published. For example, publishing three models requires a request
with three parameters:
models: /model/df7b0129b7a44e91b136f75b6d393a61
models: /model/8da583419c74476aade0fb7a9ad8391b
models: /model/9357469d470c4147b37b0cc31f7b0ca
mode publish
Response
Published Revisions
All endpoints that take the ID of a model or dictionary entry as a parameter by default include information
about the latest revision (also called head revision) of the object in the response.
To retrieve information about the published revision for these endpoints, you can add the parameter
signavio-rev-mode with the value PUBLISHED to the request.
For objects not currently published, then a 403 (Forbidden) error code is returned.
Using this parameter when requesting a folder results in a limited response. Sub-folders are only included
in the response if they contain at least one published object somewhere down the line. Also, only published
objects are included in the response. If a folder contains no published objects, then the request also results in a
403 error.
The /spm/v1/meta endpoint enables you to add custom attributes for BPMN diagrams.
To add a custom attribute, dispatch a POST request to /spm/v1/meta with the following form parameters:
stencilsetBindings The namespace and the stencil for which the custom attribute is created. In this
case, the namespace is BPMN2.0 and the stencil is "Task".
The following Python script creates a new custom attribute for the task stencil of BPMN diagram:
import requests
from conf import *
from [Link] import authenticate
# user variables
stencilsetBindings = {
"namespace": "[Link]
"stencil": "Task",
"order": 48,
}
name = "A sample custom attribute"
attributeType = "MetaDataStringInfo"
isGlossaryDefinition = True
parent = "/meta"
isList = True
custom_attribute_url = base_url + "/spm/v1/meta"
auth_data = authenticate()
# set credentials, response format
cookies = {
"JSESSIONID": auth_data["jsesssion_ID"],
"LBROUTEID": auth_data["lb_route_ID"],
}
headers = {"Accept": "application/json", "x-signavio-id":
auth_data["auth_token"]}
create_custom_attribute_request = [Link](
custom_attribute_url,
cookies=cookies,
headers=headers,
data={
"stencilsetBindings": stencilsetBindings,
"name": name,
"type": attributeType,
"isGlossaryDefinition": isGlossaryDefinition,
"parent": parent,
"isList": isList,
},
)
Example response:
{
"rel": "meta",
"href": "/meta/meta-asamplecustomattribute",
"rep": {
"glossaryBindings": [],
"lineWrap": false,
"defaultValue": "",
"length": 0,
"description": "",
"isGlossaryDefinition": true,
"type": "MetaDataStringInfo",
"isList": true,
"multilanguage": false,
"stencilsetBindings": [
{
"namespace": "[Link]
"stencil": "Task",
"order": 51
}
],
"readonly": false,
"name": "A sample custom attribute",
"id": "meta-asamplecustomattribute"
5.5 Search
You can configure a search in various ways, such as by limiting the result size and restricting the set of content
types to be searched.
Prerequisites
Before using the API, you must obtain an authentication token. Refer to Authentication [page 6] in this guide
for help on getting the token.
Once you have the token, include it in all requests to the Search API by adding an x-signavio-id request
header with the token as the header's value.
[Link]
• The base URL is region-specific. Refer to the section Base URL [page 65] to find the one corresponding to
your region.
• The search term is the text used for the search.
This is all that's required to perform a basic search. Refer to the API Reference [page 68] or the API
Documentation on the SAP Business Accelerator Hub for a comprehensive description of request information.
You can configure the search further by adding query parameters to the request. Configuration options include:
Refer to the API Reference [page 68] or the API Documentation on the SAP Business Accelerator Hub for
more information about these parameters.
A successful response returns a JSON array containing folder and model object representations.
In the response object with the property rel="search", the totalNrOfResults property gives the total
number of results. When there are more than 250 results, the API limits the response array to the first
250 results. You can use the offset request parameter to fetch subsequent results, for example by setting
offset=250 to return the second ‘page’ of results.
Refer to the API Reference [page 68] or the API Documentation on the SAP Business Accelerator Hub for a
comprehensive description of response information, including response codes, the data schema, and example
values.
Base URL
API endpoints are relative to the base URL, which is specific to your region. The available base URLs are:
Australia [Link]
Canada [Link]
EU [Link]
Japan [Link]
Singapore [Link]
USA [Link]
Example
The following Python script searches for the term calculate and returns the first 10 results:
Source Code
import requests
from conf import *
# set search parameters
query = 'calculate'
limit = 10
offset = 0
types = (
# remove items to filter by content type
'MODEL',
'MODEL_REVISION',
'SHAPE',
'FILE',
'FILE_REVISION',
'DIR',
'COMMENT'
Output Code
[
{
"rel":"mod",
"href":"/model/242f5bed25024ebe8c96a72b956d5be0",
"rep":{
"granted_revision":"",
"parent":"/directory/889c590193d54db18fe9b0fbc0470bba",
"rev":1,
"granted_revision_user":"",
"created":"2016-08-19 14:33:56 +0200",
"author":"/user/f40100476cfb4b058b7454cb1db1a83a",
"isLicensedStencilSet":true,
"description":"",
"granted_revision_date":"",
"type":"Entscheidungsdiagramm (DMN 1.1)",
"authorCompany":"Signavio",
"revision":"/revision/d7d28f5804f343f995e1c9d406829ce4",
"parentName":"Prozessbeispiele",
"deleted":false,
"authorName":"John Doe",
"numberOfNewComments":0,
"isDeployed":false,
"name":"Calculate Discount",
"namespace":"[Link]
"comment":"",
"fields":[
"MODEL",
"SHAPE",
"Score:4.5136113"
],
"updated":"2016-08-19 14:33:56 +0200",
"status":{
"deleted":false,
"publish":false,
"id":"none"
}
}
]
}
}
]
Related Information
GET /search
This endpoint is relative to {baseUrl}/spm/v1. URLs are explained further in URLs and Resource
Representation [page 9].
Request Headers
Cookie JSESSIONID=(jsessionid);LBROUTEID=(lbrouteid)
Accept application/json
Content-Type application/x-www-form-urlencoded
Query Parameters
types List of content types the search should include, from: MODEL, MODEL_REVISION, SHAPE, FILE,
FILE_REVISION, DIR and COMMENT.
Response
• Status Code: 200 OK
• Content-Type: application/json
Returns a JSON array containing folder and model object representations. In the response object with
rel="search", the totalNrOfResults property gives the total number of results. When there are more
than 250 results, the API limits the response array to the first 250 results. You can use the offset=250
request parameter to fetch the second 'page' of results.
Example
Example response
[
{
"rel":"mod",
"href":"/model/242f5bed25024ebe8c96a72b956d5be0",
"rep":{
"granted_revision":"",
"parent":"/directory/889c590193d54db18fe9b0fbc0470bba",
"rev":1,
]
}
}
]
Use the /meta endpoint to manage custom attributes for diagrams and dictionary categories.
Note
The terms 'dictionary' and 'glossary' can be used interchangeably. In this documentation, the term
'dictionary' is used, while the API endpoints use the term 'glossary'.
To learn more, refer to Creating Custom Attributes for a BPMN Diagram [page 62]
To learn more, refer to Creating Custom Attributes for Dictionary Categories [page 33].
To locate the technical ID of your custom attribute for processes or objects, navigate to SAP Signavio Process
Manager Setup Define notations/attributes Custom attributes.
To retrieve a list of all custom attribute definitions, dispatch a GET request to /spm/v1/meta .
Example
An example response.
{
"rel":"meta",
"href":"/meta/meta-cause",
"rep":{
],
"readonly":false,
"name":"Cause",
"id":"meta-cause"
}
},
{
"rel":"meta",
"href":"/meta/meta-customstart",
"rep":{
"multilanguage":false,
"glossaryBindings":[
],
"stencilsetBindings":[
{
"namespace":"[Link]
"stencil":"StartNoneEvent",
"order":1
}
],
"readonly":false,
"defaultValue":"",
"name":"customStart",
"id":"meta-customstart",
"isGlossaryDefinition":true,
"category":"",
"type":"MetaDataGlossaryLink",
"isList":false
}
},
{
"rel":"meta",
"href":"/meta/meta-customstartlist",
"rep":{
"multilanguage":false,
"glossaryBindings":[
],
"stencilsetBindings":[
{
"namespace":"[Link]
"stencil":"StartNoneEvent",
"order":2
}
],
"readonly":false,
"defaultValue":"",
"name":"customStartList",
"description":"",
"id":"meta-customstartlist",
"isGlossaryDefinition":true,
Note
This feature is only available in the Enterprise Plus Edition of SAP Signavio Process Manager.
In SAP Signavio Process Manager you can define custom attributes for use in models and the dictionary - these
are referred to as custom data types. You can also define custom data types in the dictionary, called central
data types. Such data types can be used in Decision Model & Notation (DMN 1.2) diagrams for modeling
complex business decisions. Custom data types also provide data lookup from external sources.
To define custom data types in the dictionary inside a dictionary category, a special setting must be activated.
Refer to Dictionary [page 11] for more information.
Change your predefined dictionary category by additionally adding the following request parameter when
creating or updating a category:
decisioninput=true
The dictionary category’s JSON object representation now includes these new properties:
{
"decisionDataObjectKey": "meta-metadatadataobject",
"decisionInput": true,
[...]
}
To create a custom dictionary type, send a POST /spm/v1/glossary request with type-specific content
described in the following section and that endpoint's body parameters described in the SAP Business
Accelerator Hub.
Boolean types only allow a property to be either true or false, and are typically represented as a checkbox.
type: boolean
Example result:
{
"title":"MyBooleanType",
"category":"/glossarycategory/657e2a77bbfe4abb9dae463aab07d99d",
[...]
"metaDataValues":{
"meta-metadatadataobject":{
"type":"boolean"
}
}
}
String
type: string
Example result:
{
"title":"MyStringType",
"category":"/glossarycategory/657e2a77bbfe4abb9dae463aab07d99d",
[...]
"metaDataValues":{
"meta-metadatadataobject":{
"type":"string",
"ignoreCase":true
}
}
}
Number
The number type allows the user to define a double-precision decimal number, and set a minimum and
maximum value as well as a unit for it.
unit: Optional. The quantity the number represents (String), one of:
• percentage
• weight
• length
• temperature
• currency
weight: Optional. If unit is set to weight this parameter defines the weight unit (String), one of:
• mg: milligram
• g: gram
• kg: kilogram
• oz: ounce
• lbs: pound
• t: ton
length: Optional. If unit is set to length this parameter defines the length unit (String), one of:
• mm: millimeter
• cm: centimeter
• m: meter
• km: kilometer
• in: inch
• ft: foot
• yd: yard
temperature: Optional. If unit is set to temperature this parameter defines the temperature unit (String),
one of:
• c: Celsius
• f: Fahrenheit
• k: Kelvin
currency: Optional. If unit is set to currency this parameter defines the currency code (String), one of:
EUR, USD, AUD, BGN, BRL, CAD, CHF, CLP, CZK, DKK, GBP, HUF, MXN, NZD, PLN, RON, RUB, SEK,
SGD, ZAR
Example result:
{
"title": "MyNumberType",
"category": "/glossarycategory/657e2a77bbfe4abb9dae463aab07d99d",
[...]
{
Enumeration
Enumeration types allow a value to be one of a given list of values. They're typically represented as a drop-down
menu. The list of permitted values is provided at creation or modification time.
type: enumeration
enumItems: Zero or more items, provided in a JSON array. Each item is a JSON Object and contains and id
and a title.
Example result:
{
"title":"MyEnumType",
"category":"/glossarycategory/657e2a77bbfe4abb9dae463aab07d99d",
[...]
"metaDataValues":{
"meta-metadatadataobject":{
"type":"enumeration",
"enumItems":[
{
"id":"0",
"title":"A"
},
{
"id":"1",
"title":"B"
},
{
"id":"2",
"title":"C"
}
]
}
}
}
Date types allow the user to define data types that are correlated to dates and/or times.
type: date
Example result:
{
"title":"MyDate",
"category":"/glossarycategory/657e2a77bbfe4abb9dae463aab07d99d",
[...]
"metaDataValues":{
"meta-metadatadataobject":{
"type":"date",
"datetype":"time"
}
}
}
Hierarchy
Hierarchy types allow values to be one of a list of defined values. They're similar to enumerations, but define
a hierarchy of values instead of a flat list. Hierarchies are typically represented by a tree control in web
applications. The list of permitted values is provided at creation or modification time.
type: hierarchy
hierarchyItems: Zero or more in a JSON array. Each item is a JSON object and contains:
• nodeid: The identifier of that item (String). Node IDs should be unique within the entire
hierarchy.
• title: A simple string that represents this item (String).
• children Optional. JSON array that contains the sub-items as JSON objects (the
structure of sub-items is the same as the parent items).
Example result:
{
"title":"MyHierarchy",
"category":"/glossarycategory/657e2a77bbfe4abb9dae463aab07d99d",
[...]
"metaDataValues": {
"meta-metadatadataobject": {
"type": "hierarchy",
"hierarchyItems": [
{
"nodeid": "1",
"title": "A",
Complex
Complex types are record types composed of various other types. A record can contain a person’s address,
composed of their name (String), age (Number), gender, or even nested data like an address type: the main
record contains a composite field for street name (String) and street number (Number).
type: complex
relationType "glossary"
isList Optional. Defines if this complex data type contains a list of these objects or
only one (Boolean). Default is false.
gitemTitle Only in response. Current title of the linked dictionary entry in correct
translation.
invalid Only in response. true if the referenced dictionary entry was found.
Example request:
{
"title":"MyComplex Type",
"category":"/glossarycategory/657e2a77bbfe4abb9dae463aab07d99d",
[...]
"metaDataValues":{
Example result:
{
"title":"MyComplex Type",
"category":"/glossarycategory/657e2a77bbfe4abb9dae463aab07d99d",
"metaDataValues":{
"meta-metadatadataobject":{
"type":"complex",
"relations":[
{
"title":"mySubAttribute1",
"value":"/glossary/28faf8576c9f4555b67e5fa8c5a12f75",
"gitemTitle":"MyStringType",
"relationType":"glossary",
"relationId":0,
"invalid":false
},
{
"title":"mySubAttribute2",
"value":"/glossary/9b466fdcee7f4d58a71326af331fb72d",
"gitemTitle":"MyNumberType",
"relationType":"glossary",
"relationId":1,
"invalid":false
}
]
}
}
}
No Data Type
Dictionary entries can be created without a data definition. This applies to dictionary entries in a category
enabled for data modeling that has no specific data type.
type: none
{
"title":"MyStringType",
"category":"/glossarycategory/657e2a77bbfe4abb9dae463aab07d99d",
[...]
"metaDataValues":{
"meta-metadatadataobject":{
"type":"none"
}
}
}
Usage of SAP Signavio Process Manager APIs is monitored to ensure that our services are available fairly and
reliably
To ensure a consistent level of service and prevent any disruptions, clients may access the API according to the
following policy:
Aspect Limits
Write: 1
Find help with problems when using SAP Signavio Process Manager APIs.
Common Errors
Tip
It is not guaranteed that the REST API will return HTTP 4xx (client error) status responses if you use the
wrong request URL, request method, or request Content-Type header value. If you encounter unexpected
errors, verify the request information.
Status Code 403, ACCESS VIOLATION or similar A privilege is needed for the operation, adjust your workspa-
ce's user management. The user needs to be among the
workspace's administrators to perform the operation.
Status Code 423 This error can have the following causes:
Note
In this case, your user is locked. Please create a support
request to unlock your account.
Status Code 500, [Link] The provided parameters cannot be resolved to a valid JSON
document. Its structure may be faulty and important keys
and values may be missing.
Status Code 500, [Link] Redirect to dictionary browser page failed. Make sure you
set the Accept request header value to application/
json.
Status Code 500, [Link] Redirect to dictionary browser page failed. Make sure you
set the Accept request header value to application/
json.
Hyperlinks
Some links are classified by an icon and/or a mouseover text. These links provide additional information.
About the icons:
• Links with the icon : You are entering a Web site that is not hosted by SAP. By using such links, you agree (unless expressly stated otherwise in your
agreements with SAP) to this:
• The content of the linked-to site is not SAP documentation. You may not infer any product claims against SAP based on this information.
• SAP does not agree or disagree with the content on the linked-to site, nor does SAP warrant the availability and correctness. SAP shall not be liable for any
damages caused by the use of such content unless damages have been caused by SAP's gross negligence or willful misconduct.
• Links with the icon : You are leaving the documentation for that particular SAP product or service and are entering an SAP-hosted Web site. By using
such links, you agree that (unless expressly stated otherwise in your agreements with SAP) you may not infer any product claims against SAP based on this
information.
Example Code
Any software coding and/or code snippets are examples. They are not for productive use. The example code is only intended to better explain and visualize the syntax
and phrasing rules. SAP does not warrant the correctness and completeness of the example code. SAP shall not be liable for errors or damages caused by the use of
example code unless damages have been caused by SAP's gross negligence or willful misconduct.
Bias-Free Language
SAP supports a culture of diversity and inclusion. Whenever possible, we use unbiased language in our documentation to refer to people of all cultures, ethnicities,
genders, and abilities.
SAP and other SAP products and services mentioned herein as well as
their respective logos are trademarks or registered trademarks of SAP
SE (or an SAP affiliate company) in Germany and other countries. All
other product and service names mentioned are the trademarks of their
respective companies.