SlideShare a Scribd company logo
Modeling	
  REST	
  API’s	
  Behavior	
  
with	
  Text,	
  Graphics	
  or	
  Both?	
  
Ana	
  Ivanchikj,	
  Cesare	
  Pautasso
Università
della
Svizzera
italiana
RESTalk
DSLDI Workshop
2
Context
*	
  APIs	
  Evolution
*	
  REST	
  Design	
  Principles
*	
  RESTful	
  Conversations
*	
  Modeling	
  REST	
  APIs
RESTalk
RESTalk
*	
  Modeling	
  with	
  RESTalk
*	
  Targeted	
  Users
Modelling	
  Tool
*	
  Modelling	
  Tool	
  Design	
  Space
*	
  RESTalk Modeler	
  Current	
  State
*	
  RESTalk Modeler	
  Design	
  Space
Request
Response
Hyperlink URI
State Variable
Client-Server
Interaction With
Resource State Change
To:
Link: Hyperlink URI
Sending Message
Activity
III Multi-instanceLane
Introduced in ICWE poster paper
Call Request
Response
Hyperlink URI
+
Call Request
Sub-conversation
Request
Response
Hyperlink URI
OAS Link:
Request with additional
information and
OAS link response
SLA information
simulation input
Introduced in collaboration with University of Seville
Hyperlink flow with
multiple parameter values
*
Request
Response
Hyperlink URI
State Variable
Client-Server
Interaction With
Resource State Change
To:
Link:
Send
III MuLane
Introduced in ICWE poster paper
Request
Response
Hyperlink URI
State Variable
Client-Server
Interaction With
Resource State Change
To:
Link: Hyperlink URI
Sending Message
Activity
III Multi-instanceLane
Introduced in ICWE poster paper
Call Reques
Response
Hyperli
+
Call Req
Sub-conversation
Introduced in collaboration with Uni
Hyperlink flow with
multiple parameter values
*
Request
Response
Hyperlink URI
State Variable
Client-Server
Interaction With
Resource State Change
To:
Link: Hyperlink URI
Sending Message
Activity
III Multi-instanceLane
Introduced in ICWE poster paper
Call Request
Response
Hyperlink URI
+
Call Request
Sub-conversation
Requ
Resp
Request
inf
OAS
Introduced in collaboration with University of Seville
Hyperlink flow with
multiple parameter values
*
Request
Response
Hyperlink URI
State Variable
Client-Server
Interaction With
Resource State Change
To:
Link: Hyperlink URI
Sending Message
Activity
III Multi-instanceLane
Introduced in ICWE poster paper
Sub-conversation
Introduced in collaborat
Hyperlink fl
multiple par
*
Request
Response
Hyperlink URI
State Variable
Client-Server
Interaction With
Resource State Change
To:
Link: Hyperlink URI
Sending Message
Activity
III Multi-instanceLane
Introduced in ICWE poster paper
Call Request
Response
Hyperlink URI
+
Call Request
Sub-conversation
Request
Response
Hyperlink URI
OAS Link:
Request with additional
information and
OAS link response
SLA information
simulation input
Introduced in collaboration with University of Seville
Hyperlink flow with
multiple parameter values
*
Request
Response
Hyperlink URI
State Variable
Client-Server
Interaction With
Resource State Change
To:
Link: Hyperlink URI
Sending Message
Activity
III Multi-instanceLane
Introduced in ICWE poster paper
Call Request
Response
Hyperlink URI
+
Call Request
Sub-conversation
Request
Response
Hyperlink URI
OAS Link:
Request with additional
information and
OAS link response
SLA information
simulation input
Introduced in collaboration with University of Seville
Hyperlink flow with
multiple parameter values
*
Request
Hyperlink URI
Alternative
Response
Alternative
Response
Alternative Server Responses
Sequence flow
Hyperlink flow
Start event
End event
Timer event
Exclusive XOR gateway
Inclusive OR gateway
Parallel AND gateway
CONTEXT
3
*	
  APIs	
  Evolution
*	
  REST	
  design	
  principles
*	
  RESTful	
  Conversations
*	
  Modeling	
  RESTful	
  APIs
RESTalk
4
Open	
  Banking	
  Initiative
Microservices -­‐ Cloud
Mashups
Web	
  APIs’	
  Growth
Context	
  è RESTalk è Modelling	
  Tool
APIs	
  Evolutionè REST	
  Design	
  Principlesè RESTful	
  Conversations	
  è Modeling	
  RESTful	
  APIs
5
Web	
  APIs	
  Architectural	
  Styles
Source:	
  https://www.programmableweb.com
Context	
  è RESTalk è Modelling	
  Tool
APIs	
  Evolutionè REST	
  Design	
  Principlesè RESTful	
  Conversations	
  è Modeling	
  RESTful	
  APIs
6
Resource	
  addressability
Resource	
  representations
Uniform	
  interface
Statelessness
Hypermedia	
  as	
  the	
  engine	
  of	
  state
REpresentation State	
  Transfer	
  (REST)
-­‐ design	
  principles	
  -­‐
APIs	
  Evolutionè REST	
  Design	
  Principlesè RESTful	
  Conversationsè Modeling	
  RESTful	
  APIs
*	
  Roy	
  Thomas	
  Fielding.	
  Architectural	
  Styles	
  and	
  the	
  Design	
  of	
  Network-­‐based	
  Software	
  Architectures.	
  PhD	
  thesis,	
  
University	
  of	
  California,	
  Irvine,	
  2000.	
  
Context	
  è RESTalk è Modelling	
  Tool
7
REpresentation State	
  Transfer	
  (REST)
-­‐ design	
  principles	
  -­‐
Resource	
  addressability
APIs	
  Evolutionè REST	
  Design	
  Principlesè RESTful	
  Conversationsè Modeling	
  RESTful	
  APIs
Context	
  è RESTalk è Modelling	
  Tool
8
Uniform	
  interface
REpresentation State	
  Transfer	
  (REST)
-­‐ design	
  principles	
  -­‐
APIs	
  Evolutionè REST	
  Design	
  Principlesè RESTful	
  Conversationsè Modeling	
  RESTful	
  APIs
Context	
  è RESTalk è Modelling	
  Tool
9
Resource	
  representations
REpresentation State	
  Transfer	
  (REST)
-­‐ design	
  principles	
  -­‐
APIs	
  Evolutionè REST	
  Design	
  Principlesè RESTful	
  Conversationsè Modeling	
  RESTful	
  APIs
Context	
  è RESTalk è Modelling	
  Tool
10
REpresentation State	
  Transfer	
  (REST)
-­‐ design	
  principles	
  -­‐
Statelessness
APIs	
  Evolutionè REST	
  Design	
  Principlesè RESTful	
  Conversationsè Modeling	
  RESTful	
  APIs
Stateless
Server
Each	
  request	
  
must	
  contain	
  
all	
  information
No	
  stored	
  
context	
  on	
  
the	
  server
Client	
  has	
  the	
  
right	
  to	
  reuse	
  
response	
  data
Client
cache
Context	
  è RESTalk è Modelling	
  Tool
11
Hypermedia	
  as	
  the	
  engine	
  of	
  state	
  (HATEOS)
REpresentation State	
  Transfer	
  (REST)
-­‐ design	
  principles	
  -­‐
APIs	
  Evolutionè REST	
  Design	
  Principlesè RESTful	
  Conversationsè Modeling	
  RESTful	
  APIs
GET /account/12345 HTTP/1.1
HTTP/1.1 200 OK
<?xml version “1.0”?>
<account>
<account_number>12345</account_number>
<balance currency=“usd”>-25.00</balance>
<link rel=“deposit” href=“/account/12345/deposit”/>
</account>
Context	
  è RESTalk è Modelling	
  Tool
12
RESTful conversation
Resource
URI
Resource
URI
reference
Link	
  Relationships	
  (Hypermedia)
APIs	
  Evolutionè REST	
  Design	
  Principlesè RESTful	
  Conversationsè Modeling	
  RESTful	
  APIs
Context	
  è RESTalk è Modelling	
  Tool
13
RESTful conversation
Resource
URI
Resource
URI
Resource
URI
reference create
Link	
  Relationships	
  (Hypermedia)
APIs	
  Evolutionè REST	
  Design	
  Principlesè RESTful	
  Conversationsè Modeling	
  RESTful	
  APIs
Context	
  è RESTalk è Modelling	
  Tool
14
RESTful conversation
Resource
URI
Resource
URI
Resource
URI
POST	
  URIreference create
Link	
  Relationships	
  (Hypermedia)
APIs	
  Evolutionè REST	
  Design	
  Principlesè RESTful	
  Conversationsè Modeling	
  RESTful	
  APIs
Context	
  è RESTalk è Modelling	
  Tool
15
RESTful conversation
Resource
URI
Resource
URI
Resource
URI
POST	
  URIreference create
Link	
  Relationships	
  (Hypermedia)
201	
  Created
APIs	
  Evolutionè REST	
  Design	
  Principlesè RESTful	
  Conversationsè Modeling	
  RESTful	
  APIs
Context	
  è RESTalk è Modelling	
  Tool
Static	
  Modeling	
  of	
  RESTful	
  APIs
-­‐ Open	
  API	
  Specification	
  (OAS)	
  -­‐
16
Context	
  è RESTalk è Modelling	
  Tool
APIs	
  Evolutionè REST	
  Design	
  Principlesè RESTful	
  Conversationsè Modeling	
  RESTful	
  APIs
Source:	
  Li	
  et	
  al.	
  “Design	
  and	
  Describe	
  REST	
  API	
  without	
  Violating	
  
REST:	
  A	
  Petri	
  Net Based	
  Approach”,	
  In	
  proc.	
  ICWS	
  2011	
  
Source:	
  Rathod et	
  al.	
  “Structural	
  and	
  Behavioral	
  modeling	
  of	
  
RESTful	
  web	
  service	
  interface	
  using	
  UML”,	
  In	
  proc.	
  ISSP	
  2013	
  
Behavioral	
  Modeling	
  of	
  REST	
  APIs
-­‐ state	
  of	
  the	
  art	
  (academia)	
  -­‐
Source:	
  Nikaj et	
  al.	
  “Towards	
  Implementing	
  REST-­‐enabled	
  
Business	
  Process	
  Choreographies	
  ”,	
  In	
  proc.	
  BIS	
  2018	
  
17
Context	
  è RESTalk è Modelling	
  Tool
APIs	
  Evolutionè REST	
  Design	
  Principlesè RESTful	
  Conversationsè Modeling	
  RESTful	
  APIs
18
*	
  Modeling	
  with	
  RESTalk
*	
  Targeted	
  Users
RESTalk
Long	
  Running	
  Request	
  Pattern-­‐ Happy	
  path	
  -­‐
