com.atlassian.confluence.content.render.xhtml.migration.exceptions.UnknownMacroMigrationException: The macro 'next_previous_links' is unknown.

Governance REST API

The Governance REST API is an API that is supported by WSO2 Governance Registry. The Governance REST API uses the GET, POST, PUT, and DELETE operations of the well-defined HTTP protocol to perform CRUD operations on the governance registry. You can use any REST client to send API requests, such as Google Chrome's Advanced REST client.


At the moment REST API only supports configurable governance artifacts and has limited support for Content artifacts such as WSDL and Policy.


The Governance REST API is secured with Basic Auth access token. You can invoke the rest API with Basic Auth header as follows:
Authorization: Basic YWRtaW46YWRtaW4= where the format is Authorization: Basic {base64encoded(username:password)} 

You must send valid HTTP BasicAuth credentials when invoking the REST API as shown below.

Following sections include information on sample requests and complete URI formats used when invoking the REST APIs after generating the access token:

Assets

Following are the RSET API functions that are related to assets.

Get a list of available artifact types

Syntax  GET /governance/types/
ExampleGET https://localhost:9443/governance/types/
Sample cURL Commandcurl -X GET -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Cache-Control: no-cache" "https://localhost:9443/governance/types/" -i -k

Get list of assets of certain type

Syntax  
  • GET /governance/<asset_short_name_s>
  • GET /governance/<asset_short_name_s>?query 

WSO2 G-Reg does not support date range searches in Governance REST API.

QueryDescription
xyz

Looks for artifacts with the name "xyz".

  • You can give only the value like above or give the field name and the value in a key-value pair for fields of the Overview table in the asset RXT file. (e.g. name=xyz)
  • However, to find assets with a specific value for a field in a table other than the Overview table, the search query should be:
    encode(table_name:field_name)=encode(value)
    For example, if the table is docLinks, the field is documentType and the valueis 'the rest1'. The final URI query parameter should be: docLinks%3AdocumentType=the%20rest1
  • If you have spaces or any special characters such as underscore or slash in the key of the key-value pair of your query URL, you need to encode it using a URL encoder.


xyz&version=1.3.5 Looks for artifacts with the name 'xyz' and version '1.3.5'.
tags=abc Searches for artifacts with the tag 'abc'.
lcState=development&lcName=ServiceLifeCycle Searches for artifacts with an associated life cycle named 'ServiceLifeCycle' with the state 'development'
country=usa Looks for all the artifacts having attribute country with value 'usa'. This internally handles whether 'country' is an RXT attribute or a property.
version=1.3.5&mediaType=application/vnd.wso2-soap-service+xml Searches for SOAP services of version '1.3.5'.


Example(s)
  • GET https://localhost:9443//governance/restservices
  • GET https://localhost:9443//governance/restservices?name=restservice1 
  • GET https://localhost:9443//governance/ restservices?name=restservice1&version=1.0.0
  • GET https://localhost:9443/governance/restservices?docLinks%3AdocumentComment=rest1%20is%20a%20simple%20API
Sample cURL Command(s)
  • curl -X GET -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Cache-Control: no-cache" "https://localhost:9443/governance/restservices"
    -i
  • curl -X GET -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Cache-Control: no-cache" "https://localhost:9443/governance/restservices?name=WarrantyClaimService" -i -k
  • curl -X GET -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Cache-Control: no-cache" "https://localhost:9443/governance/restservices?name=WarrantyClaimService&version=1.0.0" -i -k

Get an asset of a certain type

Syntax  GET /governance/<asset_short_name_s>/UUID 
ExampleGET https://localhost:9443/ /governance/restservices/3245se24553 
Sample cURL Command

curl -X GET -H "Cache-Control: no-cache" "https://localhost:9443/governance/restservices/cae93ba9-9543-43be-9f30-bb96cec3c443" -i -k

Create a new asset 

Syntax  

POST /governance/<asset_short_name_s> <payload>

Here the payload should be in JSON format. Following are the required attributes.

  • name
  • version
  • type

Payload format is as follows:

