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