We can replace tag-groups with categories, and keep tags as it is which is helpful in searches.
Thanks, Bhathiya On Wed, Nov 13, 2019 at 12:30 PM Sanjeewa Malalgoda <[email protected]> wrote: > If we have API categories then tag wise store view will not need anymore. > As i remember tagwise store view working till last release. > Only difference between categories and tags is categories created by admin > while tags created by API creator. Do we have any other differences or > specific use cases address by this? > > Thanks, > sanjeewa. > > On Wed, Nov 13, 2019 at 12:22 PM Sachini De Silva <[email protected]> > wrote: > >> @Harsha Kumara <[email protected]> will switch to tenant id. >> >> @Nuwan Dias <[email protected]> +1 will add a single scope >> ‘apim:api_category’ to do all api categories related operations. >> >> In publisher, categories/ GET resource can be associated with >> apim:api_view scope. In store we can avoid attaching a scope to categories/ >> GET resource and allow to access the resource without a token. >> >> >> >> On Wed, Nov 13, 2019 at 11:50 AM Nuwan Dias <[email protected]> wrote: >> >>> For the admin API, I don't think we need separate scopes for the read >>> and write of categories, isn't it? >>> >>> The publisher and store APIs would also need an API each to fetch the >>> categories. These can be bound to already available scopes I assume. >>> >>> On Wed, Nov 13, 2019 at 11:26 AM Sachini De Silva <[email protected]> >>> wrote: >>> >>>> +1 >>>> >>>> On Wed, Nov 13, 2019 at 11:13 AM Bhathiya Jayasekara <[email protected]> >>>> wrote: >>>> >>>>> Shall we use "API Categories" everywhere instead of just "Categories"? >>>>> Because in the future there can be other category types too. >>>>> >>>>> Thanks, >>>>> Bhathiya >>>>> >>>>> On Wed, Nov 13, 2019 at 10:59 AM Sachini De Silva <[email protected]> >>>>> wrote: >>>>> >>>>>> Hi all, >>>>>> >>>>>> I am working on a new feature ‘API Categories’. It is very similar to >>>>>> tag wise grouping in store from a store UI POV but has the following >>>>>> differences w.r.t tags. >>>>>> 1. Categories define a broader collection of APIs. Tags can be used >>>>>> by the publisher to emphasize specific details of an API. >>>>>> 2. Categories have to be pre-defined by an Admin before they can be >>>>>> associated with any APIs. >>>>>> 3. Categories can have any valid string as their category name. >>>>>> Whereas tag wise groups must have the suffix -group to be identified as a >>>>>> tag group. >>>>>> >>>>>> In order to support this in APIM, I thought of using the following >>>>>> approach. >>>>>> 1. Define a REST API to do operations on category resources. Sample >>>>>> GET and POST resources would be as below. >>>>>> >>>>>> *"/categories"*: { *"get"*: { *"x-scope"*: *"apim:category_read"*, >>>>>> *"x-wso2-request"*: *"GET >>>>>> https://localhost:9443/api/am/admin/v0.15/categories >>>>>> <https://localhost:9443/api/am/admin/v0.15/categories>**\n**Authorization: >>>>>> Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8**\n**"*, >>>>>> *"x-wso2-curl"*: *"curl -k -H **\"**Authorization: Bearer >>>>>> ae4eae22-3f65-387b-a171-d37eaa366fa8**\" >>>>>> \"**https://localhost:9443/api/am/admin/v0.15/categories >>>>>> <https://localhost:9443/api/am/admin/v0.15/categories>**\"**"*, >>>>>> *"x-wso2-response"*: *"HTTP/1.1 200 OK**\r\n**Content-Type: >>>>>> application/json**\r\n\r\n**{**\r\n \"**count**\"**:1,**\r\n >>>>>> \"**list**\"**:[**\r\n* *{**\r\n >>>>>> \"**id**\"**:**\"**463e2c9f-5e99-43c3-a66e-de7e0f367373**\"**,**\r\n >>>>>> \"**name**\"**:**\"**Finance**\"**,**\r\n >>>>>> \"**description**\"**:**\"**Finance related APIS**\"\r\n* *}**\r\n* >>>>>> *]**\r\n**}"*, *"summary"*: *"Get all API categories"*, >>>>>> *"description"*: *"Get all API categories**\n**"*, *"tags"*: [ >>>>>> *"Category Collection"* ], *"responses"*: { *"200"*: { >>>>>> *"description"*: *"OK.**\n**Categories returned**\n**"*, >>>>>> *"schema"*: { *"$ref"*: *"#/definitions/**Category**List"* >>>>>> } } } }, *"post"*: { *"x-scope"*: >>>>>> *"apim:category_manage"*, *"x-wso2-curl"*: *"curl -k -X POST -H >>>>>> **\"**Authorization: Bearer 0d63e133-7ad6-3aeb-9ca9-9299e0708122**\"* >>>>>> *-H **\"**Content-Type: application/json**\"* >>>>>> *https://apis.wso2.com/api/am/admin/v0.15/ >>>>>> <https://apis.wso2.com/api/am/admin/v0.15/>**categorie**s -d >>>>>> @data.json"*, *"x-wso2-request"*: *"POST >>>>>> https://localhost:9443/api/am/admin/v0.15/categories >>>>>> <https://localhost:9443/api/am/admin/v0.15/categories>**\r\n**Authorization: >>>>>> Bearer 0d63e133-7ad6-3aeb-9ca9-9299e0708122**\r\n**Content-Type: >>>>>> application/json**\r\n\r\n* *-d {**\r\n >>>>>> \"**name**\"**:**\"**Finance**\"**,**\r\n >>>>>> \"**description**\"**:**\"**Finance related APIS**\"\r\n* *}"*, >>>>>> *"x-wso2-response"*: *"HTTP/1.1 201 Created**\r\n**Content-Type: >>>>>> application/json**\r\n\r\n**{**\r\n \"**count**\"**:1,**\r\n >>>>>> \"**list**\"**:[**\r\n* *{**\r\n >>>>>> \"**id**\"**:**\"**463e2c9f-5e99-43c3-a66e-de7e0f367373**\"**,**\r\n >>>>>> \"**name**\"**:**\"**Finance**\"**,**\r\n >>>>>> \"**description**\"**:**\"**Finance related APIS**\"\r\n* *}**\r\n* >>>>>> *]**\r\n**}"*, *"summary"*: *"Add a Category"*, *"description"*: >>>>>> *"Add a new API Category**\n**"*, *"parameters"*: [ { >>>>>> *"in"*: *"body"*, *"name"*: *"body"*, *"description"*: >>>>>> *"Category object that should to be added**\n**"*, *"required"*: >>>>>> *true*, *"schema"*: { *"$ref"*: >>>>>> *"#/definitions/Category"* } } ], *"tags"*: [ >>>>>> *"Category"* ], *"responses"*: { *"201"*: { >>>>>> *"description"*: *"Created.**\n**Successful response with the newly >>>>>> created object as entity in the body.**\n**"*, *"schema"*: { >>>>>> *"$ref"*: *"#/definitions/Category"* } }, *"400"*: >>>>>> { *"description"*: *"Bad Request.**\n**Invalid request or >>>>>> validation error**\n**"*, *"schema"*: { *"$ref"*: >>>>>> *"#/definitions/Error"* } } } }} >>>>>> >>>>>> And category and categoryList would be defined as below. >>>>>> >>>>>> *"Category"*: { *"title"*: *"Category"*, *"required"*: [ >>>>>> *"name"* ], *"properties"*: { *"id"*: { *"type"*: >>>>>> *"string"*, *"example"*: *"01234567-0123-0123-0123-012345678901"* >>>>>> }, *"name"*: { *"type"*: *"string"*, >>>>>> *"example"*: *"Finance"* }, *"description"*: { >>>>>> *"type"*: *"string"*, *"example"*: *"Finance related APIs"* >>>>>> } } }, *"CategoryList"*: { *"title"*: *"Category List"*, >>>>>> *"properties"*: { *"count"*: { *"type"*: *"integer"*, >>>>>> *"description"*: *"Number of categories returned.**\n**"*, >>>>>> *"example"*: 1 }, *"list"*: { *"type"*: *"array"*, >>>>>> *"items"*: { *"$ref"*: *"#/definitions/Category"* } >>>>>> } } }} >>>>>> >>>>>> 2. Define a new AM_CATEGORIES table to hold category related details. >>>>>> >>>>>> *CREATE TABLE *IF *NOT EXISTS *AM_CATEGORIES ( CATEGORY_ID >>>>>> *VARCHAR*(50), NAME *VARCHAR*(255), DESCRIPTION *VARCHAR*(1024), >>>>>> TENANT_DOMAIN *VARCHAR*(255), *UNIQUE *(NAME,TENANT_DOMAIN), *PRIMARY >>>>>> KEY *(CATEGORY_ID)); >>>>>> >>>>>> 3. Publisher UI overview tab(or a suitable place as it fits) will >>>>>> have a new UI element to select categories for the API. And selecting >>>>>> categories for an API would be optional. >>>>>> >>>>>> 4. API to category mapping will be stored in registry API artifact >>>>>> and for that following table field would have to be added to api.rxt. (I >>>>>> assume we are going to support associating a single API with multiple >>>>>> categories) >>>>>> <table name="Categories" columns="1" maxoccurs="unbounded"> >>>>>> <subheading> >>>>>> <heading>Category Name</heading> >>>>>> </subheading> >>>>>> <field type="text"> >>>>>> <name label="Category Name">categoryName</name> >>>>>> </field> >>>>>> </table> >>>>>> >>>>>> 5. And from store viewing POV, I assume API categories are a >>>>>> substitution for existing tag-wise grouping feature and that both >>>>>> tag-wise >>>>>> groups and categories won’t co-exist in the store. Please do correct if >>>>>> my >>>>>> understanding is wrong. >>>>>> Once a developer visits the store, he will be presented with the list >>>>>> of API categories and upon selecting a category out of those, associated >>>>>> APIs will be listed. >>>>>> APIs that are not associated with any category will be listed under >>>>>> other APIs or a similar heading. >>>>>> >>>>>> Please feel free to add your suggestions. >>>>>> >>>>>> Thanks, >>>>>> Sachini >>>>>> >>>>>> -- >>>>>> >>>>>> *Sachini De Silva* >>>>>> Senior Software Engineer - WSO2 >>>>>> >>>>>> Email : [email protected] >>>>>> Mobile : +94714765495 >>>>>> >>>>>> >>>>> >>>>> -- >>>>> *Bhathiya Jayasekara* | Technical Lead | WSO2 Inc. >>>>> (m) +94 71 547 8185 | (e) bhathiya-@t-wso2-d0t-com >>>>> >>>>> >>>>> >>>> >>>> -- >>>> >>>> *Sachini De Silva* >>>> Senior Software Engineer - WSO2 >>>> >>>> Email : [email protected] >>>> Mobile : +94714765495 >>>> >>>> >>> >>> -- >>> *Nuwan Dias* | Director | WSO2 Inc. >>> (m) +94 777 775 729 | (e) [email protected] >>> [image: Signature.jpg] >>> >> >> >> -- >> >> *Sachini De Silva* >> Senior Software Engineer - WSO2 >> >> Email : [email protected] >> Mobile : +94714765495 >> >> > > -- > *Sanjeewa Malalgoda* > Software Architect | Associate Director, Engineering - WSO2 Inc. > (m) +94 712933253 | (e) [email protected] | (b) Blogger > <http://sanjeewamalalgoda.blogspot.com>, Medium > <https://medium.com/@sanjeewa190> > > GET INTEGRATION AGILE <https://wso2.com/signature> > Integration Agility for Digitally Driven Business > -- *Bhathiya Jayasekara* | Technical Lead | WSO2 Inc. (m) +94 71 547 8185 | (e) bhathiya-@t-wso2-d0t-com
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
