On Thu, Jun 29, 2017 at 12:20 PM, Harsha Kumara <[email protected]> wrote:

>
>
> On Thu, Jun 29, 2017 at 11:43 AM, Malintha Amarasinghe <[email protected]
> > wrote:
>
>> Hi all,
>>
>> Bhathiya and I had a discussion about this and came up with the below
>> approach regarding POST /provide-keys.
>>
>> 1.Creates a new resource in /keys collection providing the key type.
>> (Similar to semi-manual client registration).
>>
>> POST  /applications/{applicationId}/keys
>>
>> *Request:*
>>
>> POST  /applications/876f8fd8-269a-41db-b1cf-e4efe8a8426d/keys
>>
>> {
>>   "consumerKey": "xxxxxxxxxxxxxxxxxxxx",
>>   "consumerSecret": "yyyyyyyyyyyyyyyyyyy",
>>   "keyType": "PRODUCTION"
>> }
>>
>> *Response*
>>
>> HTTP/1.1 201 CREATED
>> Location: https://localhost:9292/api/am/store/v1/applications/876f8fd8
>> -269a-41db-b1cf-e4efe8a8426d/keys/PRODUCTION
>>
>> {
>>   "consumerKey": "xxxxxxxxxxxxxxxxxx",
>>   "consumerSecret": "yyyyyyyyyyyyyyyyyyy",
>>   "supportedGrantTypes": [
>>     "client-credentials", "password"
>>   ],
>>   "callbackUrl": "http://localhost/callback";,
>>   "keyType": "PRODUCTION"
>> }
>>
>> Seems we are thinking keyType as a resource. We will need to add a
> validation for keyType at  implementation layer. +1 for the approach.
>
Yeah we will need a validation since the only allowed key types are
PRODUCTION and SANDBOX.