19
Create	
  job POST	
  	
  	
  /	
  job	
  	
  HTTP/1.1
HTTP/1.1	
  	
  	
  	
  	
  	
  	
  202	
  Accepted
Location:	
  	
  	
  	
  	
  	
  	
  /	
  job	
  /	
  42
POST /job
202 Accepted
Location: /job/42
GET /job/42/output
200 OK
Context è RESTalk è Modelling	
  Tool
client server
interaction
Modeling	
  with	
  RESTalkè Targeted	
  Users
Long	
  Running	
  Request	
  Pattern-­‐ Happy	
  path	
  -­‐
20
Create	
  job POST	
  	
  	
  /	
  job	
  	
  HTTP/1.1
HTTP/1.1	
  	
  	
  	
  	
  	
  	
  202	
  Accepted
Location:	
  	
  	
  	
  	
  	
  	
  /	
  job	
  /	
  42
Poll GET /	
  job	
  /	
  42	
  	
  HTTP/1.1
HTTP/1.1 200	
  OK
POST /job
202 Accepted
Location: /job/42
GET /job/42/output
200 OK
GET /job/42
200 OK
Context è RESTalk è Modelling	
  Tool
exclusive merge
gateway
Modeling	
  with	
  RESTalkè Targeted	
  Users
Long	
  Running	
  Request	
  Pattern-­‐ Happy	
  path	
  -­‐
21
Create	
  job POST	
  	
  	
  /	
  job	
  	
  HTTP/1.1
HTTP/1.1	
  	
  	
  	
  	
  	
  	
  202	
  Accepted
Location:	
  	
  	
  	
  	
  	
  	
  /	
  job	
  /	
  42
Poll GET /	
  job	
  /	
  42	
  	
  HTTP/1.1
HTTP/1.1 200	
  OK
GET /	
  job	
  /	
  42	
  	
  HTTP/1.1
HTTP/1.1 303	
  See	
  Other
Location:	
  	
  	
  	
  	
  	
  	
  	
  /	
  job	
  /	
  42	
  /	
  output
POST /job
202 Accepted
Location: /job/42
GET /job/42/output
200 OK
GET /job/42
200 OK 303 See Other
Location: /job/42/output
Context è RESTalk è Modelling	
  Tool
alternative
server response
Modeling	
  with	
  RESTalkè Targeted	
  Users
Long	
  Running	
  Request	
  Pattern-­‐ Happy	
  path	
  -­‐
22
Create	
  job POST	
  	
  	
  /	
  job	
  	
  HTTP/1.1
HTTP/1.1	
  	
  	
  	
  	
  	
  	
  202	
  Accepted
Location:	
  	
  	
  	
  	
  	
  	
  /	
  job	
  /	
  42
Poll GET /	
  job	
  /	
  42	
  	
  HTTP/1.1
HTTP/1.1 200	
  OK
Read	
  results GET /	
  job	
  /	
  42	
  /	
  output	
  HTTP/1.1
HTTP/1.1 200	
  OK
GET /	
  job	
  /	
  42	
  	
  HTTP/1.1
HTTP/1.1 303	
  See	
  Other
Location:	
  	
  	
  	
  	
  	
  	
  	
  /	
  job	
  /	
  42	
  /	
  output
POST /job
202 Accepted
Location: /job/42
GET /job/42/output
200 OK
GET /job/42
200 OK 303 See Other
Location: /job/42/output
GET /job/42/output
200 OK
Context è RESTalk è Modelling	
  Tool
hyperlink flow
Modeling	
  with	
  RESTalkè Targeted	
  Users
Long	
  Running	
  Request	
  Pattern-­‐ Happy	
  path	
  -­‐
23
Create	
  job POST	
  	
  	
  /	
  job	
  	
  HTTP/1.1
HTTP/1.1	
  	
  	
  	
  	
  	
  	
  202	
  Accepted
Location:	
  	
  	
  	
  	
  	
  	
  /	
  job	
  /	
  42
Poll GET /	
  job	
  /	
  42	
  	
  HTTP/1.1
HTTP/1.1 200	
  OK
Read	
  results GET /	
  job	
  /	
  42	
  /	
  output	
  HTTP/1.1
HTTP/1.1 200	
  OK
GET /	
  job	
  /	
  42	
  	
  HTTP/1.1
HTTP/1.1 303	
  See	
  Other
Location:	
  	
  	
  	
  	
  	
  	
  	
  /	
  job	
  /	
  42	
  /	
  output
POST /job
202 Accepted
Location: /job/42
GET /job/42/output
200 OK
GET /job/42
200 OK 303 See Other
Location: /job/42/output
GET /job/42/output
200 OK
Context è RESTalk è Modelling	
  Tool
end event
Modeling	
  with	
  RESTalkè Targeted	
  Users
Long	
  Running	
  Request	
  Pattern-­‐ Resending	
  the	
  request	
  -­‐
24
Create	
  job POST	
  	
  	
  /	
  job	
  	
  HTTP/1.1
Poll GET /	
  job	
  /	
  42	
  	
  HTTP/1.1
HTTP/1.1 200	
  OK
GET /	
  job	
  /	
  42	
  	
  HTTP/1.1
HTTP/1.1 303	
  See	
  Other
Location:	
  	
  	
  	
  	
  	
  	
  	
  /	
  job	
  /	
  42	
  /	
  output
Read	
  results GET /	
  job	
  /	
  42	
  /	
  output	
  HTTP/1.1
HTTP/1.1 200	
  OK
HTTP/1.1	
  	
  	
  	
  	
  	
  	
  202	
  Accepted
Location:	
  	
  	
  	
  	
  	
  	
  /	
  job	
  /	
  42
POST	
  	
  	
  /	
  job	
  	
  HTTP/1.1 POST /job
202 Accepted
Location: /job/42
GET /job/42/output
200 OK
GET /job/42
200 OK 303 See Other
Location: /job/42/output
GET /job/42/output
200 OK
timer event
Context è RESTalk è Modelling	
  Tool
Modeling	
  with	
  RESTalkè Targeted	
  Users
-­‐ Reading	
  the	
  results	
  -­‐
25
Create	
  job POST	
  	
  	
  /	
  job	
  	
  HTTP/1.1
Poll GET /	
  job	
  /	
  42	
  	
  HTTP/1.1
HTTP/1.1 200	
  OK
GET /	
  job	
  /	
  42	
  	
  HTTP/1.1
HTTP/1.1 303	
  See	
  Other
Location:	
  	
  	
  	
  	
  	
  	
  	
  /	
  job	
  /	
  42	
  /	
  output
Read	
  results GET /	
  job	
  /	
  42	
  /	
  output	
  HTTP/1.1
HTTP/1.1 200	
  OK
HTTP/1.1	
  	
  	
  	
  	
  	
  	
  202	
  Accepted
Location:	
  	
  	
  	
  	
  	
  	
  /	
  job	
  /	
  42
POST	
  	
  	
  /	
  job	
  	
  HTTP/1.1
GET /	
  job	
  /	
  42	
  /	
  output	
  HTTP/1.1
HTTP/1.1 200	
  OK
POST /job
202 Accepted
Location: /job/42
GET /job/42/output
200 OK
GET /job/42
200 OK 303 See Other
Location: /job/42/output
GET /job/42/output
200 OK
Long	
  Running	
  Request	
  Pattern
Context è RESTalk è Modelling	
  Tool
Modeling	
  with	
  RESTalkè Targeted	
  Users
26
-­‐ Deleting	
  the	
  output	
  resource	
  -­‐
Delete	
  output DELETE	
  	
  	
  /	
  job	
  /	
  42	
  /	
  output	
  	
  HTTP/1.1
HTTP/1.1	
  	
  	
  	
  	
  	
  	
  200	
  OK
Create	
  job POST	
  	
  	
  /	
  job	
  	
  HTTP/1.1
Poll GET /	
  job	
  /	
  42	
  	
  HTTP/1.1
HTTP/1.1 200	
  OK
GET /	
  job	
  /	
  42	
  	
  HTTP/1.1
HTTP/1.1 303	
  See	
  Other
Location:	
  	
  	
  	
  	
  	
  	
  	
  /	
  job	
  /	
  42	
  /	
  output
Read	
  results GET /	
  job	
  /	
  42	
  /	
  output	
  HTTP/1.1
HTTP/1.1 200	
  OK
HTTP/1.1	
  	
  	
  	
  	
  	
  	
  202	
  Accepted
Location:	
  	
  	
  	
  	
  	
  	
  /	
  job	
  /	
  42
POST	
  	
  	
  /	
  job	
  	
  HTTP/1.1
GET /	
  job	
  /	
  42	
  /	
  output	
  HTTP/1.1
HTTP/1.1 200	
  OK
DELETE /job/42/output
200 OK
POST /job
202 Accepted
Location: /job/42
GET /job/42/output
200 OK
GET /job/42
200 OK 303 See Other
Location: /job/42/output
GET /job/42/output
200 OK
Long	
  Running	
  Request	
  Pattern
client decision
exclusive split
Context è RESTalk è Modelling	
  Tool
Modeling	
  with	
  RESTalkè Targeted	
  Users
27
-­‐ Deleting	
  the	
  output	
  resource	
  -­‐
Delete	
  output DELETE	
  	
  	
  /	
  job	
  /	
  42	
  /	
  output	
  	
  HTTP/1.1
HTTP/1.1	
  	
  	
  	
  	
  	
  	
  200	
  OK
Create	
  job POST	
  	
  	
  /	
  job	
  	
  HTTP/1.1
Poll GET /	
  job	
  /	
  42	
  	
  HTTP/1.1
HTTP/1.1 200	
  OK
GET /	
  job	
  /	
  42	
  	
  HTTP/1.1
HTTP/1.1 303	
  See	
  Other
Location:	
  	
  	
  	
  	
  	
  	
  	
  /	
  job	
  /	
  42	
  /	
  output
HTTP/1.1	
  	
  	
  	
  	
  	
  	
  202	
  Accepted
Location:	
  	
  	
  	
  	
  	
  	
  /	
  job	
  /	
  42
POST	
  	
  	
  /	
  job	
  	
  HTTP/1.1
DELETE /job/42/output
200 OK
POST /job
202 Accepted
Location: /job/42
GET /job/42/output
200 OK
GET /job/42
200 OK 303 See Other
Location: /job/42/output
GET /job/42/output
200 OK
Long	
  Running	
  Request	
  Pattern
Context è RESTalk è Modelling	
  Tool
Modeling	
  with	
  RESTalkè Targeted	
  Users
28
Clean	
  up DELETE	
  	
  	
  /	
  job	
  /	
  42	
  	
  HTTP/1.1
HTTP/1.1	
  	
  	
  	
  	
  	
  	
  200	
  OK
