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