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
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to