Auto Scaling Groups
Event
Summary
Name |
Value |
ASG |
prod-mp5-app-servers-event |
Instance Type |
m4.xlarge |
# Instances |
8 |
Traffic |
|
Sequence Diagrams
POST /api/1.0/event
See the API documentation for additional details.
Android->Tobago: Send event data
Note over Tobago: When token missing\n or invalid ...
Tobago->Kiji: Device create
Kiji-->Tobago:
Note over Tobago: Otherwise ...
Tobago->Kiji: Device read
Kiji-->Tobago:
Note over Tobago: Finaly ...
Tobago->Tobago: Authenticate
Tobago->Tobago: Watch for MDN change
Tobago->Tobago: Increment counters
Tobago->Tobago: Set last modified by
Tobago->Tobago: Set event data
Tobago->Tobago: Set tags
Tobago->Firehose: Send Event Data
Firehose-->Tobago:
Tobago->Kiji: Save device
Kiji-->Tobago:
Tobago->Dynamo: Update device lookup records
Dynamo-->Tobago:
Tobago-->Android:Return commands
Diagnostics
Summary
Name |
Value |
ASG |
prod-mp5-app-servers-diag |
Instance Type |
m4.xlarge |
# Instances |
6 |
Traffic |
|
Sequence Diagrams
POST /api/1.0/diagnostic
[TODO: Add link to diagnostic API method once available]
Android->Tobago: Send diagnostic data
Note over Tobago: When token missing\n or invalid ...
Tobago->Kiji: Device create
Kiji-->Tobago:
Note over Tobago: Otherwise ...
Tobago->Kiji: Device read
Kiji-->Tobago:
Note over Tobago: Finaly ...
Tobago->Tobago: Authenticate
Tobago->Tobago: Watch for MDN change
Tobago->Tobago: Increment counters
Tobago->Tobago: Set last modified by
Tobago->Tobago: Set diagnostic data
Tobago->Kinesis: Send diagnostic data
Kinesis-->Tobago:
Tobago->Kiji: Save device
Kiji-->Tobago:
Tobago->Dynamo: Update device lookup records
Dynamo-->Tobago:
Tobago-->Android:Return commands
Push
Summary
Name |
Value |
ASG |
prod-mp5-app-servers-push |
Instance Type |
m4.xlarge |
# Instances |
4 |
Traffic |
|
Sequence Diagrams
POST /api/1.0/push?token=ContentSchedule
See the API documentation for additional details.
NOTE: Only the ContentSchedule variation is shown here. There are also ContentSelector
and TestBanner
options, but analysis of the logs shows that the former is rarely called (51 times in one week) and the latter is never called.
Android->Tobago: Send device data
Note over Tobago: When token missing\n or invalid ...
Tobago->Kiji: Device create
Kiji-->Tobago:
Note over Tobago: Otherwise ...
Tobago->Kiji: Device read
Kiji-->Tobago:
Note over Tobago: Finaly ...
Tobago->Tobago: Authenticate
Tobago->Tobago: Watch for MDN change
Tobago->Tobago: Increment counters
Tobago->Tobago: Set last modified by
Tobago->Tobago: Extract content list
Tobago->Tobago: Build JS command
Tobago->Kiji: Save device
Kiji-->Tobago:
Tobago->Dynamo: Update device lookup records
Dynamo-->Tobago:
Tobago-->Android: Return Content ID list
POST /api/1.0/push/registration
See the API documentation for additional details.
Android->Tobago: Send FCM ID
Note over Tobago: When token missing\n or invalid ...
Tobago->Kiji: Device create
Kiji-->Tobago:
Note over Tobago: Otherwise ...
Tobago->Kiji: Device read
Kiji-->Tobago:
Note over Tobago: Finaly ...
Tobago->Tobago: Authenticate
Tobago->Tobago: Watch for MDN change
Tobago->Tobago: Increment counters
Tobago->Tobago: Set last modified by
Tobago->Tobago: Generate token
Tobago->Kiji: Save device
Kiji-->Tobago:
Tobago-->Android: Return token
GET /api/1.0/push/credentials?provider=gcm
See the API documentation for additional details.
Android->Tobago: Get credentials
Tobago-->Android: Return sender ID
Data
Summary
Name |
Value |
ASG |
prod-mp5-app-servers-data |
Instance Type |
m4.xlarge |
# Instances |
4 |
Traffic |
|
Sequence Diagrams
POST /api/1.0/data
See the API documentation for additional details.
Android->Tobago: Send data
Note over Tobago: When token missing\n or invalid ...
Tobago->Kiji: Device create
Kiji-->Tobago:
Note over Tobago: Otherwise ...
Tobago->Kiji: Device read
Kiji-->Tobago:
Note over Tobago: Finaly ...
Tobago->Tobago: Authenticate
Tobago->Tobago: Watch for MDN change
Tobago->Tobago: Increment counters
Tobago->Tobago: Set last modified by
Tobago->Tobago: Set data
Tobago->Kiji: Save device
Kiji-->Tobago:
Tobago->Dynamo: Update device lookup records
Dynamo-->Tobago:
Tobago-->Android: Return commands
Poll
Summary
Name |
Value |
ASG |
prod-mp5-app-servers-poll |
Instance Type |
m4.xlarge |
# Instances |
8 |
Traffic |
5,000 - 33,000 req/min |
Sequence Diagrams
POST /api/1.0/poll
See the API documentation for additional details.
Android->Tobago: Send device data
Note over Tobago: When token missing\n or invalid ...
Tobago->Kiji: Device create
Kiji-->Tobago:
Note over Tobago: Otherwise ...
Tobago->Kiji: Device read
Kiji-->Tobago:
Note over Tobago: Finaly ...
Tobago->Tobago: Authenticate
Tobago->Tobago: Watch for MDN change
Tobago->Tobago: Increment counters
Tobago->Tobago: Set last modified by
Note over Tobago: When opted in \n or < 7 days ...
Tobago->Postgres: Geo Lookup
Postgres-->Tobago:
Tobago->Kiji: Get queued commands
Kiji-->Tobago:
Tobago->Kiji: Get targeted commands
Kiji-->Tobago:
Tobago->Tobago: Render commands
Tobago->Tobago: Increment ad counters
Tobago->Kiji: Save device
Kiji-->Tobago:
Tobago->Dynamo: Update device lookup records
Dynamo-->Tobago:
Tobago-->Android: Return content aliases list
Schedule
Summary
Name |
Value |
ASG |
prod-mp5-app-servers-schedule |
Instance Type |
m4.xlarge |
# Instances |
6 |
Traffic |
|
Sequence Diagrams
GET /api/1.0/schedule
See the API documentation for additional details.
Android->Tobago: Send content IDs
Note over Tobago: When token missing\n or invalid ...
Tobago->Kiji: Device create
Kiji-->Tobago:
Note over Tobago: Otherwise ...
Tobago->Kiji: Device read
Kiji-->Tobago:
Note over Tobago: Finaly ...
Tobago->Tobago: Authenticate
Tobago->Tobago: Watch for MDN change
Tobago->Tobago: Increment counters
Tobago->Tobago: Set last modified by
Tobago->MySQL: Get partner content
MySQL-->Tobago:
Tobago->MySQL: Get device content
MySQL-->Tobago:
Tobago->Tobago: Generate delete list
Tobago->Tobago: Render commands
Tobago-->Android: Content commands (HTML)
MPSchedule
Summary
Name |
Value |
ASG |
prod-mp5-mpschedule |
Instance Type |
c4.xlarge |
# Instances |
4 |
Traffic |
|
Sequence Diagrams
POST /api/1.0/device/merge
- TODO: Method description from source code comments
- TODO: Link API method once added to docs
Lox->Tobago: Merge devices
Tobago->Kiji:Read old device
Kiji-->Tobago:
Tobago->Kiji:Read new device
Kiji-->Tobago:
Tobago->Tobago: Copy old info
Tobago->Kiji: Save device
Kiji-->Tobago:
Tobago-->Lox: Merge info
POST /api/1.0/device/migrate
TODO: Link API method once added to docs
Lox->Tobago: Get device migration
Tobago->Kiji:Read device
Kiji-->Tobago:
Tobago->Tobago: Authenticate
Tobago->Tobago: Set migration tag
Tobago->Kiji: Save device
Kiji-->Tobago:
Tobago-->Lox: Migration info
Other
Summary
Name |
Value |
ASG |
prod-mp5-app-servers-v2 |
Instance Type |
m4.xlarge |
# Instances |
4 |
Traffic |
|
Sequence Diagrams
GET /api/1.0/content/schedule
See the API documentation for additional details.
Android->Tobago: Get content schedule
Note over Tobago: When token missing\n or invalid ...
Tobago->Kiji: Device create
Kiji-->Tobago:
Note over Tobago: Otherwise ...
Tobago->Kiji: Device read
Kiji-->Tobago:
Note over Tobago: Finaly ...
Tobago->Tobago: Authenticate
Tobago->Tobago: Watch for MDN change
Tobago->Tobago: Increment counters
Tobago->Tobago: Set last modified by
Tobago->Tobago: Allow origin
Tobago-->Android: Content schedule
POST /api/1.0/content/schedule
See the API documentation for additional details.
Android->Tobago: Send local schedule
Note over Tobago: When token missing\n or invalid ...
Tobago->Kiji: Device create
Kiji-->Tobago:
Note over Tobago: Otherwise ...
Tobago->Kiji: Device read
Kiji-->Tobago:
Note over Tobago: Finaly ...
Tobago->Tobago: Authenticate
Tobago->Tobago: Watch for MDN change
Tobago->Tobago: Increment counters
Tobago->Tobago: Set last modified by
Tobago->Tobago: Set schedule
Note over Tobago: When version \n code < 607
Tobago->FCM: Send push poll
FCM-->Tobago:
Note over Tobago: Finally ...
Tobago->Kiji: Save device
Kiji-->Tobago:
Tobago->Dynamo: Update device lookup records
Dynamo-->Tobago:
Tobago-->Android: Queued commands
OPTIONS /api/1.0/content/schedule
See the API documentation for additional details.
Android->Tobago: Get CORS
Tobago->Tobago: Allow origin
Tobago-->Android: CORS Headers
GET /1.0/content/metadata/list
See the API documentation for additional details.
Android->Tobago: Get content meta
Note over Tobago: When token missing\n or invalid ...
Tobago->Kiji: Device create
Kiji-->Tobago:
Note over Tobago: Otherwise ...
Tobago->Kiji: Device read
Kiji-->Tobago:
Note over Tobago: Finaly ...
Tobago->Tobago: Authenticate
Tobago->Tobago: Watch for MDN change
Tobago->Tobago: Increment counters
Tobago->Tobago: Set last modified by
Tobago->MySQL: Get content meta
MySQL-->Tobago:
Tobago->Tobago: Allow origin
Tobago-->Android: Content meta
GET /1.0/auth/create
TODO: Link API method once added to docs
Lox->Tobago: Create device
Tobago->Tobago: Authenticate
Tobago->Kiji: Device create
Kiji-->Tobago:
Tobago->Tobago: Watch for MDN change
Tobago->Tobago: Increment counters
Tobago->Tobago: Set last modified by
Tobago->Tobago: Set device platform
Tobago->Kiji: Save device
Kiji-->Tobago:
Tobago->Dynamo: Update device lookup records
Dynamo-->Tobago:
Tobago-->Lox: Auth cookies
GET /1.0/auth/retrieve
TODO: Link API method once added to docs
Lox->Tobago: Create Device
Note over Tobago: When token missing\n or invalid ...
Tobago->Kiji: Device create
Kiji-->Tobago:
Note over Tobago: Otherwise ...
Tobago->Kiji: Device read
Kiji-->Tobago:
Note over Tobago: Finaly ...
Tobago->Tobago: Authenticate
Tobago->Tobago: Watch for MDN change
Tobago->Tobago: Increment counters
Tobago->Tobago: Set last modified by
Tobago->Tobago: Set device platform
Tobago->Kiji: Save device
Kiji-->Tobago:
Tobago->Dynamo: Update device lookup records
Dynamo-->Tobago:
Tobago-->Lox: Auth token