Hi Kaveesha, > > As API Manager consists of a REST API now, api-import-export tool was > implemented to consume it instead of directly accessing the implementation > layer. Currently clients calls the import/export API then import/export > API calls publisher REST API, which interact with implementations and > perform import and export of APIs. [Refer *Diagram 1.0* ]
Thanks you for the clarification. If we consider the APIs which are invoked by import/export API; all lives on */publisher/apis/* resources collection. Hence, for me it is looks like an aggregate api. As Rasika suggested, if we added a new resource to the existing publisher > REST API for api import and export, it will generate a situation where API > calls another API for it's functionality, which is the same scenario > currently prevailing. So we are hoping to move forward with import/export > as follows. Sorry I couldn't explain it further. API calling another API is not the motive(If you meant two network calls here, we should avoid it). If we haven't implemented any business logic at the REST API level, it'd be easier to expose another API through the JAX-RS with the aggregate functionality calling internal implementations(no multiple network calls). Thanks, Rasika On Thu, Jul 21, 2016 at 11:02 AM, Kaveesha Perera <[email protected]> wrote: > Hi All, > > Earlier API Manager doesn't included a separate REST API for it's > functionality. Import/export API directly called implementation layer for > its operations. > > As API Manager consists of a REST API now, api-import-export tool was > implemented to consume it instead of directly accessing the implementation > layer. Currently clients calls the import/export API then import/export > API calls publisher REST API, which interact with implementations and > perform import and export of APIs. [Refer *Diagram 1.0* ] > > > *Diagram 1.0* > > > As Rasika suggested, if we added a new resource to the existing publisher > REST API for api import and export, it will generate a situation where API > calls another API for it's functionality, which is the same scenario > currently prevailing. So we are hoping to move forward with import/export > as follows. > > We are hoping integrate the tasks of import/export API into a .jar which > will be deploy and execute as a client app and then client app will > directly consume REST API for import/export operations.[Refer *Diagram > 1.1* ] > > > > > > * Diagram 1.1* > If you have any feedback on this procedure please reply. > > Regards, > > > On Wed, Jul 20, 2016 at 12:33 PM, Rasika Perera <[email protected]> wrote: > >> Hi Thilini, >> >> Api-import-export tool performs as a separate RESTful API based *tool* which >>> consumes API Manager publisher REST API. >>> Therefore IMO it is not correct to add import-export as a resource to >>> our publisher REST API. >> >> Yes, import-export is not a generic resource. This is kind of a special >> case. My main concern is it should belongs to the *publisher*. >> >> Well, this is how I derived the api; >> >> 1. Import/Export is affected to the resources >> https://apis.wso2.com/api/am/publisher/v0.9/apis/{apiId} and >> https://apis.wso2.com/api/am/publisher/v0.9/apis/{apiId}/documents/{documentId} >> . If we consider following api >> https://10.100.7.40:9443/api-import-export-<version>/import-api. It does >> not convey that import exports are belongs to the resource "apis". >> >> 2. Then it should be; https://10.100.7.40:9443/*apis*/ >> import-export-<version>/import-api >> >> 3. Do we need sub-resource import-api? no. We can derive those from PUT, >> POST(import) and GET(export). Hence https://10.100.7.40:9443/*apis*/ >> import-export. >> >> 4. Can every user import-export APIs? no. Most of the time, publisher >> does it. Hence final api; https://10.100.7.40:9443/*publisher*/*apis* >> /import-export/. >> >> WDYT? >> >> Thanks, >> Rasika >> >> On Wed, Jul 20, 2016 at 10:06 AM, Thilini Cooray <[email protected]> >> wrote: >> >>> Hi Rasika, >>> >>> Api-import-export tool performs as a separate RESTful API based *tool* >>> which consumes API Manager publisher REST API. >>> Therefore IMO it is not correct to add import-export as a resource to >>> our publisher REST API. >>> >>> WDYT? >>> >>> Thanks. >>> >>> >>> On Tue, Jul 19, 2016 at 2:39 PM, Rasika Perera <[email protected]> wrote: >>> >>>> Hi Kaveesha, >>>> >>>> Few suggestions on the REST API for import-export. >>>> >>>> eg :- >>>>> curl -H "Authorization:Basic AbCdEfG" -F file=@ >>>>> "/Desktop/MyAPIFolder/myExportedAPI.zip" -k -X POST " >>>>> https://10.100.7.40:9443/api-import-export-<version>/import-api? >>>>> *updateIfExists=true*" >>>> >>>> Isn't API import/export apis belongs to publisher? Or is >>>> api-"import-export-<version>" is an api on a jaggery app? >>>> >>>> How about following APIs on publisher? >>>> >>>> https://apis.wso2.com/api/am/publisher/v0.9/apis/{apiId} - [already >>>> exists][1] >>>> >>>> https://apis.wso2.com/api/am/publisher/v0.9/apis/{apiId}/documents/{documentId} >>>> [already exists][2] >>>> https://apis.wso2.com/api/am/publisher/v0.9/apis/{apiId}/import-export >>>> [new] >>>> >>>> *Importing API* >>>> PUT https://apis.wso2.com/api/am/publisher/v0.9/apis/ >>>> <https://apis.wso2.com/api/am/publisher/v0.9/apis/%7BapiId%7D/import-export> >>>> {apiId}/ >>>> <https://apis.wso2.com/api/am/publisher/v0.9/apis/%7BapiId%7D/import-export> >>>> import-export >>>> <https://apis.wso2.com/api/am/publisher/v0.9/apis/%7BapiId%7D/import-export> >>>> -> Update if exists API+Docs >>>> POST >>>> https://apis.wso2.com/api/am/publisher/v0.9/apis/{apiId}/import-export >>>> -> Create a new API + Docs (Gives 409 if exists) >>>> >>>> *Export API* >>>> GET https://apis.wso2.com/api/am/publisher/v0.9/apis/{apiId}/import-export >>>> -> Export API >>>> >>>> Regards, >>>> Rasika >>>> >>>> [1] >>>> https://docs.wso2.com/display/AM1100/apidocs/publisher/#!/operations#APICollectionApi#apisApiIdGet >>>> [2] >>>> https://docs.wso2.com/display/AM1100/apidocs/publisher/#!/operations#APIDocumentApi#apisApiIdDocumentsDocumentIdGet >>>> >>>> On Thu, Jul 14, 2016 at 5:22 PM, Kaveesha Perera <[email protected]> >>>> wrote: >>>> >>>>> Hi All, >>>>> >>>>> Current import/export tool doesn't facilitate updating a imported API. >>>>> I modified the implementation of import/export tool in APIM to update a >>>>> API >>>>> once its been try to import a already imported API using APIM REST API. >>>>> >>>>> When a user attempt to import a existing API using *"*create a new >>>>> API*" *REST API [ 1. >>>>> https://docs.wso2.com/display/AM1100/apidocs/publisher/#!/operations#APICollectionApi#apisPost] >>>>> , server gives out a error with code 409 stating a conflict. On it, then >>>>> check whether the user has set the value of query parameter >>>>> "updateIfExists" to true.(Refer the following example) >>>>> >>>>> eg :- >>>>> curl -H "Authorization:Basic AbCdEfG" -F file=@ >>>>> "/Desktop/MyAPIFolder/myExportedAPI.zip" -k -X POST " >>>>> https://10.100.7.40:9443/api-import-export-<version>/import-api? >>>>> *updateIfExists=true*" >>>>> >>>>> If then, update the existing API using following REST APIs, >>>>> >>>>> - Update the existing API - >>>>> >>>>> https://docs.wso2.com/display/AM1100/apidocs/publisher/#!/operations#APICollectionApi#apisApiIdPut >>>>> - Delete the existing API documents - >>>>> >>>>> https://docs.wso2.com/display/AM1100/apidocs/publisher/#!/operations#APIDocumentApi#apisApiIdDocumentsDocumentIdDelete >>>>> - Add exported API documents - >>>>> >>>>> https://docs.wso2.com/display/AM1100/apidocs/publisher/#!/operations#APIDocumentApi#apisApiIdDocumentsPost >>>>> >>>>> - Update document contents - >>>>> >>>>> https://docs.wso2.com/display/AM1100/apidocs/publisher/#!/operations#APIDocumentApi#apisApiIdDocumentsDocumentIdContentPost >>>>> - Add API thumbnail by calling to the end point >>>>> http://localhost:9763/api/am/publisher/v0.9//apis/{apiId}/thumbnail >>>>> >>>>> <http://www.google.com/url?q=http%3A%2F%2F127.0.0.1%3A9763%2Fapi%2Fam%2Fpublisher%2Fv0.9%2F%2Fapis%2Ff7ac5958-e581-4631-9c39-bb7d0795cf7c%2Fthumbnail&sa=D&sntz=1&usg=AFQjCNEpM0xz1acxH3fPPubOP-RG_WhTsA> >>>>> with corresponding image file. >>>>> >>>>> else, If the value of query parameter "updateIfExists" is false, >>>>> importing action ends up giving a appropriate error message stating API >>>>> trying to create already exists. >>>>> If there are any feedback on this procedure please reply. >>>>> >>>>> Regards, >>>>> >>>>> -- >>>>> Kaveesha Perera >>>>> Intern - Software Engineering >>>>> >>>>> mobile: 0716130471 >>>>> >>>>> _______________________________________________ >>>>> Architecture mailing list >>>>> [email protected] >>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>>> >>>>> >>>> >>>> >>>> -- >>>> With Regards, >>>> >>>> *Rasika Perera* >>>> Software Engineer >>>> LinkedIn: http://lk.linkedin.com/in/rasika90 >>>> >>>> [image: wso2-signature-general.png] <https://wso2.com/signature> >>>> >>>> WSO2 Inc. www.wso2.com >>>> lean.enterprise.middleware >>>> >>>> _______________________________________________ >>>> Architecture mailing list >>>> [email protected] >>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>> >>>> >>> >>> >>> -- >>> Best Regards, >>> >>> *Thilini Cooray* >>> Software Engineer >>> Mobile : +94 (0) 774 570 112 <%2B94%20%280%29%20773%20451194> >>> E-mail : [email protected] >>> >>> WSO2 Inc. www.wso2.com >>> lean.enterprise.middleware >>> >> >> >> >> -- >> With Regards, >> >> *Rasika Perera* >> Software Engineer >> LinkedIn: http://lk.linkedin.com/in/rasika90 >> >> [image: wso2-signature-general.png] <https://wso2.com/signature> >> >> WSO2 Inc. www.wso2.com >> lean.enterprise.middleware >> >> _______________________________________________ >> Architecture mailing list >> [email protected] >> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >> >> > > > -- > Kaveesha Perera > Intern - Software Engineering > > mobile: 0716130471 > -- With Regards, *Rasika Perera* Software Engineer LinkedIn: http://lk.linkedin.com/in/rasika90 [image: wso2-signature-general.png] <https://wso2.com/signature> WSO2 Inc. www.wso2.com lean.enterprise.middleware
_______________________________________________ Architecture mailing list [email protected] https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
