Showing posts with label REST API. Show all posts
Showing posts with label REST API. Show all posts

Sunday, July 24, 2016

[WSO2 App Manager] How to add a custom field to a web app

In WSO2 App Manager, when you create a new web app, you have to fill a set of predefined values (eg: Name, Version, Context etc.). If you want to add any custom fields to an app, you can easily do it.

First, Let's see how to add a custom field to UI (Jaggery APIs).

For example,  let's take "Price" as the custom field.

1. Modify <APPM_HOME>/repository/resources/rxt/webapp.rxt. If you want to add "Price" as a mandatory field, add below code to the overview section of rxt file.

   
   <field type="text" required="true">  
     <name>Price</name>  
   </field>  
   

Note : If you don't want add the custom field as mandatory, required="true" part is not necessary.

2. Login to Management console and navigate to Home > Extensions > Configure > Artifact Types and delete "webapp.rxt"

3. Add following block under "fieldProperties" of <APPM_HOME>/repository/deployment/server/jageeryapps/publisher/config/ext/webapp.json

   
   {  
       "field": "overview.price",  
       "name": "editable",  
       "value": true  
   }  
   


4. Add below line to both <APPM_HOME>repository/deployment/server/jageeryapps/publisher/themes/appm/partials/add-asset.hbs
and
<APPM_HOME>repository/deployment/server/jageeryapps/publisher/themes/appm/partials/edit-asset.hbs
files.

   
   {{{ form_render "overview_price" data.fields }}}  
   


Now, Let's see how to add customized fields to the REST APIs.

5. Go to Main -> Browse -> in Management console and navigate to   /_system/governance/appmgt/applicationdata/custom-property-definitions/webapp.json and click on "Edit As Text". Add the custom fields which you want to add.

   
   {  
    "customPropertyDefinitions":  
    [  
     {"name":"overview_price"}  
    ]  
   }  
   

6. Restart App Manager.

7. Sample curl command with custom properties to create a web app is shown in below.

   
 curl -X POST -H "Authorization: Bearer c4cdc394-931f-3e3f-9a91-f2be09fab1de" -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{"name":"sampleApp","version":"1.0.0","banner":"36d35be6-1847-4d22-b885-16c653486a77/241eb51a2fdb683b.jpg","thumbnailUrl":"85229347-fcdf-4548-993e-1509dd4242df/dd24c0d2ea4a5697.png","displayName":"sampleApp","description":  
 "description","isSite":"false","context":"sampleContext","appUrL":"http://wso2.com",  
 "transport":"http", "customProperties":[  
   {  
     "name":"overview_price",  
     "value":"10"  
   }  
 ]}' "http://localhost:9763/api/appm/publisher/v1.1/apps/webapp"  
   

8. Web app create page with the newly added custom field(i.e. Price) will be shown as below.



Thursday, July 21, 2016

[WSO2 App Manager] How to create a web app with a thumbnail and banner using REST APIs.

From WSO2 App Manager 1.2.0, most of functionalities are exposed through REST APIs. By this post, let's see how to create a web app with an uploaded thumbnail and banner using REST APIs.

  1. Obtain the consumer key/secret key pair by calling below curl command.

    sample curl command :

    > curl -X POST -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Content-Type: application/json" -H "Cache-Control: no-cache"  -d '{ "callbackUrl": "www.google.lk", "clientName": "app_11_04_0013121", "tokenScope": "Production", "owner": "admin", "grantType": "password refresh_token", "saasApp": true }' "http://localhost:9763/api/appm/oauth/v1.0/register"

    You will get the response as :

    >  {  "clientId": "dd06pbCzyzN7Ud1onZCb6SoCXA8a",
      "clientName": "app_11_04_0013122",
      "callBackURL": "www.google.lk",
      "clientSecret": "GL56h00WQVMdv1Lx8UGivcMcDqUa"
    }
  2. Generate the access token using the already created OAuth application.

    sample curl command :

    > curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -H "Authorization: Basic ZGQwNnBiQ3p5ek43VWQxb25aQ2I2U29DWEE4YTpHTDU2aDAwV1FWTWR2MUx4OFVHaXZjTWNEcVVh" -H "Cache-Control: no-cache" -H "Postman-Token: b418193e-fe30-5f91-fc3c-e41231201a7f" -d 'username=admin&amp;password=admin&amp;grant_type=password&amp;scope=appm:read appm:administration appm:create' "http://localhost:9763/oauth2/token"

    You will get the response as :
    {
     "scope": "appm:administration appm:create appm:read",   "token_type": "Bearer",   "expires_in": 3600,   "refresh_token": "6bda08b3-f44a-31be-988b-6630347357c3",   "access_token": "c4cdc394-931f-3e3f-9a91-f2be09fab1de"
    }
  3. Upload images which you want to upload.

    URL
    http://apis.wso2.com/api/appm/publisher/v1.1/apps/static-contents
    HTTP Method
    POST
    Scope
    appm:create

    sample curl command :


     > curl -X POST -H "Authorization: Bearer 03de85fc-6009-3831-b7b3-206aa7cef885" -H "Content-Type: multipart/form-data" -F "file=@/home/lakshani/Downloads/wso2.png" "http://localhost:9763/api/appm/publisher/v1.1/apps/static-contents?appType=webapp"

    You will get the response as :

    > {"id":"85229347-fcdf-4548-993e-1509dd4242df/dd24c0d2ea4a5697.png"}

  4. Create the web app with the uploaded images. For thumbnailUrl and banner of app create request, you can use "id" in the 3rd step's response.

    URL
    http://apis.wso2.com/api/appm/publisher/v1.1/apps/{appType}
    HTTP Method
    POST
    Scope
    appm:create
sample curl command :

>  curl -X POST -H "Authorization: Bearer 03de85fc-6009-3831-b7b3-206aa7cef885" -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{"name":"testApp","version":"1.0.0","banner":"36d35be6-1847-4d22-b885-16c653486a77/241eb51a2fdb683b.jpg","thumbnailUrl":"85229347-fcdf-4548-993e-1509dd4242df/dd24c0d2ea4a5697.png","displayName":"testApp","description":"description","isSite":"false","context":"sampleContext","appUrL":"http://wso2.com","transport":"http"}' "http://localhost:9763/api/appm/publisher/v1.1/apps/webapp"

You will get the response as :

> {"AppId":"7ab144d1-a6da-4dbf-b361-1f5b62c2cdf7"}

You can go to the publisher UI and verify whether app creation with Images is succeed or not.
That's all :)