>
>> 2. Get all keys
>>
>> GET /applications/{applicationId}/keys
>>
>>
>> *Request:*
>>
>> GET /applications/876f8fd8-269a-41db-b1cf-e4efe8a8426d/keys
>>
>>
>> *Response:*
>>
>> HTTP/1.1 200 OK
>> {
>> "count": 2,
>> "items": [
>>
>> {
>>   "consumerKey": "xxxxxxxxxxxxxxxxxx",
>>   "consumerSecret": "yyyyyyyyyyyyyyyyyyy",
>>   "supportedGrantTypes": [
>>     "client-credentials", "password"
>>   ],
>>   "callbackUrl": "http://localhost/callback";,
>>   "keyType": "PRODUCTION"
>> },
>>
>> {
>>   "consumerKey": "xxxxxxxxxxxxxxxxxx",
>>   "consumerSecret": "yyyyyyyyyyyyyyyyyyy",
>>   "supportedGrantTypes": [
>>     "client-credentials", "password"
>>   ],
>>   "callbackUrl": "http://localhost/callback";,
>>   "keyType": "SANDBOX"
>> }
>>
>> ]
>> }
>>
>>
>> 3. Get a single key detail
>>
>> GET /applications/{applicationId}/keys/{keyType}
>>
>> *Request*
>>
>> GET /applications/876f8fd8-269a-41db-b1cf-e4efe8a8426d/keys/PRODUCTION
>>
>>
>> *Response*
>>
>> HTTP/1.1 200 OK
>>
>> {
>>   "consumerKey": "xxxxxxxxxxxxxxxxxx",
>>   "consumerSecret": "yyyyyyyyyyyyyyyyyyy",
>>   "supportedGrantTypes": [
>>     "client-credentials", "password"
>>   ],
>>   "callbackUrl": "http://localhost/callback";,
>>   "keyType": "PRODUCTION"
>> }
>>
>> 4. Update a key
>>
>> PUT /applications/{applicationId}/keys/{keyType}
>>
>> *We will only allow updating supported grant types and callback URLs for
>> individual keys.*
>>
>> *Request*
>>
>> PUT /applications/876f8fd8-269a-41db-b1cf-e4efe8a8426d/keys/PRODUCTION
>>
>>
>> {
>>   "supportedGrantTypes": [
>>     "client-credentials"
>>   ],
>>   "callbackUrl": "http://localhost/callback-updated";,
>> }
>>
>> *Response:*
>>
>> HTTP/1.1 200 OK
>>
>> {
>>   "consumerKey": "xxxxxxxxxxxxxxxxxx",
>>   "consumerSecret": "yyyyyyyyyyyyyyyyyyy",
>>   "supportedGrantTypes": [
>>     "client-credentials"
>>   ],
>>   "callbackUrl": "http://localhost/callback-updated";,
>>   "keyType": "PRODUCTION"
>> }
>>
>>
>>
>> Thanks
>> Malintha
>>
>>
>>
>> On Wed, Jun 28, 2017 at 1:37 PM, Bhathiya Jayasekara <[email protected]>
>> wrote:
>>
>>> Hi all,
>>>
>>> As discussed in [1], I split generate keys operation into 2, and added
>>> "provide-keys" operation for semi-manual client registration. Here is the
>>> final list with sample requests and responses.
>>>
>>>
>>> POST  /applications/{applicationId}/generate-keys
>>>
>>> {
>>>   "keyType": "PRODUCTION",
>>>   "grantTypesToBeSupported": [
>>>     "client-credentials", "password"
>>>   ],
>>>   "callbackUrl": "http://localhost/callback"}
>>>
>>>
>>> Response
>>>
>>> {
>>>   "consumerKey": "xxxxxxxxxxxxxxxxxx",
>>>   "consumerSecret": "yyyyyyyyyyyyyyyyyyy",
>>>   "supportedGrantTypes": [
>>>     "client-credentials", "password"
>>>   ],
>>>   "callbackUrl": "http://localhost/callback";,
>>>   "keyType": "PRODUCTION"}
>>>
>>>
>>>
>>> POST  /applications/{applicationId}/provide-keys
>>>
>>> {
>>>   "consumerKey": "xxxxxxxxxxxxxxxxxxxx",
>>>   "consumerSecret": "yyyyyyyyyyyyyyyyyyy",
>>>   "keyType": "PRODUCTION"}
>>>
>>>
>>> Response
>>>
>>> {
>>>   "consumerKey": "xxxxxxxxxxxxxxxxxx",
>>>   "consumerSecret": "yyyyyyyyyyyyyyyyyyy",
>>>   "supportedGrantTypes": [
>>>     "client-credentials", "password"
>>>   ],
>>>   "callbackUrl": "http://localhost/callback";,
>>>   "keyType": "PRODUCTION"}
>>>
>>>
>>>
>>> POST  /applications/{applicationId}/generate-tokens
>>>
>>> {
>>>   "consumerKey": "xxxxxxxxxxxxxxxxxxxxx",
>>>   "consumerSecret": "yyyyyyyyyyyyyyyyyyyyyy",
>>>   "validityPeriod": 3600,
>>>   "scopes": "read write delete",
>>>   "revokeToken": "zzzzzzzzzzzzzzzzzzzzz"}
>>>
>>>
>>> Response
>>>
>>> {
>>>   "accessToken": "aaaaaaaaaaaaaaaaaaaaaaaaa",
>>>   "tokenScopes": "read write",
>>>   "validityTime": 3600}
>>>
>>>
>>>
>>> [1] [APIM][C5] Splitting "Generate Keys" operation in Store REST API
>>>
>>> Thanks,
>>> --
>>> *Bhathiya Jayasekara*
>>> *Associate Technical Lead,*
>>> *WSO2 inc., http://wso2.com <http://wso2.com>*
>>>
>>> *Phone: +94715478185 <+94%2071%20547%208185>*
>>> *LinkedIn: http://www.linkedin.com/in/bhathiyaj
>>> <http://www.linkedin.com/in/bhathiyaj>*
>>> *Twitter: https://twitter.com/bhathiyax <https://twitter.com/bhathiyax>*
>>> *Blog: http://movingaheadblog.blogspot.com
>>> <http://movingaheadblog.blogspot.com/>*
>>>
>>
>>
>>
>> --
>> Malintha Amarasinghe
>> Software Engineer
>> *WSO2, Inc. - lean | enterprise | middleware*
>> http://wso2.com/
>>
>> Mobile : +94 712383306 <+94%2071%20238%203306>
>>
>
>
>
> --
> Harsha Kumara
> Software Engineer, WSO2 Inc.
> Mobile: +94775505618 <+94%2077%20550%205618>
> Blog:harshcreationz.blogspot.com
>



-- 
Malintha Amarasinghe
Software Engineer
*WSO2, Inc. - lean | enterprise | middleware*
http://wso2.com/

Mobile : +94 712383306
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to