Hi Akila,

We shouldn't be sending unrequired fields in the request payload(e.g
status). It will only confuse a user.

On Sun, Nov 12, 2017 at 6:30 PM, Prasanna Dangalla <[email protected]>
wrote:

> Hi Chamalee,
>
> On Sat, Nov 11, 2017 at 10:02 PM, Chamalee De Silva <[email protected]>
> wrote:
>
>> Hi Prasanna,
>>
>> We do not need to set the status of the API in the payload.
>> Whichever the status that we set or we do not set the status, API will be
>> added to the managed cloud with the status CREATED.
>>
> Yes that was my point to. It will not get published. Someone might get
> mislead when we send the status as PUBLISHED in future documantatiosn or in
> code, hence better to put it as CREATED. Thats Why I asked to make it
> CREATED instead of PUBLISHED.
>
> Thanks
> Prasanna
>
>>
>>
>>
>>
>> Thanks,
>> Chamalee
>>
>> On Sat, Nov 11, 2017 at 4:47 PM, Prasanna Dangalla <[email protected]>
>> wrote:
>>
>>> HI Akila
>>>
>>> On Fri, Nov 10, 2017 at 11:13 AM, Akila Amarasinghe <[email protected]>
>>> wrote:
>>>
>>>> Hi all,
>>>>
>>>> In the mail thread [ARCHITECTURE] [APIM] SwaggerHub Integration with
>>>> WSO2, I gave you an introduction to the project that I am working on.
>>>> In this mail, I will describe how I handle the payload of creating an API
>>>> in the cloud in the plugin that I implement for the Swagger Hub.
>>>>
>>>> Here is the sample payload to create the sample PizzaShackAPI in the
>>>> cloud as in the documentation of WSO2 API manager version 2.1.0.
>>>>
>>>> {
>>>>    "name": "PizzaShackAPI",
>>>>    "description": "This document describe a RESTFul API for Pizza Shack 
>>>> online pizza delivery store.\r\n",
>>>>    "context": "/pizzashack",
>>>>    "version": "1.0.0",
>>>>    "provider": "admin",
>>>>    "apiDefinition": 
>>>> "{\"paths\":{\"/order\":{\"post\":{\"x-auth-type\":\"Application & 
>>>> Application 
>>>> User\",\"x-throttling-tier\":\"Unlimited\",\"description\":\"Create a new 
>>>> Order\",\"parameters\":[{\"schema\":{\"$ref\":\"#/definitions/Order\"},\"description\":\"Order
>>>>  object that needs to be 
>>>> added\",\"name\":\"body\",\"required\":true,\"in\":\"body\"}],\"responses\":{\"201\":{\"headers\":{\"Location\":{\"description\":\"The
>>>>  URL of the newly created 
>>>> resource.\",\"type\":\"string\"}},\"schema\":{\"$ref\":\"#/definitions/Order\"},\"description\":\"Created.\"}}}},\"/menu\":{\"get\":{\"x-auth-type\":\"Application
>>>>  & Application 
>>>> User\",\"x-throttling-tier\":\"Unlimited\",\"description\":\"Return a list 
>>>> of available menu 
>>>> items\",\"parameters\":[],\"responses\":{\"200\":{\"headers\":{},\"schema\":{\"title\":\"Menu\",\"properties\":{\"list\":{\"items\":{\"$ref\":\"#/definitions/MenuItem\"},\"type\":\"array\"}},\"type\":\"object\"},\"description\":\"OK.\"}}}}},\"schemes\":[\"https\"],\"produces\":[\"application/json\"],\"swagger\":\"2.0\",\"definitions\":{\"MenuItem\":{\"title\":\"Pizza
>>>>  menu 
>>>> Item\",\"properties\":{\"price\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"image\":{\"type\":\"string\"}},\"required\":[\"name\"]},\"Order\":{\"title\":\"Pizza
>>>>  
>>>> Order\",\"properties\":{\"customerName\":{\"type\":\"string\"},\"delivered\":{\"type\":\"boolean\"},\"address\":{\"type\":\"string\"},\"pizzaType\":{\"type\":\"string\"},\"creditCardNumber\":{\"type\":\"string\"},\"quantity\":{\"type\":\"number\"},\"orderId\":{\"type\":\"integer\"}},\"required\":[\"orderId\"]}},\"consumes\":[\"application/json\"],\"info\":{\"title\":\"PizzaShackAPI\",\"description\":\"This
>>>>  document describe a RESTFul API for Pizza Shack online pizza delivery 
>>>> store.\\n\",\"license\":{\"name\":\"Apache 
>>>> 2.0\",\"url\":\"http://www.apache.org/licenses/LICENSE-2.0.html\"},\"contact\":{\"email\":\"[email protected]\",\"name\":\"John
>>>>  Doe\",\"url\":\"http://www.pizzashack.com\"},\"version\":\"1.0.0\"}}";,
>>>>    "wsdlUri": null,
>>>>    "status": "PUBLISHED",
>>>>    "responseCaching": "Disabled",
>>>>    "cacheTimeout": 300,
>>>>    "destinationStatsEnabled": false,
>>>>    "isDefaultVersion": false,
>>>>    "type": "HTTP",
>>>>    "transport":    [
>>>>       "http",
>>>>       "https"
>>>>    ],
>>>>    "tags": ["pizza"],
>>>>    "tiers": ["Unlimited"],
>>>>    "maxTps":    {
>>>>       "sandbox": 5000,
>>>>       "production": 1000
>>>>    },
>>>>    "visibility": "PUBLIC",
>>>>    "visibleRoles": [],
>>>>    "visibleTenants": [],
>>>>    "endpointConfig": 
>>>> "{\"production_endpoints\":{\"url\":\"https://localhost:9443/am/sample/pizzashack/v1/api/\",\"config\":null},\"sandbox_endpoints\":{\"url\":\"https://localhost:9443/am/sample/pizzashack/v1/api/\",\"config\":null},\"endpoint_type\":\"http\"}";,
>>>>    "endpointSecurity":    {
>>>>       "username": "user",
>>>>       "type": "basic",
>>>>       "password": "pass"
>>>>    },
>>>>    "gatewayEnvironments": "Production and Sandbox",
>>>>    "sequences": [],
>>>>    "subscriptionAvailability": null,
>>>>    "subscriptionAvailableTenants": [],
>>>>    "businessInformation":    {
>>>>       "businessOwnerEmail": "[email protected]",
>>>>       "technicalOwnerEmail": "[email protected]",
>>>>       "technicalOwner": "John Doe",
>>>>       "businessOwner": "Jane Roe"
>>>>    },
>>>>    "corsConfiguration":    {
>>>>       "accessControlAllowOrigins": ["*"],
>>>>       "accessControlAllowHeaders":       [
>>>>          "authorization",
>>>>          "Access-Control-Allow-Origin",
>>>>          "Content-Type",
>>>>          "SOAPAction"
>>>>       ],
>>>>       "accessControlAllowMethods":       [
>>>>          "GET",
>>>>          "PUT",
>>>>          "POST",
>>>>          "DELETE",
>>>>          "PATCH",
>>>>          "OPTIONS"
>>>>       ],
>>>>       "accessControlAllowCredentials": false,
>>>>       "corsConfigurationEnabled": false
>>>>    }
>>>> }
>>>>
>>>>
>>>> AFAIK when you sent the payload to create the API you need to send the
>>> status as CREATED instead of PUBLISHED.
>>>
>>>
>>>> But I used only the mandatory elements of the payload for creating
>>>> because I had to create a POJO for handling the payload. Here is the
>>>> payload with the mandatory elements.
>>>>
>>>> {
>>>>    "name": "Simple Inventory API",
>>>>    "context": "/simple",
>>>>    "version": "1.0.0",
>>>>    "description": "This is a simple API",
>>>>    "apiDefinition": "{\"swagger\":\"2.0\",\"info\":{\"description\":\"This 
>>>> is a simple API\",\"version\":\"1.0.0\",\"title\":\"Simple Inventory 
>>>> API\",\"contact\":{\"email\":\"[email protected]\"},\"license\":{\"name\":\"Apache
>>>>  
>>>> 2.0\",\"url\":\"http://www.apache.org/licenses/LICENSE-2.0.html\"}},\"host\":\"virtserver.swaggerhub.com\",\"basePath\":\"/simple\",\"tags\":[{\"name\":\"admins\",\"description\":\"Secured
>>>>  Admin-only calls\"},{\"name\":\"developers\",\"description\":\"Operations 
>>>> available to regular 
>>>> developers\"}],\"schemes\":[\"https\"],\"paths\":{\"/inventory\":{\"get\":{\"tags\":[\"developers\"],\"summary\":\"searches
>>>>  inventory\",\"description\":\"By passing in the appropriate options, you 
>>>> can search for\\navailable inventory in the 
>>>> system\\n\",\"operationId\":\"searchInventory\",\"produces\":[\"application/json\"],\"parameters\":[{\"name\":\"searchString\",\"in\":\"query\",\"description\":\"pass
>>>>  an optional search string for looking up 
>>>> inventory\",\"required\":false,\"type\":\"string\"},{\"name\":\"skip\",\"in\":\"query\",\"description\":\"number
>>>>  of records to skip for 
>>>> pagination\",\"required\":false,\"type\":\"integer\",\"minimum\":0,\"format\":\"int32\"},{\"name\":\"limit\",\"in\":\"query\",\"description\":\"maximum
>>>>  number of records to 
>>>> return\",\"required\":false,\"type\":\"integer\",\"maximum\":50,\"minimum\":0,\"format\":\"int32\"}],\"responses\":{\"200\":{\"description\":\"search
>>>>  results matching 
>>>> criteria\",\"schema\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/InventoryItem\"}}},\"400\":{\"description\":\"bad
>>>>  input parameter\"}}},\"post\":{\"tags\":[\"admins\"],\"summary\":\"adds 
>>>> an inventory item\",\"description\":\"Adds an item to the 
>>>> system\",\"operationId\":\"addInventory\",\"consumes\":[\"application/json\"],\"produces\":[\"application/json\"],\"parameters\":[{\"in\":\"body\",\"name\":\"inventoryItem\",\"description\":\"Inventory
>>>>  item to 
>>>> add\",\"required\":false,\"schema\":{\"$ref\":\"#/definitions/InventoryItem\"}}],\"responses\":{\"201\":{\"description\":\"item
>>>>  created\"},\"400\":{\"description\":\"invalid input, object 
>>>> invalid\"},\"409\":{\"description\":\"an existing item already 
>>>> exists\"}}}}},\"definitions\":{\"InventoryItem\":{\"type\":\"object\",\"required\":[\"id\",\"manufacturer\",\"name\",\"releaseDate\"],\"properties\":{\"id\":{\"type\":\"string\",\"format\":\"uuid\",\"example\":\"d290f1ee-6c54-4b01-90e6-d701748f0851\"},\"name\":{\"type\":\"string\",\"example\":\"Widget
>>>>  
>>>> Adapter\"},\"releaseDate\":{\"type\":\"string\",\"format\":\"int32\",\"example\":\"2016-08-29T09:12:33.001Z\"},\"manufacturer\":{\"$ref\":\"#/definitions/Manufacturer\"}}},\"Manufacturer\":{\"required\":[\"name\"],\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"ACME
>>>>  
>>>> Corporation\"},\"homePage\":{\"type\":\"string\",\"format\":\"url\",\"example\":\"https://www.acme-corp.com\"},\"phone\":{\"type\":\"string\",\"example\":\"408-867-5309
>>>>  <(408)%20867-5309>\"}}}}}",
>>>>    "isDefaultVersion": false,
>>>>    "transport": ["http", "https"],
>>>>    "tiers": ["Unlimited"],
>>>>    "visibility": "PUBLIC",
>>>>    "endpointConfig": "",
>>>>    "corsConfiguration": {
>>>>       "corsConfigurationEnabled": false
>>>>    }
>>>> }
>>>>
>>>>
>>>> More about the payload,
>>>>
>>>> Note : After an integration is enabled with WSO2 API management cloud
>>>> from the Swagger Hub and saving, the API should be created in the WSO2 API
>>>> management cloud in the CREATED state.
>>>>
>>>>    - The following elements of the payload are set as default values
>>>>    as the cloud user can change these values any time before publishing the
>>>>    API.
>>>>       - visibility to PUBLIC
>>>>       - tiers to UNLIMITED
>>>>       - corsConfiguration to false
>>>>       - endpointConfig to null
>>>>       - The provider element will be returned with the response after
>>>>       creating the API in the cloud with the appropriate username of the 
>>>> cloud
>>>>       user according to the access token the user provide when enabling the
>>>>       integration with the cloud from the Swagger Hub.
>>>>    - Some swagger definitions generated by the Swagger Hub doesn't
>>>>    contain the "basePath" element. You can see a swagger definition without
>>>>    the basePath in this link
>>>>    <https://app.swaggerhub.com/apis/user1/OAuth2Application/1.0.0>[1].
>>>>    So the swagger definition is checked for the basePath before exporting. 
>>>> If
>>>>    a basePath is not in the definition, the user will have to enter a 
>>>> basePath
>>>>    to the definition and export.
>>>>    - These elements are mapped from the swagger definition to the
>>>>    payload
>>>>       - title -> name
>>>>       - version -> version
>>>>       - description -> description
>>>>       - basePath -> context
>>>>
>>>> Any feedback is appreciated.
>>>>
>>>> Thank you,
>>>>
>>>> ------------------------------------------------------------
>>>> ------------------------------------------------------------
>>>> -----------------------------
>>>>
>>>> [1] https://app.swaggerhub.com/apis/user1/OAuth2Application/1.0.0
>>>> [2]  Refer the mail thread : [ARCHITECTURE] [APIM] SwaggerHub
>>>> Integration with WSO2
>>>>
>>>> Akila Aroshana
>>>> Software Engineer (Intern)
>>>> WSO2
>>>>
>>>> Mobile : +94702178247 <+94%2070%20217%208247>
>>>> Email : [email protected]
>>>> LinkedIn : www.linkedin.com/in/akila-amarasinghe
>>>>
>>>
>>>
>>> _______________________________________________
>>> Architecture mailing list
>>> [email protected]
>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>
>>>
>>
>>
>> --
>> Thanks & Regards,
>>
>> *Chamalee De Silva*
>> Software Engineer
>> *WS**O2* Inc. :http://wso2.com/
>>
>> Office   :- *+94 11 2145345 <%2B94%2011%202145345>*
>> mobile  :- *+94 7 <%2B94%2077%202782039>1 4315942*
>>
>>
>
> _______________________________________________
> Architecture mailing list
> [email protected]
> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>
>


-- 
Thanks & Regards,

*Fazlan Nazeem*
Senior Software Engineer
WSO2 Inc
Mobile : +94772338839
<%2B94%20%280%29%20773%20451194>
[email protected]
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to