Application APIs
This section includes all application APIs with examples.
- Creating category for applications
- Creating an application
- Importing an application from GitHub repository
- Pushing an application to GitHub
- Duplicating an application
- Editing an application
- Deploying an application
- Publishing an application
- Retrieving application template
Creating category for applications
curl -k -X POST \
'https://${TSA_HOSTNAME}/cam/composer/api/v1/AppCategories?ace_orgGuid=${MCM_TEAM}&tenantId=${TSA_TENANT_ID}' \
-H 'Authorization: Bearer ${TSA_BEARER_TOKEN}' \
-H 'Content-Type: application/json' \
-H 'cache-control: no-cache' \
-d {"name": "AppCategorySample"}
Result
{
{
"name": "AppCategorySample",
"id": "5fc9df7661b3e8001b7c2511",
"tenantId": "83d50ee1-849b-4b33-bb25-9cb05f9bd87c"
}
Creating an application
curl -k -X POST \
'https://${TSA_HOSTNAME}/cam/composer/api/v1/AppModel/createApp?ace_orgGuid=${MCM_TEAM}&cloudOE_spaceGuid=${NAMESPACE}&tenantId=${TSA_TENANT_ID}' \
-H 'Authorization: Bearer ${TSA_BEARER_TOKEN}' \
-H 'Content-Type: application/json' \
-H 'cache-control: no-cache' \
-d @application_create.json
application_create.json
{
"data": {
"name": "ApplicationSample",
"namespaceId": "abcdef123456",
"spec": "apiVersion: app.k8s.io/v1beta1\nkind: Application\nmetadata:\n labels:\n app: nginx-app-details\n name: nginx-app-3\n namespace: ns-sub-1\nspec:\n componentKinds:\n - group: app.ibm.com\n kind: Subscription\n - group: core.hybridapp.io\n kind: Deployable\n selector:\n matchLabels:\n app: nginx-app-details\nstatus: {}",
"description": "",
"categoryId": "5fc9df7661b3e8001b7c2511",
"imagepath": "serviceicon_1.svg"
}
}
Response:
{
"data": {
"name": "ApplicationSample",
"spec": "apiVersion: app.k8s.io/v1beta1\nkind: Application\nmetadata:\n labels:\n app: nginx-app-details\n name: nginx-app-3\n namespace: ns-sub-1\nspec:\n componentKinds:\n - group: app.ibm.com\n kind: Subscription\n - group: core.hybridapp.io\n kind: Deployable\n selector:\n matchLabels:\n app: nginx-app-details\nstatus: {}",
"status": "Draft",
"description": "",
"longdescription": "",
"namespaceId": "abcdef123456",
"creationTime": "2020-12-04T08:06:00.395Z",
"lastUpdated": "2020-12-04T08:06:00.395Z",
"tenantId": "83d50ee1-849b-4b33-bb25-9cb05f9bd87c",
"categoryId": "5fc9df7661b3e8001b7c2511",
"inputparameters": [],
"imagepath": "serviceicon_1.svg",
"id": "5fc9ede861b3e8001b7c2515"
}
}
Importing an application from GitHub repository
This API call imports an application from the GitHub repository.
curl -k -X POST \
'https://${TSA_HOSTNAME}/cam/composer/api/v1/AppModel/pullAppModelFromGIT?ace_orgGuid=${MCM_TEAM}&cloudOE_spaceGuid=${NAMESPACE}&tenantId=${TSA_TENANT_ID}' \
-H 'Authorization: Bearer ${TSA_BEARER_TOKEN}' \
-H 'Content-Type: application/json' \
-H 'cache-control: no-cache' \
-d @application_import.json
application_import.json
{
"app_details": {
"name": "Application",
"categoryId": "5fc9df7661b3e8001b7c2511",
"description": "ImportFromGitHub",
"git_details": {
"git_type": "github",
"git_token": <github_token>,
"file_path": "mysubdir/application.yaml",
"git_ref": "master",
"git_url": "http://mygithub/user/reponame"
}
}
}
Response:
{
"pullAppModelFromGITResponse": {
"statusCode": 200,
"status": "success",
"message": "Application imported successfully"
}
}
Pushing an application to GitHub
This API pushes an application to GitHub.
curl -k -X POST \
'https://${TSA_HOSTNAME}/cam/composer/api/v1/AppModel/${APP_ID}/pushAppToGit?ace_orgGuid=${MCM_TEAM}&tenantId=${TSA_TENANT_ID}' \
-H 'Authorization: Bearer ${TSA_BEARER_TOKEN}' \
-H 'Content-Type: application/json' \
-H 'cache-control: no-cache' \
-d @push_application.json
push_application.json
{
"git_details": {
"git_type": "github",
"git_token": <github_token>,
"file_path": "mysubdir/application.yaml",
"git_ref": "master",
"git_url": "http://mygithub/user/reponame"
},
"commit_details": {
"commit_message": "Sample file to push an Application"
}
}
Response:
{
"pushAppToGITResponse": {
"statusCode": 200,
"status": "success",
"message": "App pushed successfully"
}
}
Duplicating an application
curl -k -X POST \
'https://${TSA_HOSTNAME}/cam/composer/api/v1/AppModel/${APP_ID}/duplicateApp?ace_orgGuid=${MCM_TEAM}&cloudOE_spaceGuid=${NAMESPACE}&tenantId=${TSA_TENANT_ID}' \
-H 'Authorization: Bearer ${TSA_BEARER_TOKEN}' \
-H 'Content-Type: application/json' \
-H 'cache-control: no-cache' \
-d {"app_name": <Duplicate_APP_Name>}
Response:
{
"data": {
"name": <Duplicate_APP_Name>,
"spec": "apiVersion: app.k8s.io/v1beta1\nkind: Application\nmetadata:\n labels:\n app: nginx-app-details\n name: nginx-app-3\n namespace: ns-sub-1\nspec:\n componentKinds:\n - group: app.ibm.com\n kind: Subscription\n - group: core.hybridapp.io\n kind: Deployable\n selector:\n matchLabels:\n app: nginx-app-details\nstatus: {}",
"status": "Draft",
"description": "",
"longdescription": "",
"namespaceId": "abcdef123456",
"creationTime": "2020-12-04T08:06:00.395Z",
"lastUpdated": "2020-12-04T08:06:00.395Z",
"tenantId": "83d50ee1-849b-4b33-bb25-9cb05f9bd87c",
"categoryId": "5fc9df7661b3e8001b7c2511",
"inputparameters": [],
"imagepath": "serviceicon_1.svg",
"id": "5fc9ede861b3e8001b7c2515"
}
}
Editing an application
This API edits an application. Published applications cannot be edited.
curl -k -X POST \
'https://${TSA_HOSTNAME}/cam/composer/api/v1/AppModel/${APP_ID}/edit?ace_orgGuid=${MCM_TEAM}&cloudOE_spaceGuid=${NAMESPACE}&tenantId=${TSA_TENANT_ID}' \
-H 'Authorization: Bearer ${TSA_BEARER_TOKEN}' \
-H 'Content-Type: application/json' \
-H 'cache-control: no-cache' \
-d @application_edit.json
application_edit.json
{
"data": {
"name": "ApplicationSample",
"spec": "apiVersion: app.k8s.io/v1beta1\nkind: Application\nmetadata:\n labels:\n app: nginx-app-details\n name: nginx-app-3\n namespace: ns-sub-1\nspec:\n componentKinds:\n - group: app.ibm.com\n kind: Subscription\n - group: core.hybridapp.io\n kind: Deployable\n selector:\n matchLabels:\n app: ${matchLabel}\nstatus: {}",
"status": "Draft",
"description": "",
"longdescription": "",
"namespaceId": "",
"creationTime": "2020-12-04T08:06:00.395Z",
"lastUpdated": "2020-12-04T08:06:00.395Z",
"tenantId": "83d50ee1-849b-4b33-bb25-9cb05f9bd87c",
"categoryId": "5fc9df7661b3e8001b7c2511",
"inputparameters": [
{
"name": "matchLabel",
"label": "matchLable",
"customtype": "string",
"type": "string",
"immutable": false,
"hidden": false,
"required": false,
"secured": false,
"description": "",
"isDynamic": false,
"permission": "Read-Write",
"default": "nginx-app-details"
}
],
"imagepath": "serviceicon_1.svg",
"id": <APP_ID>
}
}
Response
{
"data": {
"name": "ApplicationSample",
"spec": "apiVersion: app.k8s.io/v1beta1\nkind: Application\nmetadata:\n labels:\n app: nginx-app-details\n name: nginx-app-3\n namespace: ns-sub-1\nspec:\n componentKinds:\n - group: app.ibm.com\n kind: Subscription\n - group: core.hybridapp.io\n kind: Deployable\n selector:\n matchLabels:\n app: ${matchLabel}\nstatus: {}",
"status": "Draft",
"description": "",
"longdescription": "",
"namespaceId": "",
"creationTime": "2020-12-04T08:06:00.395Z",
"lastUpdated": "2020-12-04T08:30:23.117Z",
"tenantId": "83d50ee1-849b-4b33-bb25-9cb05f9bd87c",
"categoryId": "5fc9df7661b3e8001b7c2511",
"inputparameters": [
{
"name": "matchLabel",
"label": "matchLable",
"customtype": "string",
"type": "string",
"immutable": false,
"hidden": false,
"required": false,
"secured": false,
"description": "",
"isDynamic": false,
"permission": "Read-Write",
"default": "nginx-app-details"
}
],
"imagepath": "serviceicon_1.svg",
"id": <APP_ID>
}
}
Deploying an application
This API deploys a published application.
curl -k -X POST \
'https://${TSA_HOSTNAME}/cam/composer/api/v1/AppModel/${APP_ID}/deploy?ace_orgGuid=${MCM_TEAM}&cloudOE_spaceGuid=${NAMESPACE}&tenantId=${TSA_TENANT_ID}' \
-H 'Authorization: Bearer ${TSA_BEARER_TOKEN}' \
-H 'Content-Type: application/json' \
-H 'cache-control: no-cache' \
-d @application_deploy.json
application_deploy.json
{
"name": "nginx-app-3",
"parameters": [
{
"name": "matchLabel",
"value": "nginx-app-details"
}
]
}
Response:
{
"instance": {
"name": "nginx-app-3",
"status": "Submitted",
"creationTime": "2020-12-04T08:38:17.933Z",
"lastUpdated": "2020-12-04T08:38:18.154Z",
"stack_id": "5fc9f57af86820001b650685",
"action": "CREATE",
"logs": "Request queued",
"namespaceId": "abcdef123456",
"tenantId": "83d50ee1-849b-4b33-bb25-9cb05f9bd87c",
"mode": "test",
"id": "5fc9f57961b3e8001b7c2517",
"appModelId": <APP_ID>
}
}
Publishing an application
This API publishes an application.
curl -k -X POST \
'https://${TSA_HOSTNAME}/cam/composer/api/v1/AppModel/${APP_ID}/publish?ace_orgGuid=${MCM_TEAM}&tenantId=${TSA_TENANT_ID}' \
-H 'Authorization: Bearer ${TSA_BEARER_TOKEN}' \
-H 'Content-Type: application/json' \
-H 'cache-control: no-cache' \
Response:
{
"data": {
"name": "ApplicationSample",
"spec": "apiVersion: app.k8s.io/v1beta1\nkind: Application\nmetadata:\n labels:\n app: nginx-app-details\n name: nginx-app-3\n namespace: ns-sub-1\nspec:\n componentKinds:\n - group: app.ibm.com\n kind: Subscription\n - group: core.hybridapp.io\n kind: Deployable\n selector:\n matchLabels:\n app: ${matchLabel}\nstatus: {}",
"status": "Published",
"description": "",
"longdescription": "",
"namespaceId": "",
"creationTime": "2020-12-04T08:06:00.395Z",
"lastUpdated": "2020-12-04T08:43:42.368Z",
"tenantId": "83d50ee1-849b-4b33-bb25-9cb05f9bd87c",
"categoryId": "5fc9df7661b3e8001b7c2511",
"inputparameters": [
{
"name": "matchLabel",
"label": "matchLable",
"customtype": "string",
"type": "string",
"immutable": false,
"hidden": false,
"required": false,
"secured": false,
"description": "",
"isDynamic": false,
"permission": "Read-Write",
"default": "nginx-app-details"
}
],
"imagepath": "serviceicon_1.svg",
"id": <APP_ID>
}
}
Retrieving an application template
This API retrieves the application template details based on given application name.
curl -k -X GET \
'https://${TSA_HOSTNAME}/cam/composer/api/v1/AppModel?filter[where][name]=${APPNAME}&type=template&ace_orgGuid=${MCM_TEAM}&cloudOE_spaceGuid=${NAMESPACE}&tenantId=${TSA_TENANT_ID}' \
-H 'Authorization: Bearer ${TSA_BEARER_TOKEN}' \
-H 'Content-Type: application/json' \
-H 'cache-control: no-cache'
Response:
[
{
"description": "",
"name": <APPNAME>,
"type": "Application",
"manifest": {
"template_type": "AppModel",
"template_format": "JSON",
"template_provider": "Cloud Pak for Multicloud Management",
"skip_formating": true,
"template": {
"templateVariables": {
"template_input_params": [
{
"name": "matchLabel",
"label": "matchLable",
"customtype": "string",
"type": "string",
"immutable": false,
"hidden": false,
"required": false,
"secured": false,
"description": "",
"isDynamic": false,
"permission": "Read-Write",
"default": "nginx-app-details"
}
],
"template_output_params": []
}
}
},
"metadata": {
"displayName": "ApplicationSample",
"longDescription": ""
},
"id": <App_ID>,
"default_template_version": "1.0",
"template_version": {
"id": <App_ID>,
"ref": "1.0",
"name": "1.0",
"enabled": true,
"compatible_versions": [
"1.0"
],
"displayUrl": ""
},
"template_versions": [
{
"id": <APP_ID>,
"ref": "1.0",
"name": "1.0",
"enabled": true,
"compatible_versions": [
"1.0"
]
}
],
"valid_connections": [],
"provider_engine_versions": null
}
]