Skip to content

Commit

Permalink
add diagram documenting request flow through system
Browse files Browse the repository at this point in the history
  • Loading branch information
Patrick Demers authored and sethterashima committed Apr 26, 2024
1 parent 9d11f68 commit c66edf1
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 1 deletion.
5 changes: 4 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,7 @@ build: set-version test
install: test
go install ./cmd/...

.PHONY: install build test format set-version
doc-images:
docker run -v ./:/data plantuml/plantuml "doc"

.PHONY: install build test format set-version doc-images
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,14 @@ curl --cacert cert.pem \
"https://localhost:4443/api/1/vehicles/$VIN/command/flash_lights"
```

The flow to obtain `$TESLA_AUTH_TOKEN`:

![](./doc/authorization.png)

A command's flow through the system:

![](./doc/request_diagram.png)

### REST API documentation

The HTTP proxy implements the [Tesla Fleet API vehicle command endpoints](https://developer.tesla.com/docs/fleet-api#vehicle-commands).
Expand Down
Binary file added doc/authorization.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 16 additions & 0 deletions doc/authorization.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
@startuml
title Authorization Flow
"developer.tesla.com" -> "Your Backend": Store Client ID and Client Secret securely

== Obtain a Partner Authentication Token ==
"Your Backend" -> "Tesla Auth": POST https://auth.tesla.com/oauth2/v3/token
"Your Backend" <-- "Tesla Auth": {"access_token": "jwt"}

== Obtain a Third-Party Token ==
"User" -> "Tesla Auth": https://auth.tesla.com/oauth2/v3/authorize
"User" <-- "Tesla Auth": Redirect URL
"User" -> "Your Backend": Redirect URL sends token to your backend
"Your Backend" -> "Tesla Auth": Code Exchange\nPOST https://auth.tesla.com/oauth2/v3/token
"Your Backend" <-- "Tesla Auth": {"access_token": "jwt"}

@enduml
Binary file added doc/request_diagram.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
23 changes: 23 additions & 0 deletions doc/request_diagram.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
@startuml
title Vehicle Commands Proxy

"Your Backend" -> "Vehicle Commands Proxy": GET /api/1/vehicles/$VIN/command/flash_lights\n(includes Bearer token)
activate "Vehicle Commands Proxy"
"Vehicle Commands Proxy" -> "Vehicle Commands Proxy": Sign command using private key

"Vehicle Commands Proxy" -> "Fleet API": Signed command
activate "Fleet API"

"Fleet API" -> Vehicle: Signed command
activate Vehicle
Vehicle -> Vehicle: Validate signature\nusing public key
Vehicle -> Vehicle: Flash Lights
Vehicle --> "Fleet API": Response
deactivate Vehicle

"Fleet API" --> "Vehicle Commands Proxy": Response
deactivate "Fleet API"

"Vehicle Commands Proxy" --> "Your Backend": Response
deactivate "Vehicle Commands Proxy"
@enduml

0 comments on commit c66edf1

Please sign in to comment.