Delete	
  output DELETE	
  	
  	
  /	
  job	
  /	
  42	
  /	
  output	
  	
  HTTP/1.1
HTTP/1.1	
  	
  	
  	
  	
  	
  	
  200	
  OK
Create	
  job POST	
  	
  	
  /	
  job	
  	
  HTTP/1.1
Poll GET /	
  job	
  /	
  42	
  	
  HTTP/1.1
HTTP/1.1 200	
  OK
GET /	
  job	
  /	
  42	
  	
  HTTP/1.1
HTTP/1.1 303	
  See	
  Other
Location:	
  	
  	
  	
  	
  	
  	
  	
  /	
  job	
  /	
  42	
  /	
  output
HTTP/1.1	
  	
  	
  	
  	
  	
  	
  202	
  Accepted
Location:	
  	
  	
  	
  	
  	
  	
  /	
  job	
  /	
  42
POST	
  	
  	
  /	
  job	
  	
  HTTP/1.1
-­‐ Deleting	
  the	
  job	
  resource	
  -­‐
DELETE /job/42/output
200 OK
GET /job/42/output
200 OK
GET /job/42
200 OK 303 See Other
Location: /job/42/output
GET /job/42/output
200 OK
DELETE /job/42
200 OK
POST /job
202 Accepted
Location: /job/42
Long	
  Running	
  Request	
  Pattern
Context è RESTalk è Modelling	
  Tool
Modeling	
  with	
  RESTalkè Targeted	
  Users
29
Create	
  job POST	
  	
  	
  /	
  job	
  	
  HTTP/1.1
HTTP/1.1	
  	
  	
  	
  	
  	
  	
  202	
  Accepted
Location:	
  	
  	
  	
  	
  	
  	
  /	
  job	
  /	
  42
POST	
  	
  	
  /	
  job	
  	
  HTTP/1.1
Delete	
  job DELETE	
  	
  	
  /	
  job	
  /	
  42	
  	
  HTTP/1.1
HTTP/1.1	
  	
  	
  	
  	
  	
  	
  200	
  OK
-­‐ Deleting	
  the	
  job	
  resource	
  -­‐
DELETE /job/42/output
200 OK
GET /job/42/output
200 OK
GET /job/42
200 OK 303 See Other
Location: /job/42/output
GET /job/42/output
200 OK
DELETE /job/42
200 OK
POST /job
202 Accepted
Location: /job/42
Long	
  Running	
  Request	
  Pattern
Context è RESTalk è Modelling	
  Tool
Modeling	
  with	
  RESTalkè Targeted	
  Users
Long	
  Running	
  Request	
  Pattern
30
Create	
  job POST	
  	
  	
  /	
  job	
  	
  HTTP/1.1
HTTP/1.1	
  	
  	
  	
  	
  	
  	
  202	
  Accepted
Location:	
  	
  	
  	
  	
  	
  	
  /	
  job	
  /	
  42
Poll GET /	
  job	
  /	
  42	
  	
  HTTP/1.1
HTTP/1.1 200	
  OK
Read	
  results GET /	
  job	
  /	
  42	
  /	
  output	
  HTTP/1.1
HTTP/1.1 200	
  OK
GET /	
  job	
  /	
  42	
  	
  HTTP/1.1
HTTP/1.1 303	
  See	
  Other
Location:	
  	
  	
  	
  	
  	
  	
  	
  /	
  job	
  /	
  42	
  /	
  output
POST /job
202 Accepted
Location: /job/42
GET /job/42/output
200 OK
GET /job/42
200 OK 303 See Other
Location: /job/42/output
GET /job/42/output
200 OK
Context è RESTalk è Modelling	
  Tool
Modeling	
  with	
  RESTalkè Targeted	
  Users
31
RESTful	
  API	
  Designer RESTful	
  API	
  Client
*	
  API	
  driven	
  development
*	
  Identifying	
  design	
  errors
-­‐ chatty	
  design
-­‐ missing	
  resources
*	
  Discussing	
  which	
  conversation	
  
patterns	
  to	
  use
*	
  Providing	
  reference	
  conversations
*	
  Analysis	
  based	
  on	
  mining	
  the	
  actual	
  
behavior
*	
  Decision	
  making	
  on	
  APIs	
  to	
  use
*	
  Understanding	
  the	
  required	
  
interactions	
  given	
  their	
  goal
*	
  Dependencies	
  and	
  bottlenecks	
  
due	
  to	
  SLA	
  restrictions
Targeted	
  Users
Context è RESTalk è Modelling	
  Tool
Modeling	
  with	
  RESTalkè Targeted	
  Users
32
38%	
  already	
  using	
  some	
  notation
88%	
  willing	
  to	
  use	
  RESTalk
Evaluated	
  the	
  need	
  in	
  industry	
  for	
  a	
  DSML
Modeling	
  with	
  RESTalkè Targeted	
  Users	
  è Exploratory Survey
Explorative	
  Survey
69%	
  asked	
  for	
  RESTalk tool	
  support
Context è RESTalk è Modelling	
  Tool
MODELLING	
  TOOL
33
*	
  Modelling	
  Tool	
  Design	
  Space
*	
  RESTalk Modeler	
  Current	
  State
*	
  RESTalk Modeler	
  Design	
  Space
RESTalk
34
Manual	
  Textual	
  Input
PlantUML
Context è RESTalk è Modelling	
  Tool
Modelling	
  Tool	
  Design	
  Spaceè RESTalk Modeler	
  Current	
  Stateè RESTalk Modeler	
  Design	
  Space
35
Manual	
  Textual	
  Input	
  with	
  Autocompletion
Chart	
  Mage
Context è RESTalk è Modelling	
  Tool
Modelling	
  Tool	
  Design	
  Spaceè RESTalk Modeler	
  Current	
  Stateè RESTalk Modeler	
  Design	
  Space
36
Manual	
  Graphical	
  Input
draw.io
Context è RESTalk è Modelling	
  Tool
Modelling	
  Tool	
  Design	
  Spaceè RESTalk Modeler	
  Current	
  Stateè RESTalk Modeler	
  Design	
  Space
37
Graphical	
  Input	
  with	
  Autocompletion
Online	
  Visual	
  Paradigm
Context è RESTalk è Modelling	
  Tool
Modelling	
  Tool	
  Design	
  Spaceè RESTalk Modeler	
  Current	
  Stateè RESTalk Modeler	
  Design	
  Space
38
Manual	
  Textual	
  and	
  Graphical	
  Input
websequencediagrams
Context è RESTalk è Modelling	
  Tool
Modelling	
  Tool	
  Design	
  Spaceè RESTalk Modeler	
  Current	
  Stateè RESTalk Modeler	
  Design	
  Space
39
Synchronized	
  Multiple	
  Representations
Ballerina
Context è RESTalk è Modelling	
  Tool
Modelling	
  Tool	
  Design	
  Spaceè RESTalk Modeler	
  Current	
  Stateè RESTalk Modeler	
  Design	
  Space
40
Visual	
  DSL	
  Modeler’s	
  Design	
  SpaceAutomaticManual
Textual	
  input Graphical input
Context è RESTalk è Modelling	
  Tool
Modelling	
  Tool	
  Design	
  Spaceè RESTalk Modeler	
  Current	
  Stateè RESTalk Modeler	
  Design	
  Space
41
RESTalk Modeler	
  Current	
  State	
  – Graphical
Palette	
  of	
  constructs	
  in	
  
Inkscape
Pros
-­‐ easy	
  to	
  add	
  new	
  constructs
-­‐ flexible	
  layout
Context è RESTalk è Modelling	
  Tool
Modelling	
  Tool	
  Design	
  Spaceè RESTalk Modeler	
  Current	
  Stateè RESTalk Modeler	
  Design	
  Space
