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.

>
> 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
Blog:harshcreationz.blogspot.com
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to