{ name: "Artifact Name", type: "Artifact Type", version: “Version Number", Attribute-N: “Attribute-N” value } 
Example
POST https://localhost:9443 /governance/restservices { name: "TestRESTService", type: "restservice", context: "/test", version: "1.0.0" }
Sample cURL Command
curl -X POST -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{
  "name":"TestRESTService",
  "type":"restservice",
  "context":"/test",
  "version":"1.0.0"
}' "https://localhost:9443/governance/restservices" -i -k
Response

If the artifact creation is successful, the server will return HTTP 200 code along with the “location” header pointing to the newly created artifact. If there is an issue creating a new artifact, it will return an appropriate error code.  

For example, the above example may return the following:

HTTP 200

Location: https://localhost:9443/governance/restservices/3ec1dcd9-66d8-41da-a0d2-ec171df64cc3

Update an existing asset

Syntax  

PUT /governance/<asset_short_name_s>/uuid <payload>

Here the payload should be in JSON format. Following are the required attributes.

  • name
  • version
  • type

Payload format is as follows: 

{ name: "Artifact Name", type: "Artifact Type", version: “Version Number", Attribute-N: “Attribute-N” value }
Example
PUT https://localhost:9443 /governance/restservices/324dsdwa535 { name: "TestRESTService", type: "restservice", context: "/test-new", version: "1.0.0", }
Sample cURL Command
curl -X PUT -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{
  "name":"TestRESTService",
  "type":"restservice",
  "context":"/test",
  "version":"1.0.0",
  "description": "Discription added by Rest API"
}' "https://localhost:9443/governance/restservices/97bdb275-2b09-4744-b29f-125cf2c8e387" -i -k
ResponseIf the artifact creation is successful, the server will return HTTP 201 code along with the “location” header pointing to the newly created artifact. If there is an issue creating the new artifact, it will return an appropriate error code.

Delete an asset

Syntax  DELETE /governance/<asset_short_name_s>/UUID
Example

DELETE https://localhost:9443/ /governance/restservices/3245se24553

Sample cURL Commandcurl -X DELETE -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Cache-Control: no-cache" "https://localhost:9443/governance/restservices/97bdb275-2b09-4744-b29f-125cf2c8e387" -i -k

Get lifecycle state of an asset

Syntax  
  • GET /governance/<RXT_short_name_s>/uuid/states
  • GET /governance/<RXT_short_name_s>/uuid/states?lc=LCName 
Example(s)
  • GET https://localhost:9443/ /governance/restservices/44dadw4/states
  • GET https://localhost:9443/ /governance/restservices/44dadw4/states?lc=ServiceLifeCycle
Sample cURL Command(s)
  • curl -X GET -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Cache-Control: no-cache" "https://localhost:9443/governance/restservices/cae93ba9-9543-43be-9f30-bb96cec3c443/states" -i -k
  • curl -X GET -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Cache-Control: no-cache" "https://localhost:9443/governance/restservices/cae93ba9-9543-43be-9f30-bb96cec3c443/states?lc=ServiceLifeCycle" -i -k

Update lifecycle state of an asset 

Syntax  

PUT  /governance/<RXT_short_name_s>/uuid/states  <payload>

The payload format is as follows:

{
lc: "Lifecycle name",
action: "Promote",
check_item_N : "value_N",
}
Example
PUT https://localhost:9443/governance/restservices/cea0c482-4280-4837-8126-3fd97cdc0a41/states
{
lc: "ServiceLifeCycle",
action: "Promote",
item_0 : "true",
item_1 : "true",
item_2 : "true"
}
Sample cURL Command
curl -X PUT -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{
 "lc":"ServiceLifeCycle",
 "action":"Promote",
 "item_0":"true",
 "item_1":"true",
 "item_2":"true"
}' "https://localhost:9443/governance/restservices/cae93ba9-9543-43be-9f30-bb96cec3c443/states" -i -k


Endpoints

Following are the RSET API functions that are related to assets.

Get all endpoints

Syntax  GET /governance/endpoints
ExampleGET https://localhost:9443/governance/endpoints
Sample cURL Commandcurl -X GET -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Cache-Control: no-cache"   "https://localhost:9443/governance/endpoints" -i -k

Get an individual endpoint

Syntax  GET  /governance/endpoints/UUID
ExampleGET https://localhost:9443/governance/endpoints/c7d6ed67-f2f5-409f-97f2-ddff9b6bc07b
Sample cURL Commandcurl -X GET -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Cache-Control: no-cache" "https://localhost:9443/governance/endpoints/c413e38b-16fa-4c49-ac03-927f878e8e59" -i -k

Create new endpoint

Syntax  

Syntax 1:   POST /governance/endpoints <payload>  

It is also possible to create an endpoint and associate it with other types of artifacts such as REST services or SOAP services as presented in Syntax 2 below.

Syntax 2:

  • POST /governance/endpoints/restservices/<UUID> <payload> 
  • POST /governance/endpoints/restservices?Query <payload> 

Here the payload should be in JSON format.Following are the required attributes:

  • name
  • version
  • type

Payload format is as follows:


{name: "endpoint-1",
type: "endpoint",
version: "1.0.0",
address: "https://localhost:9443",
environment: "QA"
}
Example(s)
Example 1
POST https://localhost:9443/governance/endpoints/ { name: "endpoint-1", type: "endpoint", version: "1.0.0", address: "https://localhost:9443", environment: "QA" }
Example 2
POST https://localhost:9443/governance/endpoints/restservices/cea0c482-4280-4837-8126-3fd97cdc0a41
{
name: "endpoint-2",
type: "endpoint",
version: "1.0.0",
address: "https://localhost:9443",
environment: "QA"
}
Example 3
POST https://localhost:9443/governance/endpoints/restservices?name=TestRESTService2&version=1.0.0  
{
name: "endpoint-3",
type: "endpoint",
version: "1.0.0",
address: "https://localhost:9443",
environment: "QA"
}
Sample cURL Command(s)
Sample cURL Command 1
curl -X POST -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{ "name":"endpoint-1", "type":"endpoint", "version":"1.0.0", "address":"https://localhost:9443", "environment":"QA" }
Sample cURL Command 2
curl -X POST -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{ "name":"endpoint-2", "type":"endpoint", "version":"1.0.0", "address":"https://localhost:9443", "environment":"QA" }' "https://localhost:9443/governance/endpoints/restservices/cae93ba9-9543-43be-9f30-bb96cec3c443" -i -k
Sample cURL Command 3
curl -X POST -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{ "name":"endpoint-2", "type":"endpoint", "version":"1.0.0", "address":"https://localhost:9443", "environment":"QA" }' "https://localhost:9443/governance/endpoints/restservices?name=TestRESTService4" -i -k
ResponseIf the artifact creation is successful, the server will return HTTP 201 code along with the “location” header pointing to the newly created artifact. If there is an issue creating the new artifact, it will return an appropriate error code.  

Delete an endpoint

Syntax  DELETE /governance/endpoints/uuid 
ExampleDELETE https://localhost:9443/governance/endpoints/73cc7077-d723-44a5-98e5-945795e518e8
Sample cURL Command

curl -X DELETE -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Cache-Control: no-cache" "https://localhost:9443/governance/endpoints/6652d672-d7f5-4a13-9d6f-9a6eb85675a5"-i -k

Get an endpoint status

Syntax  GET /governance/endpoints/<uuid>/states
ExampleGET https://localhost:9443/governance/endpoints/c7d6ed67-f2f5-409f-97f2-ddff9b6bc07b/states 
Sample cURL Command

curl -X GET -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Cache-Control: no-cache" "https://localhost:9443/governance/endpoints/6652d672-d7f5-4a13-9d6f-9a6eb85675a5/states" -i -k

Activate an endpoint

Syntax  POST  /governance/endpoints/activate/<uuid>
ExamplePOST https://localhost:9443/governance/endpoints/activate/c7d6ed67-f2f5-409f-97f2-ddff9b6bc07b  
Sample cURL Command

curl -X POST -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Cache-Control: no-cache" "https://localhost:9443/governance/endpoints/activate/6652d672-d7f5-4a13-9d6f-9a6eb85675a5"  -i -k

Deactivate an endpoint

Syntax  POST /governance/endpoints/deactivate/<uuid>
ExamplePOST https://localhost:9443/governance/endpoints/deactivate/c7d6ed67-f2f5-409f-97f2-ddff9b6bc07b 
Sample cURL Command

curl -X GET -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Cache-Control: no-cache" "https://localhost:9443/governance/endpoints/deactivate/6652d672-d7f5-4a13-9d6f-9a6eb85675a5" -i -k

Get an endpoint of an artifact instance 

Syntax  GET  /governance/<asset_short_name_s>/<id>/endpoints
ExampleGET https://localhost:9443/governance/restservices/cea0c482-4280-4837-8126-3fd97cdc0a41/endpoints
Sample cURL Command

curl -X GET -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Cache-Control: no-cache" "https://localhost:9443/governance/restservices/cae93ba9-9543-43be-9f30-bb96cec3c443/endpoints" -i -k

com.atlassian.confluence.content.render.xhtml.migration.exceptions.UnknownMacroMigrationException: The macro 'next_previous_links2' is unknown.