42
POST /album
Parameter: ids?
200 OK
Parameter: id
GET /album/{{albumHash}}
200 OK
Parameter: id
POST /image
Parameter: album?
200 OK
Parameter: id
POST gallery/image/{{imageHash}}
Parameters: tagName
200 OK
POST /image/{{imageHash}}
200 OK
GET /album/{{albumHash}}/images
200 OK
Parameter: id
GET /image/{{imageHash}}
200 OK
PUT /album/{{albumHash}}
Parameter: ids
200 OK
DELETE /album/{{albumHash}}
200 OK
POST /album/{{albumeHash}}
Parameter: ids
200 OK
POST /album/{{albumHash}}/add
Parameters: deletehashes
200 OK
POST /album/{{albumHash}}/remove_images
Parameters: ids
200 OK
POST /image/{{imageHash}}/favorite
200 OK
PUT /album/{{albumHash}}/favorite
Parameter: ids
200 OK
POST gallery/tags/{{galleryHash}}
Parameter: tagName
200 OK
DELETE /image/{{imageHash}}
200 OK
POST gallery/album/{{albumHash}}
Parameters: tagName
200 OK
DELETE gallery/{{galleryHash}}
200 OK
GET /account/me/images
200 OK
Parameter: id
Authenticated user - Publishing and managing own content
POST account/me/follow/tag/{{tagName}}
200 OK
200 OK
DELETE account/me/follow/tag/{{tagName}}
GET /account/me/albums
200 OK
Parameter: id
GET /gallery/search/q={{parameter:searchItem}}
200 OK
Parameter: id
Imgur API
POST /album
Parameter: ids?
200 OK
Parameter: id
GET /album/{{albumHash}}
200 OK
Parameter: id
POST /image
Parameter: album?
200 OK
Parameter: id
GET /album/{{albumHash}}/images
200 OK
Parameter: id
albumHash}}
s
POST /album/{{albumeHash}}
Parameter: ids
200 OK
POST /album/{{albumHash}}/add
Parameters: deletehashes
200 OK
GET /account/me/images
200 OK
Parameter: id
Authenticated user - Publishing and managing own content
GET /account/me/albums
200 OK
Parameter: id
GET /gallery/search/q={
200 OK
Parameter: id
Context è RESTalk è Modelling	
  Tool
Modelling	
  Tool	
  Design	
  Spaceè RESTalk Modeler	
  Current	
  Stateè RESTalk Modeler	
  Design	
  Space
43
RESTalk Modeler	
  Current	
  State	
  – Graphical
Palette	
  of	
  constructs	
  in	
  
Inkscape
Toolingè Evaluationè Timeline
Cons
-­‐ manual	
  layout	
  
-­‐ no	
  semantics
-­‐ no	
  suggestions	
  of	
  feasible	
  
successive	
  constructs
-­‐ no	
  model	
  correctness	
  
verification
Pros
-­‐ easy	
  to	
  add	
  new	
  constructs
-­‐ flexible	
  layout
Context è RESTalk è Modelling	
  Tool
44
Textual	
  input	
  – possible	
  
sequences	
  of	
  requests	
  
Cons
-­‐ fixed	
  layout	
  
-­‐ parallelism	
  not	
  yet	
  supported
-­‐ hypermedia	
  not	
  yet	
  supported
Pros
-­‐ use	
  cases	
  based
-­‐ intuitive	
  syntax
-­‐ actual	
  logs	
  can	
  be	
  used
RESTalk Modeler	
  Current	
  State	
  – Textual
Context è RESTalk è Modelling	
  Tool
Modelling	
  Tool	
  Design	
  Spaceè RESTalk Modeler	
  Current	
  Stateè RESTalk Modeler	
  Design	
  Space
45
RESTalk Modeler	
  Design	
  SpaceAutomaticManual
Textual	
  input Graphical input
?
Where	
  do	
  we	
  go	
  from	
  here?
*	
  Use	
  OAS
*as-­‐is	
  
-­‐ draw	
  only	
  the	
  nodes?
-­‐ use	
  links	
  to	
  draw	
  edges?
Context è RESTalk è Modelling	
  Tool
Modelling	
  Tool	
  Design	
  Spaceè RESTalk Modeler	
  Current	
  Stateè RESTalk Modeler	
  Design	
  Space
Open	
  API	
  Specification	
  (OAS)
46
Context	
  è RESTalk è Modelling	
  Tool
GET /users/{username}
200 OK
Parameter:repoId
GET /repo/{repoId}
200 OK
Modelling	
  Tool	
  Design	
  Spaceè RESTalk Modeler	
  Current	
  Stateè RESTalk Modeler	
  Design	
  Space
Open	
  API	
  Specification	
  (OAS)
47
Context	
  è RESTalk è Modelling	
  Tool
GET /users/{username}
200 OK
Parameter:repoId
GET /repo/{repoId}
200 OK
Modelling	
  Tool	
  Design	
  Spaceè RESTalk Modeler	
  Current	
  Stateè RESTalk Modeler	
  Design	
  Space
48
GET gallery/{{section}}
200 OK
Parameter: id
name
GET gallery/t/{{tagName}}
200 OK
Parameter: id
GET tags
200 OK
Parameter: name
GET gallery/tag_info/{{tagName}}
200 OK
GET gallery/{{galleryHash}}/tags
200 OK
Parameter: name
GET gallery/search/q={{searchItem}}
200 OK
Parameter: id
name
GET gallery/{{galleryHash}}/votes
200 OK
GET gallery/{{galleryHash}}/comments
200 OK
Parameter: id
GET gallery/{{galleryHash}}/comment/{{commentId}}
200 OK
POST gallery/image/{{galleryHash}}/report
200 OK
POST gallery/{{galleryHash}}/vote/{{vote}}
200 OK
POST gallery/{{galleryHash}}/comment
200 OK
Parameter: id
DELETE comment/{{commentId}}
POST comment/{{commentId}}/vote/{{vote}}
200 OK
200 OK
POST comment/{{commentId}}/report
Authenticated user - Discovering and interacting with other users' content
200 OK 403 Forbidden
POST /comment/{{commentId}}
Parameter: image_id
200 OK
Parameter: id
GET /image/{{imageHash}}
200 OK
GET /album/{{albumHash}}
200 OK
Parameter: id
POST /album
Parameter: ids?
200 OK
Parameter: id
GET /album/{{albumHash}}
200 OK
Parameter: id
POST /image
Parameter: album?
200 OK
Parameter: id
POST gallery/image/{{imageHash}}
Parameters: tagName
200 OK
POST /image/{{imageHash}}
200 OK
GET /album/{{albumHash}}/images
200 OK
Parameter: id
GET /image/{{imageHash}}
200 OK
PUT /album/{{albumHash}}
Parameter: ids
200 OK
DELETE /album/{{albumHash}}
200 OK
POST /album/{{albumeHash}}
Parameter: ids
200 OK
POST /album/{{albumHash}}/add
Parameters: deletehashes
200 OK
POST /album/{{albumHash}}/remove_images
Parameters: ids
200 OK
POST /image/{{imageHash}}/favorite
200 OK
PUT /album/{{albumHash}}/favorite
Parameter: ids
200 OK
POST gallery/tags/{{galleryHash}}
Parameter: tagName
200 OK
DELETE /image/{{imageHash}}
200 OK
POST gallery/album/{{albumHash}}
Parameters: tagName
200 OK
DELETE gallery/{{galleryHash}}
200 OK
GET /account/me/images
200 OK
Parameter: id
Authenticated user - Publishing and managing own content
POST account/me/follow/tag/{{tagName}}
200 OK
200 OK
DELETE account/me/follow/tag/{{tagName}}
GET /account/me/albums
200 OK
Parameter: id
GET /gallery/search/q={{parameter:searchItem}}
200 OK
Parameter: id
GET /account/available_avatars
200 OK
POST /album
Parameter: ids?
200 OK
Parameter: id
deletehash
GET /album/{{albumHash}}
200 OK
Parameter: id
POST /image
Parameter: deletehashAlbum?
200 OK
Parameter: id
deletehash
DELETE /image/{{imageDeleteHash}}
200 OK
POST /image/{{imageDeleteHash}}
200 OK
GET /album/{{albumHash}}/images
200 OK
Parameter: id
GET /image/{{imageHash}}
200 OK
PUT /album/{{albumHash}}
Parameter: deletehashes
200 OK
DELETE /album/{{albumDeleteHash}}
200 OK
POST /album/{{albumDeleteHash}}
Parameter: delethashes
200 OK
POST /album/{{albumDeleteHash}}/add
Parameters: deletehashes
200 OK
POST /album/{{albumDeleteHash}}/remove_images
Parameters: ids
200 OK
GET gallery/{{section}}
200 OK
Parameter: id
GET gallery/t/{{tagName}}
200 OK
Parameter: id
GET tags
200 OK
GET gallery/tag_info/{{tagName}}
200 OK
GET gallery/{{galleryHash}}/tags
200 OK
GET gallery/search/q={{searchItem}}
200 OK
Parameter: id
GET gallery/{{galleryHash}}/votes
200 OK
GET gallery/{{galleryHash}}/comments
200 OK
Parameter: id
GET gallery/{{galleryHash}}/comment/{{commentId}}
200 OK
403 Forbidden
What type?
Unauthenticated user conversation
Image
Album
Post
POST /album
Parameter: ids?
200 OK
Parameter: id
GET /album/{{albumHash}}
200 OK
Parameter: id
POST /image
Parameter: album?
200 OK
Parameter: id
GET /album/{{albumHash}}/images
200 OK
Parameter: id
PUT /album/{{albumHash}}
Parameter: ids
200 OK
DELETE /album/{{albumHash}}
200 OK
POST /album/{{albumeHash}}
Parameter: ids
200 OK
POST /album/{{albumHash}}/add
Parameters: deletehashes
200 OK
POST /album/{{albumHash}}/remove_images
Parameters: ids
200 OK
PUT /album/{{albumHash}}/favorite
Parameter: ids
200 OK
POST gallery/tags/{{galleryHash}}
Parameter: tagName
200 OK
POST gallery/album/{{albumHash}}
Parameters: tagName
200 OK
DELETE gallery/{{galleryHash}}
200 OK
GET /account/me/images
200 OK
Parameter: id
Authenticated user - Publishing and managing own content
GET /account/me/albums
200 OK
Parameter: id
GET /gallery/search/q={{parameter:
200 OK
Parameter: id
GET /a
200 O
POST /album
Parameter: ids?
200 OK
Parameter: id
deletehash
POST /image
Parameter: deletehashAlbum?
200 OK
Parameter: id
deletehash
GET gallery/{{section}}
200 OK
Parameter: id
GET gallery/t/{{tagName}}
200 OK
Parameter: id
GET tags
200 OK
GET gallery/tag_info/{{tagName}}
200 OK
GET gallery/{{galleryHash}}/tags
200 OK
GET gallery/search/q={{searchItem}}
200 OK
Parameter: id
GET gallery/{{galleryHash}}/votes
200 OK
GET gallery/{{galleryHash}}/comments
What type?
Unauthenticated user conversation
Image
Album
Post
GET gallery/{{section}}
200 OK
Parameter: id
name
GET gallery/t/{{tagName}}
200 OK
Parameter: id
GET tags
200 OK
Parameter: name
GET gallery/tag_info/{{tagName}}
200 OK
GET gallery/{{galleryHash}}/tags
200 OK
Parameter: name
GET gallery/search/q={{searchItem}}
200 OK
Parameter: id
name
GET gallery/{{galleryHash}}/votes
200 OK
GET gallery/{{galleryHash}}/comments
200 OK
POST gallery/image/{{galleryHash}}/report
200 OK
POST gallery/{{galleryHash}}/vote/{{vote}}
200 OK
/{{galleryHash}}/comment
Authenticated user - Discovering and interacting with other users' content
GET /image/{{imageHash}}
200 OK
GET /album/{{albumHash}}
200 OK
Parameter: id
Imgur API
How	
  do	
  we	
  split	
  the	
  graph	
  
so	
  that	
  RESTalk can	
  scale?
Context è RESTalk è Modelling	
  Tool
Modelling	
  Tool	
  Design	
  Spaceè RESTalk Modeler	
  Current	
  Stateè RESTalk Modeler	
  Design	
  Space
49
RESTalk Modeler	
  Design	
  SpaceAutomaticManual
Textual	
  input Graphical input
?
Where	
  do	
  we	
  go	
  from	
  here?
*	
  Use	
  OAS
*as-­‐is	
  
-­‐ draw	
  only	
  the	
  nodes?
-­‐ use	
  links	
  to	
  draw	
  edges?
*extend	
  it	
  
-­‐ state	
  use	
  cases?
Context è RESTalk è Modelling	
  Tool
Modelling	
  Tool	
  Design	
  Spaceè RESTalk Modeler	
  Current	
  Stateè RESTalk Modeler	
  Design	
  Space
50
RESTalk Modeler	
  Design	
  SpaceAutomaticManual
Textual	
  input Graphical input
?
Where	
  do	
  we	
  go	
  from	
  here?
*	
  Use	
  OAS
*as-­‐is	
  
-­‐ draw	
  only	
  the	
  nodes?
-­‐ use	
  links	
  to	
  draw	
  edges?
*extend	
  it	
  
-­‐ state	
  use	
  cases?
*	
  Add	
  a	
  stencil	
  in	
  an	
  
existing	
  	
  editor	
  (e.g.,	
  
draw.io)?
Context è RESTalk è Modelling	
  Tool
Modelling	
  Tool	
  Design	
  Spaceè RESTalk Modeler	
  Current	
  Stateè RESTalk Modeler	
  Design	
  Space
51
RESTalk Modeler	
  Design	
  SpaceAutomaticManual
Textual	
  input Graphical input
?
Where	
  do	
  we	
  go	
  from	
  here?
*	
  Use	
  OAS
*as-­‐is	
  
-­‐ draw	
  only	
  the	
  nodes?
-­‐ use	
  links	
  to	
  draw	
  edges?
*extend	
  it	
  
-­‐ state	
  use	
  cases?
*	
  Build	
  a	
  fully	
  fledged	
  editor
-­‐ online?
-­‐ based	
  on	
  existing	
  IDE?
-­‐ click	
  for	
  details?
-­‐ link	
  to	
  OAS/docs	
  for	
  	
  	
  	
  	
  	
  	
  
details?
*	
  Add	
  a	
  stencil	
  in	
  an	
  
existing	
  	
  editor	
  (e.g.,	
  
draw.io)?
Context è RESTalk è Modelling	
  Tool
Modelling	
  Tool	
  Design	
  Spaceè RESTalk Modeler	
  Current	
  Stateè RESTalk Modeler	
  Design	
  Space
52
RESTalk Modeler	
  Design	
  SpaceAutomaticManual
Textual	
  input Graphical input
?
Where	
  do	
  we	
  go	
  from	
  here?
*	
  Use	
  OAS
*as-­‐is	
  
-­‐ draw	
  only	
  the	
  nodes?
-­‐ use	
  links	
  to	
  draw	
  edges?
*extend	
  it	
  
-­‐ state	
  use	
  cases? *	
  Modify	
  OAS	
  when	
  
modifying	
  the	
  diagram?
*	
  Build	
  a	
  fully	
  fledged	
  editor
-­‐ online?
-­‐ based	
  on	
  existing	
  IDE?
-­‐ click	
  for	
  details?
-­‐ link	
  to	
  OAS/docs	
  for	
  	
  	
  	
  	
  	
  	
  
details?
*	
  Add	
  a	
  stencil	
  in	
  an	
  
existing	
  	
  editor	
  (e.g.,	
  
draw.io)?
Context è RESTalk è Modelling	
  Tool
Modelling	
  Tool	
  Design	
  Spaceè RESTalk Modeler	
  Current	
  Stateè RESTalk Modeler	
  Design	
  Space
53
How	
  do	
  we	
  prioritize?	
  
RESTful	
  API	
  Designer RESTful	
  API	
  Client
RESTalk
Do	
  we	
  care	
  who	
  our	
  targeted	
  users	
  are?	
  
Context è RESTalk è Modelling	
  Tool
Modelling	
  Tool	
  Design	
  Spaceè RESTalk Modeler	
  Current	
  Stateè RESTalk Modeler	
  Design	
  Space
54
BPMN	
  Editor	
  – only	
  Graphical
Signavio
Context è RESTalk è Modelling	
  Tool
Modelling	
  Tool	
  Design	
  Spaceè RESTalk Modeler	
  Current	
  Stateè RESTalk Modeler	
  Design	
  Space
55
RESTalk Modeler	
  Design	
  SpaceAutomaticManual
Textual	
  input Graphical input
?
Where	
  do	
  we	
  go	
  from	
  here?
Context è RESTalk è Modelling	
  Tool
Modelling	
  Tool	
  Design	
  Spaceè RESTalk Modeler	
  Current	
  Stateè RESTalk Modeler	
  Design	
  Space
Which	
  factors	
  should	
  we	
  consider?
-­‐ novelty	
  of	
  the	
  solution
-­‐ feasibility	
  of	
  the	
  solution
-­‐ development	
  time
-­‐ targeted	
  users
RESTalk
AutomaticManual
Textual	
  input Graphical input
*	
  Use	
  OAS
*as-­‐is	
  
*extend	
  it	
  
*	
  Build	
  a	
  fully	
  
fledged	
  editor
*	
  Add	
  a	
  stencil	
  in	
  an	
  
existing	
  editor
*	
  Synchronize	
  OAS	
  
and	
  the	
  diagram?
*	
  Improve	
  our	
  
“miner”	
  tool
THANK	
  YOU	
  FOR	
  YOUR	
  ATTENTION!!!
RESTalk

More Related Content

DOCX
Mallikharjun_Vemana
DOC
ChandanResume
PPTX
CSS Architecture: Writing Maintainable CSS
PDF
How Bankwest delivers business value through modern RESTful APIs with Java in...
PPTX
Austin API Summit 2018: Are REST APIs Still Relevant Today?
PDF
APIdays Paris 2018 - Putting the Kit back in SDKs Darrel Miller, Senior Softw...
DOC
Rohit_Kumar_Resume
PDF
External - IT Specialist
Mallikharjun_Vemana
ChandanResume
CSS Architecture: Writing Maintainable CSS
How Bankwest delivers business value through modern RESTful APIs with Java in...
Austin API Summit 2018: Are REST APIs Still Relevant Today?
APIdays Paris 2018 - Putting the Kit back in SDKs Darrel Miller, Senior Softw...
Rohit_Kumar_Resume
External - IT Specialist

Similar to Modeling REST API's Behaviour with Text, Graphics or Both? (20)

PDF
Restful风格ž„web服务架构
PDF
REST & API Management with the WSO2 ESB
PDF
Rest api webinar(3)
PDF
REST API Recommendations
PDF
Writing RESTful Web Services
PPTX
REST & RESTful APIs: The State of Confusion
PPTX
Overview of REST - Raihan Ullah
PDF
What is REST?
PPTX
RESTful Services
PPTX
REST != WebAPI
PDF
RESTful applications: The why and how by Maikel Mardjan
PPTX
RESTful Web Services
PDF
PPSX
Restful web services rule financial
PDF
Api design best practice
PPTX
REST & RESTful Web Services
PDF
APIs Design - Creation - Management.pdf
PPTX
REST Presentation
PPTX
Rest APIs Training
PPTX
REST and RESTful Services
Restful风格ž„web服务架构
REST & API Management with the WSO2 ESB
Rest api webinar(3)
REST API Recommendations
Writing RESTful Web Services
REST & RESTful APIs: The State of Confusion
Overview of REST - Raihan Ullah
What is REST?
RESTful Services
REST != WebAPI
RESTful applications: The why and how by Maikel Mardjan
RESTful Web Services
Restful web services rule financial
Api design best practice
REST & RESTful Web Services
APIs Design - Creation - Management.pdf
REST Presentation
Rest APIs Training
REST and RESTful Services
Ad

Recently uploaded (20)

PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
sap open course for s4hana steps from ECC to s4
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
KodekX | Application Modernization Development
PPT
Teaching material agriculture food technology
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
Cloud computing and distributed systems.
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPTX
Big Data Technologies - Introduction.pptx
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Encapsulation theory and applications.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Building Integrated photovoltaic BIPV_UPV.pdf
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Unlocking AI with Model Context Protocol (MCP)
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
sap open course for s4hana steps from ECC to s4
Programs and apps: productivity, graphics, security and other tools
KodekX | Application Modernization Development
Teaching material agriculture food technology
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Cloud computing and distributed systems.
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Big Data Technologies - Introduction.pptx
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Encapsulation theory and applications.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Ad

Modeling REST API's Behaviour with Text, Graphics or Both?

  • 1. Modeling  REST  API’s  Behavior   with  Text,  Graphics  or  Both?   Ana  Ivanchikj,  Cesare  Pautasso Università della Svizzera italiana RESTalk DSLDI Workshop
  • 2. 2 Context *  APIs  Evolution *  REST  Design  Principles *  RESTful  Conversations *  Modeling  REST  APIs RESTalk RESTalk *  Modeling  with  RESTalk *  Targeted  Users Modelling  Tool *  Modelling  Tool  Design  Space *  RESTalk Modeler  Current  State *  RESTalk Modeler  Design  Space Request Response Hyperlink URI State Variable Client-Server Interaction With Resource State Change To: Link: Hyperlink URI Sending Message Activity III Multi-instanceLane Introduced in ICWE poster paper Call Request Response Hyperlink URI + Call Request Sub-conversation Request Response Hyperlink URI OAS Link: Request with additional information and OAS link response SLA information simulation input Introduced in collaboration with University of Seville Hyperlink flow with multiple parameter values * Request Response Hyperlink URI State Variable Client-Server Interaction With Resource State Change To: Link: Send III MuLane Introduced in ICWE poster paper Request Response Hyperlink URI State Variable Client-Server Interaction With Resource State Change To: Link: Hyperlink URI Sending Message Activity III Multi-instanceLane Introduced in ICWE poster paper Call Reques Response Hyperli + Call Req Sub-conversation Introduced in collaboration with Uni Hyperlink flow with multiple parameter values * Request Response Hyperlink URI State Variable Client-Server Interaction With Resource State Change To: Link: Hyperlink URI Sending Message Activity III Multi-instanceLane Introduced in ICWE poster paper Call Request Response Hyperlink URI + Call Request Sub-conversation Requ Resp Request inf OAS Introduced in collaboration with University of Seville Hyperlink flow with multiple parameter values * Request Response Hyperlink URI State Variable Client-Server Interaction With Resource State Change To: Link: Hyperlink URI Sending Message Activity III Multi-instanceLane Introduced in ICWE poster paper Sub-conversation Introduced in collaborat Hyperlink fl multiple par * Request Response Hyperlink URI State Variable Client-Server Interaction With Resource State Change To: Link: Hyperlink URI Sending Message Activity III Multi-instanceLane Introduced in ICWE poster paper Call Request Response Hyperlink URI + Call Request Sub-conversation Request Response Hyperlink URI OAS Link: Request with additional information and OAS link response SLA information simulation input Introduced in collaboration with University of Seville Hyperlink flow with multiple parameter values * Request Response Hyperlink URI State Variable Client-Server Interaction With Resource State Change To: Link: Hyperlink URI Sending Message Activity III Multi-instanceLane Introduced in ICWE poster paper Call Request Response Hyperlink URI + Call Request Sub-conversation Request Response Hyperlink URI OAS Link: Request with additional information and OAS link response SLA information simulation input Introduced in collaboration with University of Seville Hyperlink flow with multiple parameter values * Request Hyperlink URI Alternative Response Alternative Response Alternative Server Responses Sequence flow Hyperlink flow Start event End event Timer event Exclusive XOR gateway Inclusive OR gateway Parallel AND gateway
  • 3. CONTEXT 3 *  APIs  Evolution *  REST  design  principles *  RESTful  Conversations *  Modeling  RESTful  APIs RESTalk
  • 4. 4 Open  Banking  Initiative Microservices -­‐ Cloud Mashups Web  APIs’  Growth Context  è RESTalk è Modelling  Tool APIs  Evolutionè REST  Design  Principlesè RESTful  Conversations  è Modeling  RESTful  APIs
  • 5. 5 Web  APIs  Architectural  Styles Source:  https://www.programmableweb.com Context  è RESTalk è Modelling  Tool APIs  Evolutionè REST  Design  Principlesè RESTful  Conversations  è Modeling  RESTful  APIs
  • 6. 6 Resource  addressability Resource  representations Uniform  interface Statelessness Hypermedia  as  the  engine  of  state REpresentation State  Transfer  (REST) -­‐ design  principles  -­‐ APIs  Evolutionè REST  Design  Principlesè RESTful  Conversationsè Modeling  RESTful  APIs *  Roy  Thomas  Fielding.  Architectural  Styles  and  the  Design  of  Network-­‐based  Software  Architectures.  PhD  thesis,   University  of  California,  Irvine,  2000.   Context  è RESTalk è Modelling  Tool
  • 7. 7 REpresentation State  Transfer  (REST) -­‐ design  principles  -­‐ Resource  addressability APIs  Evolutionè REST  Design  Principlesè RESTful  Conversationsè Modeling  RESTful  APIs Context  è RESTalk è Modelling  Tool
  • 8. 8 Uniform  interface REpresentation State  Transfer  (REST) -­‐ design  principles  -­‐ APIs  Evolutionè REST  Design  Principlesè RESTful  Conversationsè Modeling  RESTful  APIs Context  è RESTalk è Modelling  Tool
  • 9. 9 Resource  representations REpresentation State  Transfer  (REST) -­‐ design  principles  -­‐ APIs  Evolutionè REST  Design  Principlesè RESTful  Conversationsè Modeling  RESTful  APIs Context  è RESTalk è Modelling  Tool
  • 10. 10 REpresentation State  Transfer  (REST) -­‐ design  principles  -­‐ Statelessness APIs  Evolutionè REST  Design  Principlesè RESTful  Conversationsè Modeling  RESTful  APIs Stateless Server Each  request   must  contain   all  information No  stored   context  on   the  server Client  has  the   right  to  reuse   response  data Client cache Context  è RESTalk è Modelling  Tool
  • 11. 11 Hypermedia  as  the  engine  of  state  (HATEOS) REpresentation State  Transfer  (REST) -­‐ design  principles  -­‐ APIs  Evolutionè REST  Design  Principlesè RESTful  Conversationsè Modeling  RESTful  APIs GET /account/12345 HTTP/1.1 HTTP/1.1 200 OK <?xml version “1.0”?> <account> <account_number>12345</account_number> <balance currency=“usd”>-25.00</balance> <link rel=“deposit” href=“/account/12345/deposit”/> </account> Context  è RESTalk è Modelling  Tool
  • 12. 12 RESTful conversation Resource URI Resource URI reference Link  Relationships  (Hypermedia) APIs  Evolutionè REST  Design  Principlesè RESTful  Conversationsè Modeling  RESTful  APIs Context  è RESTalk è Modelling  Tool
  • 13. 13 RESTful conversation Resource URI Resource URI Resource URI reference create Link  Relationships  (Hypermedia) APIs  Evolutionè REST  Design  Principlesè RESTful  Conversationsè Modeling  RESTful  APIs Context  è RESTalk è Modelling  Tool
  • 14. 14 RESTful conversation Resource URI Resource URI Resource URI POST  URIreference create Link  Relationships  (Hypermedia) APIs  Evolutionè REST  Design  Principlesè RESTful  Conversationsè Modeling  RESTful  APIs Context  è RESTalk è Modelling  Tool
  • 15. 15 RESTful conversation Resource URI Resource URI Resource URI POST  URIreference create Link  Relationships  (Hypermedia) 201  Created APIs  Evolutionè REST  Design  Principlesè RESTful  Conversationsè Modeling  RESTful  APIs Context  è RESTalk è Modelling  Tool
  • 16. Static  Modeling  of  RESTful  APIs -­‐ Open  API  Specification  (OAS)  -­‐ 16 Context  è RESTalk è Modelling  Tool APIs  Evolutionè REST  Design  Principlesè RESTful  Conversationsè Modeling  RESTful  APIs
  • 17. Source:  Li  et  al.  “Design  and  Describe  REST  API  without  Violating   REST:  A  Petri  Net Based  Approach”,  In  proc.  ICWS  2011   Source:  Rathod et  al.  “Structural  and  Behavioral  modeling  of   RESTful  web  service  interface  using  UML”,  In  proc.  ISSP  2013   Behavioral  Modeling  of  REST  APIs -­‐ state  of  the  art  (academia)  -­‐ Source:  Nikaj et  al.  “Towards  Implementing  REST-­‐enabled   Business  Process  Choreographies  ”,  In  proc.  BIS  2018   17 Context  è RESTalk è Modelling  Tool APIs  Evolutionè REST  Design  Principlesè RESTful  Conversationsè Modeling  RESTful  APIs
  • 18. 18 *  Modeling  with  RESTalk *  Targeted  Users RESTalk
  • 19. Long  Running  Request  Pattern-­‐ Happy  path  -­‐ 19 Create  job POST      /  job    HTTP/1.1 HTTP/1.1              202  Accepted Location:              /  job  /  42 POST /job 202 Accepted Location: /job/42 GET /job/42/output 200 OK Context è RESTalk è Modelling  Tool client server interaction Modeling  with  RESTalkè Targeted  Users
  • 20. Long  Running  Request  Pattern-­‐ Happy  path  -­‐ 20 Create  job POST      /  job    HTTP/1.1 HTTP/1.1              202  Accepted Location:              /  job  /  42 Poll GET /  job  /  42    HTTP/1.1 HTTP/1.1 200  OK POST /job 202 Accepted Location: /job/42 GET /job/42/output 200 OK GET /job/42 200 OK Context è RESTalk è Modelling  Tool exclusive merge gateway Modeling  with  RESTalkè Targeted  Users
  • 21. Long  Running  Request  Pattern-­‐ Happy  path  -­‐ 21 Create  job POST      /  job    HTTP/1.1 HTTP/1.1              202  Accepted Location:              /  job  /  42 Poll GET /  job  /  42    HTTP/1.1 HTTP/1.1 200  OK GET /  job  /  42    HTTP/1.1 HTTP/1.1 303  See  Other Location:                /  job  /  42  /  output POST /job 202 Accepted Location: /job/42 GET /job/42/output 200 OK GET /job/42 200 OK 303 See Other Location: /job/42/output Context è RESTalk è Modelling  Tool alternative server response Modeling  with  RESTalkè Targeted  Users
  • 22. Long  Running  Request  Pattern-­‐ Happy  path  -­‐ 22 Create  job POST      /  job    HTTP/1.1 HTTP/1.1              202  Accepted Location:              /  job  /  42 Poll GET /  job  /  42    HTTP/1.1 HTTP/1.1 200  OK Read  results GET /  job  /  42  /  output  HTTP/1.1 HTTP/1.1 200  OK GET /  job  /  42    HTTP/1.1 HTTP/1.1 303  See  Other Location:                /  job  /  42  /  output POST /job 202 Accepted Location: /job/42 GET /job/42/output 200 OK GET /job/42 200 OK 303 See Other Location: /job/42/output GET /job/42/output 200 OK Context è RESTalk è Modelling  Tool hyperlink flow Modeling  with  RESTalkè Targeted  Users
  • 23. Long  Running  Request  Pattern-­‐ Happy  path  -­‐ 23 Create  job POST      /  job    HTTP/1.1 HTTP/1.1              202  Accepted Location:              /  job  /  42 Poll GET /  job  /  42    HTTP/1.1 HTTP/1.1 200  OK Read  results GET /  job  /  42  /  output  HTTP/1.1 HTTP/1.1 200  OK GET /  job  /  42    HTTP/1.1 HTTP/1.1 303  See  Other Location:                /  job  /  42  /  output POST /job 202 Accepted Location: /job/42 GET /job/42/output 200 OK GET /job/42 200 OK 303 See Other Location: /job/42/output GET /job/42/output 200 OK Context è RESTalk è Modelling  Tool end event Modeling  with  RESTalkè Targeted  Users
  • 24. Long  Running  Request  Pattern-­‐ Resending  the  request  -­‐ 24 Create  job POST      /  job    HTTP/1.1 Poll GET /  job  /  42    HTTP/1.1 HTTP/1.1 200  OK GET /  job  /  42    HTTP/1.1 HTTP/1.1 303  See  Other Location:                /  job  /  42  /  output Read  results GET /  job  /  42  /  output  HTTP/1.1 HTTP/1.1 200  OK HTTP/1.1              202  Accepted Location:              /  job  /  42 POST      /  job    HTTP/1.1 POST /job 202 Accepted Location: /job/42 GET /job/42/output 200 OK GET /job/42 200 OK 303 See Other Location: /job/42/output GET /job/42/output 200 OK timer event Context è RESTalk è Modelling  Tool Modeling  with  RESTalkè Targeted  Users
  • 25. -­‐ Reading  the  results  -­‐ 25 Create  job POST      /  job    HTTP/1.1 Poll GET /  job  /  42    HTTP/1.1 HTTP/1.1 200  OK GET /  job  /  42    HTTP/1.1 HTTP/1.1 303  See  Other Location:                /  job  /  42  /  output Read  results GET /  job  /  42  /  output  HTTP/1.1 HTTP/1.1 200  OK HTTP/1.1              202  Accepted Location:              /  job  /  42 POST      /  job    HTTP/1.1 GET /  job  /  42  /  output  HTTP/1.1 HTTP/1.1 200  OK POST /job 202 Accepted Location: /job/42 GET /job/42/output 200 OK GET /job/42 200 OK 303 See Other Location: /job/42/output GET /job/42/output 200 OK Long  Running  Request  Pattern Context è RESTalk è Modelling  Tool Modeling  with  RESTalkè Targeted  Users
  • 26. 26 -­‐ Deleting  the  output  resource  -­‐ Delete  output DELETE      /  job  /  42  /  output    HTTP/1.1 HTTP/1.1              200  OK Create  job POST      /  job    HTTP/1.1 Poll GET /  job  /  42    HTTP/1.1 HTTP/1.1 200  OK GET /  job  /  42    HTTP/1.1 HTTP/1.1 303  See  Other Location:                /  job  /  42  /  output Read  results GET /  job  /  42  /  output  HTTP/1.1 HTTP/1.1 200  OK HTTP/1.1              202  Accepted Location:              /  job  /  42 POST      /  job    HTTP/1.1 GET /  job  /  42  /  output  HTTP/1.1 HTTP/1.1 200  OK DELETE /job/42/output 200 OK POST /job 202 Accepted Location: /job/42 GET /job/42/output 200 OK GET /job/42 200 OK 303 See Other Location: /job/42/output GET /job/42/output 200 OK Long  Running  Request  Pattern client decision exclusive split Context è RESTalk è Modelling  Tool Modeling  with  RESTalkè Targeted  Users
  • 27. 27 -­‐ Deleting  the  output  resource  -­‐ Delete  output DELETE      /  job  /  42  /  output    HTTP/1.1 HTTP/1.1              200  OK Create  job POST      /  job    HTTP/1.1 Poll GET /  job  /  42    HTTP/1.1 HTTP/1.1 200  OK GET /  job  /  42    HTTP/1.1 HTTP/1.1 303  See  Other Location:                /  job  /  42  /  output HTTP/1.1              202  Accepted Location:              /  job  /  42 POST      /  job    HTTP/1.1 DELETE /job/42/output 200 OK POST /job 202 Accepted Location: /job/42 GET /job/42/output 200 OK GET /job/42 200 OK 303 See Other Location: /job/42/output GET /job/42/output 200 OK Long  Running  Request  Pattern Context è RESTalk è Modelling  Tool Modeling  with  RESTalkè Targeted  Users
  • 28. 28 Clean  up DELETE      /  job  /  42    HTTP/1.1 HTTP/1.1              200  OK Delete  output DELETE      /  job  /  42  /  output    HTTP/1.1 HTTP/1.1              200  OK Create  job POST      /  job    HTTP/1.1 Poll GET /  job  /  42    HTTP/1.1 HTTP/1.1 200  OK GET /  job  /  42    HTTP/1.1 HTTP/1.1 303  See  Other Location:                /  job  /  42  /  output HTTP/1.1              202  Accepted Location:              /  job  /  42 POST      /  job    HTTP/1.1 -­‐ Deleting  the  job  resource  -­‐ DELETE /job/42/output 200 OK GET /job/42/output 200 OK GET /job/42 200 OK 303 See Other Location: /job/42/output GET /job/42/output 200 OK DELETE /job/42 200 OK POST /job 202 Accepted Location: /job/42 Long  Running  Request  Pattern Context è RESTalk è Modelling  Tool Modeling  with  RESTalkè Targeted  Users
  • 29. 29 Create  job POST      /  job    HTTP/1.1 HTTP/1.1              202  Accepted Location:              /  job  /  42 POST      /  job    HTTP/1.1 Delete  job DELETE      /  job  /  42    HTTP/1.1 HTTP/1.1              200  OK -­‐ Deleting  the  job  resource  -­‐ DELETE /job/42/output 200 OK GET /job/42/output 200 OK GET /job/42 200 OK 303 See Other Location: /job/42/output GET /job/42/output 200 OK DELETE /job/42 200 OK POST /job 202 Accepted Location: /job/42 Long  Running  Request  Pattern Context è RESTalk è Modelling  Tool Modeling  with  RESTalkè Targeted  Users
  • 30. Long  Running  Request  Pattern 30 Create  job POST      /  job    HTTP/1.1 HTTP/1.1              202  Accepted Location:              /  job  /  42 Poll GET /  job  /  42    HTTP/1.1 HTTP/1.1 200  OK Read  results GET /  job  /  42  /  output  HTTP/1.1 HTTP/1.1 200  OK GET /  job  /  42    HTTP/1.1 HTTP/1.1 303  See  Other Location:                /  job  /  42  /  output POST /job 202 Accepted Location: /job/42 GET /job/42/output 200 OK GET /job/42 200 OK 303 See Other Location: /job/42/output GET /job/42/output 200 OK Context è RESTalk è Modelling  Tool Modeling  with  RESTalkè Targeted  Users
  • 31. 31 RESTful  API  Designer RESTful  API  Client *  API  driven  development *  Identifying  design  errors -­‐ chatty  design -­‐ missing  resources *  Discussing  which  conversation   patterns  to  use *  Providing  reference  conversations *  Analysis  based  on  mining  the  actual   behavior *  Decision  making  on  APIs  to  use *  Understanding  the  required   interactions  given  their  goal *  Dependencies  and  bottlenecks   due  to  SLA  restrictions Targeted  Users Context è RESTalk è Modelling  Tool Modeling  with  RESTalkè Targeted  Users
  • 32. 32 38%  already  using  some  notation 88%  willing  to  use  RESTalk Evaluated  the  need  in  industry  for  a  DSML Modeling  with  RESTalkè Targeted  Users  è Exploratory Survey Explorative  Survey 69%  asked  for  RESTalk tool  support Context è RESTalk è Modelling  Tool
  • 33. MODELLING  TOOL 33 *  Modelling  Tool  Design  Space *  RESTalk Modeler  Current  State *  RESTalk Modeler  Design  Space RESTalk
  • 34. 34 Manual  Textual  Input PlantUML Context è RESTalk è Modelling  Tool Modelling  Tool  Design  Spaceè RESTalk Modeler  Current  Stateè RESTalk Modeler  Design  Space
  • 35. 35 Manual  Textual  Input  with  Autocompletion Chart  Mage Context è RESTalk è Modelling  Tool Modelling  Tool  Design  Spaceè RESTalk Modeler  Current  Stateè RESTalk Modeler  Design  Space
  • 36. 36 Manual  Graphical  Input draw.io Context è RESTalk è Modelling  Tool Modelling  Tool  Design  Spaceè RESTalk Modeler  Current  Stateè RESTalk Modeler  Design  Space
  • 37. 37 Graphical  Input  with  Autocompletion Online  Visual  Paradigm Context è RESTalk è Modelling  Tool Modelling  Tool  Design  Spaceè RESTalk Modeler  Current  Stateè RESTalk Modeler  Design  Space
  • 38. 38 Manual  Textual  and  Graphical  Input websequencediagrams Context è RESTalk è Modelling  Tool Modelling  Tool  Design  Spaceè RESTalk Modeler  Current  Stateè RESTalk Modeler  Design  Space
  • 39. 39 Synchronized  Multiple  Representations Ballerina Context è RESTalk è Modelling  Tool Modelling  Tool  Design  Spaceè RESTalk Modeler  Current  Stateè RESTalk Modeler  Design  Space
  • 40. 40 Visual  DSL  Modeler’s  Design  SpaceAutomaticManual Textual  input Graphical input Context è RESTalk è Modelling  Tool Modelling  Tool  Design  Spaceè RESTalk Modeler  Current  Stateè RESTalk Modeler  Design  Space
  • 41. 41 RESTalk Modeler  Current  State  – Graphical Palette  of  constructs  in   Inkscape Pros -­‐ easy  to  add  new  constructs -­‐ flexible  layout Context è RESTalk è Modelling  Tool Modelling  Tool  Design  Spaceè RESTalk Modeler  Current  Stateè RESTalk Modeler  Design  Space
  • 42. 42 POST /album Parameter: ids? 200 OK Parameter: id GET /album/{{albumHash}} 200 OK Parameter: id POST /image Parameter: album? 200 OK Parameter: id POST gallery/image/{{imageHash}} Parameters: tagName 200 OK POST /image/{{imageHash}} 200 OK GET /album/{{albumHash}}/images 200 OK Parameter: id GET /image/{{imageHash}} 200 OK PUT /album/{{albumHash}} Parameter: ids 200 OK DELETE /album/{{albumHash}} 200 OK POST /album/{{albumeHash}} Parameter: ids 200 OK POST /album/{{albumHash}}/add Parameters: deletehashes 200 OK POST /album/{{albumHash}}/remove_images Parameters: ids 200 OK POST /image/{{imageHash}}/favorite 200 OK PUT /album/{{albumHash}}/favorite Parameter: ids 200 OK POST gallery/tags/{{galleryHash}} Parameter: tagName 200 OK DELETE /image/{{imageHash}} 200 OK POST gallery/album/{{albumHash}} Parameters: tagName 200 OK DELETE gallery/{{galleryHash}} 200 OK GET /account/me/images 200 OK Parameter: id Authenticated user - Publishing and managing own content POST account/me/follow/tag/{{tagName}} 200 OK 200 OK DELETE account/me/follow/tag/{{tagName}} GET /account/me/albums 200 OK Parameter: id GET /gallery/search/q={{parameter:searchItem}} 200 OK Parameter: id Imgur API POST /album Parameter: ids? 200 OK Parameter: id GET /album/{{albumHash}} 200 OK Parameter: id POST /image Parameter: album? 200 OK Parameter: id GET /album/{{albumHash}}/images 200 OK Parameter: id albumHash}} s POST /album/{{albumeHash}} Parameter: ids 200 OK POST /album/{{albumHash}}/add Parameters: deletehashes 200 OK GET /account/me/images 200 OK Parameter: id Authenticated user - Publishing and managing own content GET /account/me/albums 200 OK Parameter: id GET /gallery/search/q={ 200 OK Parameter: id Context è RESTalk è Modelling  Tool Modelling  Tool  Design  Spaceè RESTalk Modeler  Current  Stateè RESTalk Modeler  Design  Space
  • 43. 43 RESTalk Modeler  Current  State  – Graphical Palette  of  constructs  in   Inkscape Toolingè Evaluationè Timeline Cons -­‐ manual  layout   -­‐ no  semantics -­‐ no  suggestions  of  feasible   successive  constructs -­‐ no  model  correctness   verification Pros -­‐ easy  to  add  new  constructs -­‐ flexible  layout Context è RESTalk è Modelling  Tool
  • 44. 44 Textual  input  – possible   sequences  of  requests   Cons -­‐ fixed  layout   -­‐ parallelism  not  yet  supported -­‐ hypermedia  not  yet  supported Pros -­‐ use  cases  based -­‐ intuitive  syntax -­‐ actual  logs  can  be  used RESTalk Modeler  Current  State  – Textual Context è RESTalk è Modelling  Tool Modelling  Tool  Design  Spaceè RESTalk Modeler  Current  Stateè RESTalk Modeler  Design  Space
  • 45. 45 RESTalk Modeler  Design  SpaceAutomaticManual Textual  input Graphical input ? Where  do  we  go  from  here? *  Use  OAS *as-­‐is   -­‐ draw  only  the  nodes? -­‐ use  links  to  draw  edges? Context è RESTalk è Modelling  Tool Modelling  Tool  Design  Spaceè RESTalk Modeler  Current  Stateè RESTalk Modeler  Design  Space
  • 46. Open  API  Specification  (OAS) 46 Context  è RESTalk è Modelling  Tool GET /users/{username} 200 OK Parameter:repoId GET /repo/{repoId} 200 OK Modelling  Tool  Design  Spaceè RESTalk Modeler  Current  Stateè RESTalk Modeler  Design  Space
  • 47. Open  API  Specification  (OAS) 47 Context  è RESTalk è Modelling  Tool GET /users/{username} 200 OK Parameter:repoId GET /repo/{repoId} 200 OK Modelling  Tool  Design  Spaceè RESTalk Modeler  Current  Stateè RESTalk Modeler  Design  Space
  • 48. 48 GET gallery/{{section}} 200 OK Parameter: id name GET gallery/t/{{tagName}} 200 OK Parameter: id GET tags 200 OK Parameter: name GET gallery/tag_info/{{tagName}} 200 OK GET gallery/{{galleryHash}}/tags 200 OK Parameter: name GET gallery/search/q={{searchItem}} 200 OK Parameter: id name GET gallery/{{galleryHash}}/votes 200 OK GET gallery/{{galleryHash}}/comments 200 OK Parameter: id GET gallery/{{galleryHash}}/comment/{{commentId}} 200 OK POST gallery/image/{{galleryHash}}/report 200 OK POST gallery/{{galleryHash}}/vote/{{vote}} 200 OK POST gallery/{{galleryHash}}/comment 200 OK Parameter: id DELETE comment/{{commentId}} POST comment/{{commentId}}/vote/{{vote}} 200 OK 200 OK POST comment/{{commentId}}/report Authenticated user - Discovering and interacting with other users' content 200 OK 403 Forbidden POST /comment/{{commentId}} Parameter: image_id 200 OK Parameter: id GET /image/{{imageHash}} 200 OK GET /album/{{albumHash}} 200 OK Parameter: id POST /album Parameter: ids? 200 OK Parameter: id GET /album/{{albumHash}} 200 OK Parameter: id POST /image Parameter: album? 200 OK Parameter: id POST gallery/image/{{imageHash}} Parameters: tagName 200 OK POST /image/{{imageHash}} 200 OK GET /album/{{albumHash}}/images 200 OK Parameter: id GET /image/{{imageHash}} 200 OK PUT /album/{{albumHash}} Parameter: ids 200 OK DELETE /album/{{albumHash}} 200 OK POST /album/{{albumeHash}} Parameter: ids 200 OK POST /album/{{albumHash}}/add Parameters: deletehashes 200 OK POST /album/{{albumHash}}/remove_images Parameters: ids 200 OK POST /image/{{imageHash}}/favorite 200 OK PUT /album/{{albumHash}}/favorite Parameter: ids 200 OK POST gallery/tags/{{galleryHash}} Parameter: tagName 200 OK DELETE /image/{{imageHash}} 200 OK POST gallery/album/{{albumHash}} Parameters: tagName 200 OK DELETE gallery/{{galleryHash}} 200 OK GET /account/me/images 200 OK Parameter: id Authenticated user - Publishing and managing own content POST account/me/follow/tag/{{tagName}} 200 OK 200 OK DELETE account/me/follow/tag/{{tagName}} GET /account/me/albums 200 OK Parameter: id GET /gallery/search/q={{parameter:searchItem}} 200 OK Parameter: id GET /account/available_avatars 200 OK POST /album Parameter: ids? 200 OK Parameter: id deletehash GET /album/{{albumHash}} 200 OK Parameter: id POST /image Parameter: deletehashAlbum? 200 OK Parameter: id deletehash DELETE /image/{{imageDeleteHash}} 200 OK POST /image/{{imageDeleteHash}} 200 OK GET /album/{{albumHash}}/images 200 OK Parameter: id GET /image/{{imageHash}} 200 OK PUT /album/{{albumHash}} Parameter: deletehashes 200 OK DELETE /album/{{albumDeleteHash}} 200 OK POST /album/{{albumDeleteHash}} Parameter: delethashes 200 OK POST /album/{{albumDeleteHash}}/add Parameters: deletehashes 200 OK POST /album/{{albumDeleteHash}}/remove_images Parameters: ids 200 OK GET gallery/{{section}} 200 OK Parameter: id GET gallery/t/{{tagName}} 200 OK Parameter: id GET tags 200 OK GET gallery/tag_info/{{tagName}} 200 OK GET gallery/{{galleryHash}}/tags 200 OK GET gallery/search/q={{searchItem}} 200 OK Parameter: id GET gallery/{{galleryHash}}/votes 200 OK GET gallery/{{galleryHash}}/comments 200 OK Parameter: id GET gallery/{{galleryHash}}/comment/{{commentId}} 200 OK 403 Forbidden What type? Unauthenticated user conversation Image Album Post POST /album Parameter: ids? 200 OK Parameter: id GET /album/{{albumHash}} 200 OK Parameter: id POST /image Parameter: album? 200 OK Parameter: id GET /album/{{albumHash}}/images 200 OK Parameter: id PUT /album/{{albumHash}} Parameter: ids 200 OK DELETE /album/{{albumHash}} 200 OK POST /album/{{albumeHash}} Parameter: ids 200 OK POST /album/{{albumHash}}/add Parameters: deletehashes 200 OK POST /album/{{albumHash}}/remove_images Parameters: ids 200 OK PUT /album/{{albumHash}}/favorite Parameter: ids 200 OK POST gallery/tags/{{galleryHash}} Parameter: tagName 200 OK POST gallery/album/{{albumHash}} Parameters: tagName 200 OK DELETE gallery/{{galleryHash}} 200 OK GET /account/me/images 200 OK Parameter: id Authenticated user - Publishing and managing own content GET /account/me/albums 200 OK Parameter: id GET /gallery/search/q={{parameter: 200 OK Parameter: id GET /a 200 O POST /album Parameter: ids? 200 OK Parameter: id deletehash POST /image Parameter: deletehashAlbum? 200 OK Parameter: id deletehash GET gallery/{{section}} 200 OK Parameter: id GET gallery/t/{{tagName}} 200 OK Parameter: id GET tags 200 OK GET gallery/tag_info/{{tagName}} 200 OK GET gallery/{{galleryHash}}/tags 200 OK GET gallery/search/q={{searchItem}} 200 OK Parameter: id GET gallery/{{galleryHash}}/votes 200 OK GET gallery/{{galleryHash}}/comments What type? Unauthenticated user conversation Image Album Post GET gallery/{{section}} 200 OK Parameter: id name GET gallery/t/{{tagName}} 200 OK Parameter: id GET tags 200 OK Parameter: name GET gallery/tag_info/{{tagName}} 200 OK GET gallery/{{galleryHash}}/tags 200 OK Parameter: name GET gallery/search/q={{searchItem}} 200 OK Parameter: id name GET gallery/{{galleryHash}}/votes 200 OK GET gallery/{{galleryHash}}/comments 200 OK POST gallery/image/{{galleryHash}}/report 200 OK POST gallery/{{galleryHash}}/vote/{{vote}} 200 OK /{{galleryHash}}/comment Authenticated user - Discovering and interacting with other users' content GET /image/{{imageHash}} 200 OK GET /album/{{albumHash}} 200 OK Parameter: id Imgur API How  do  we  split  the  graph   so  that  RESTalk can  scale? Context è RESTalk è Modelling  Tool Modelling  Tool  Design  Spaceè RESTalk Modeler  Current  Stateè RESTalk Modeler  Design  Space
  • 49. 49 RESTalk Modeler  Design  SpaceAutomaticManual Textual  input Graphical input ? Where  do  we  go  from  here? *  Use  OAS *as-­‐is   -­‐ draw  only  the  nodes? -­‐ use  links  to  draw  edges? *extend  it   -­‐ state  use  cases? Context è RESTalk è Modelling  Tool Modelling  Tool  Design  Spaceè RESTalk Modeler  Current  Stateè RESTalk Modeler  Design  Space
  • 50. 50 RESTalk Modeler  Design  SpaceAutomaticManual Textual  input Graphical input ? Where  do  we  go  from  here? *  Use  OAS *as-­‐is   -­‐ draw  only  the  nodes? -­‐ use  links  to  draw  edges? *extend  it   -­‐ state  use  cases? *  Add  a  stencil  in  an   existing    editor  (e.g.,   draw.io)? Context è RESTalk è Modelling  Tool Modelling  Tool  Design  Spaceè RESTalk Modeler  Current  Stateè RESTalk Modeler  Design  Space
  • 51. 51 RESTalk Modeler  Design  SpaceAutomaticManual Textual  input Graphical input ? Where  do  we  go  from  here? *  Use  OAS *as-­‐is   -­‐ draw  only  the  nodes? -­‐ use  links  to  draw  edges? *extend  it   -­‐ state  use  cases? *  Build  a  fully  fledged  editor -­‐ online? -­‐ based  on  existing  IDE? -­‐ click  for  details? -­‐ link  to  OAS/docs  for               details? *  Add  a  stencil  in  an   existing    editor  (e.g.,   draw.io)? Context è RESTalk è Modelling  Tool Modelling  Tool  Design  Spaceè RESTalk Modeler  Current  Stateè RESTalk Modeler  Design  Space
  • 52. 52 RESTalk Modeler  Design  SpaceAutomaticManual Textual  input Graphical input ? Where  do  we  go  from  here? *  Use  OAS *as-­‐is   -­‐ draw  only  the  nodes? -­‐ use  links  to  draw  edges? *extend  it   -­‐ state  use  cases? *  Modify  OAS  when   modifying  the  diagram? *  Build  a  fully  fledged  editor -­‐ online? -­‐ based  on  existing  IDE? -­‐ click  for  details? -­‐ link  to  OAS/docs  for               details? *  Add  a  stencil  in  an   existing    editor  (e.g.,   draw.io)? Context è RESTalk è Modelling  Tool Modelling  Tool  Design  Spaceè RESTalk Modeler  Current  Stateè RESTalk Modeler  Design  Space
  • 53. 53 How  do  we  prioritize?   RESTful  API  Designer RESTful  API  Client RESTalk Do  we  care  who  our  targeted  users  are?   Context è RESTalk è Modelling  Tool Modelling  Tool  Design  Spaceè RESTalk Modeler  Current  Stateè RESTalk Modeler  Design  Space
  • 54. 54 BPMN  Editor  – only  Graphical Signavio Context è RESTalk è Modelling  Tool Modelling  Tool  Design  Spaceè RESTalk Modeler  Current  Stateè RESTalk Modeler  Design  Space
  • 55. 55 RESTalk Modeler  Design  SpaceAutomaticManual Textual  input Graphical input ? Where  do  we  go  from  here? Context è RESTalk è Modelling  Tool Modelling  Tool  Design  Spaceè RESTalk Modeler  Current  Stateè RESTalk Modeler  Design  Space
  • 56. Which  factors  should  we  consider? -­‐ novelty  of  the  solution -­‐ feasibility  of  the  solution -­‐ development  time -­‐ targeted  users RESTalk AutomaticManual Textual  input Graphical input *  Use  OAS *as-­‐is   *extend  it   *  Build  a  fully   fledged  editor *  Add  a  stencil  in  an   existing  editor *  Synchronize  OAS   and  the  diagram? *  Improve  our   “miner”  tool
  • 57. THANK  YOU  FOR  YOUR  ATTENTION!!! RESTalk