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.
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
