Skip to content

Instantly share code, notes, and snippets.

@tmack8001
Last active October 27, 2022 01:14
Show Gist options
  • Save tmack8001/8363077af5362af9375c46c57c4cf698 to your computer and use it in GitHub Desktop.
Save tmack8001/8363077af5362af9375c46c57c4cf698 to your computer and use it in GitHub Desktop.
Rivian GraphQL Postman Collection
{
"info": {
"_postman_id": "838a5157-8988-4cff-84d5-1901fcdf37ca",
"name": "Rivian GraphQL",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
"_exporter_id": "15345"
},
"item": [
{
"name": "CSRF",
"event": [
{
"listen": "test",
"script": {
"exec": [
"const response = pm.response.json()",
"pm.globals.set(\"csrf_token\", response.data.createCsrfToken.csrfToken)",
"pm.globals.set(\"a-sess\", response.data.createCsrfToken.appSessionToken)",
""
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "graphql",
"graphql": {
"query": "mutation CreateCSRFToken {\n createCsrfToken {\n __typename\n csrfToken\n appSessionToken\n }\n}",
"variables": ""
}
},
"url": {
"raw": "{{base_url}}/api/gql/gateway/graphql",
"host": [
"{{base_url}}"
],
"path": [
"api",
"gql",
"gateway",
"graphql"
]
}
},
"response": []
},
{
"name": "GraphQL Mobile Login",
"event": [
{
"listen": "test",
"script": {
"exec": [
"const response = pm.response.json()",
"",
"pm.globals.set(\"u-sess\", response.data.login.userSessionToken)",
"pm.globals.set(\"refresh_token\", response.data.login.refreshToken)",
"pm.globals.set(\"bearer_token\", response.data.login.accessToken)",
""
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Csrf-Token",
"value": "{{csrf_token}}"
},
{
"key": "A-Sess",
"value": "{{a-sess}}"
},
{
"key": "Apollographql-Client-Name",
"value": "com.rivian.ios.consumer-apollo-ios"
}
],
"body": {
"mode": "graphql",
"graphql": {
"query": "mutation Login($email: String!, $password: String!) {\n login(email: $email, password: $password) {\n __typename\n ... on MobileLoginResponse {\n __typename\n accessToken\n refreshToken\n userSessionToken\n }\n ... on MobileMFALoginResponse {\n __typename\n otpToken\n }\n }\n}",
"variables": "{\n \"email\": \"{{username}}\",\n \"password\": \"{{password}}\"\n}"
}
},
"url": {
"raw": "{{base_url}}/api/gql/gateway/graphql",
"host": [
"{{base_url}}"
],
"path": [
"api",
"gql",
"gateway",
"graphql"
]
}
},
"response": []
},
{
"name": "GQL Current User",
"event": [
{
"listen": "test",
"script": {
"exec": [
"const response = pm.response.json()",
"",
"pm.globals.set(\"userid\", response.data.currentUser.id)",
""
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Csrf-Token",
"value": "{{csrf_token}}"
},
{
"key": "A-Sess",
"value": "{{a-sess}}"
},
{
"key": "U-Sess",
"value": "{{u-sess}}"
}
],
"body": {
"mode": "graphql",
"graphql": {
"query": "query CurrentUser {\n currentUser {\n __typename\n id\n firstName\n lastName\n email\n vehicles {\n __typename\n id\n owner\n roles\n name\n vin\n vas {\n __typename\n vasVehicleId\n vehiclePublicKey\n }\n vehicle {\n __typename\n model\n mobileConfiguration {\n __typename\n trimOption {\n __typename\n optionId\n optionName\n }\n exteriorColorOption {\n __typename\n optionId\n optionName\n }\n interiorColorOption {\n __typename\n optionId\n optionName\n }\n }\n vehicleState {\n __typename\n supportedFeatures {\n __typename\n name\n status\n }\n }\n }\n settings {\n __typename\n name {\n __typename\n value\n }\n }\n }\n enrolledPhones {\n __typename\n vas {\n __typename\n vasPhoneId\n publicKey\n }\n enrolled {\n __typename\n deviceType\n deviceName\n vehicleId\n identityId\n }\n }\n pendingInvites {\n __typename\n id\n invitedByFirstName\n role\n status\n vehicleId\n vehicleModel\n email\n }\n address {\n __typename\n country\n }\n }\n}",
"variables": ""
}
},
"url": {
"raw": "{{base_url}}/api/gql/gateway/graphql",
"host": [
"{{base_url}}"
],
"path": [
"api",
"gql",
"gateway",
"graphql"
]
}
},
"response": []
},
{
"name": "GraphQL getUserInfo",
"event": [
{
"listen": "test",
"script": {
"exec": [
"const response = pm.response.json()",
"pm.globals.set(\"vehicle_id\", response.data.currentUser.vehicles[0].id)"
],
"type": "text/javascript"
}
}
],
"request": {
"auth": {
"type": "noauth"
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Dc-Cid",
"value": "m-ios-{{$guid}}",
"disabled": true
},
{
"key": "Csrf-Token",
"value": "{{csrf_token}}",
"disabled": true
},
{
"key": "A-Sess",
"value": "{{a-sess}}"
},
{
"key": "U-Sess",
"value": "{{u-sess}}"
}
],
"body": {
"mode": "graphql",
"graphql": {
"query": "query getUserInfo {\n currentUser {\n __typename\n id\n firstName\n lastName\n email\n emails {\n __typename\n email\n type\n }\n phone\n phones {\n __typename\n phone\n type\n verified\n }\n addresses {\n __typename\n id\n line1\n line2\n city\n state\n country\n postalCode\n types\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n vehicles {\n __typename\n id\n vin\n vas {\n __typename\n vasVehicleId\n vehiclePublicKey\n }\n owner\n roles\n name\n state\n type\n createdAt\n updatedAt\n vehicle {\n __typename\n id\n vin\n modelYear\n make\n model\n manufacturingConfiguration {\n __typename\n options {\n __typename\n optionId\n groupId\n }\n }\n marketingConfiguration {\n __typename\n basePrice\n configurationDate\n options {\n __typename\n groupId\n optionId\n groupName\n optionName\n price\n }\n rulesetVersion\n }\n mobileConfiguration {\n __typename\n trimOption {\n __typename\n optionId\n optionName\n }\n exteriorColorOption {\n __typename\n optionId\n optionName\n }\n interiorColorOption {\n __typename\n optionId\n optionName\n }\n }\n homologationRegion\n expectedBuildDate\n plannedBuildDate\n expectedGeneralAssemblyStartDate\n actualGeneralAssemblyDate\n }\n }\n enrolledPhones {\n __typename\n vas {\n __typename\n vasPhoneId\n publicKey\n }\n enrolled {\n __typename\n deviceType\n deviceName\n vehicleId\n identityId\n }\n }\n }\n}",
"variables": ""
}
},
"url": {
"raw": "{{base_url}}/api/gql/gateway/graphql",
"host": [
"{{base_url}}"
],
"path": [
"api",
"gql",
"gateway",
"graphql"
]
}
},
"response": []
},
{
"name": "GraphQL getRegisteredWallboxes",
"event": [
{
"listen": "test",
"script": {
"exec": [
"const response = pm.response.json()",
"pm.globals.set(\"charger_id\", response.data.getRegisteredWallboxes[0].wallboxId)"
],
"type": "text/javascript"
}
}
],
"protocolProfileBehavior": {
"disabledSystemHeaders": {}
},
"request": {
"auth": {
"type": "noauth"
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Dc-Cid",
"value": "account--{{$guid}}",
"disabled": true
},
{
"key": "Csrf-Token",
"value": "{{csrf_token}}",
"disabled": true
},
{
"key": "A-Sess",
"value": "{{a-sess}}"
},
{
"key": "U-Sess",
"value": "{{u-sess}}"
}
],
"body": {
"mode": "graphql",
"graphql": {
"query": "query getRegisteredWallboxes { getRegisteredWallboxes { \n __typename\n wallboxId \n userId\n wifiId\n name\n linked\n latitude\n longitude\n chargingStatus\n power\n currentVoltage\n currentAmps\n softwareVersion\n model\n serialNumber\n maxAmps\n maxVoltage\n maxPower\n }\n}",
"variables": ""
}
},
"url": {
"raw": "{{base_url}}/api/gql/chrg/user/graphql",
"host": [
"{{base_url}}"
],
"path": [
"api",
"gql",
"chrg",
"user",
"graphql"
]
}
},
"response": []
},
{
"name": "GraphQL getVehicleState",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Dc-Cid",
"value": "m-ios-{{$guid}}",
"disabled": true
},
{
"key": "Csrf-Token",
"value": "{{csrf_token}}",
"disabled": true
},
{
"key": "A-Sess",
"value": "{{a-sess}}"
},
{
"key": "U-Sess",
"value": "{{u-sess}}"
}
],
"body": {
"mode": "graphql",
"graphql": {
"query": "query GetVehicleState($vehicleId: String!) {\n vehicleState(id: $vehicleId) {\n __typename\n gnssLocation {\n __typename\n latitude\n longitude\n timeStamp\n }\n alarmSoundStatus {\n __typename\n timeStamp\n value\n }\n timeToEndOfCharge {\n __typename\n timeStamp\n value\n }\n doorFrontLeftLocked {\n __typename\n timeStamp\n value\n }\n doorFrontLeftClosed {\n __typename\n timeStamp\n value\n }\n doorFrontRightLocked {\n __typename\n timeStamp\n value\n }\n doorFrontRightClosed {\n __typename\n timeStamp\n value\n }\n doorRearLeftLocked {\n __typename\n timeStamp\n value\n }\n doorRearLeftClosed {\n __typename\n timeStamp\n value\n }\n doorRearRightLocked {\n __typename\n timeStamp\n value\n }\n doorRearRightClosed {\n __typename\n timeStamp\n value\n }\n windowFrontLeftClosed {\n __typename\n timeStamp\n value\n }\n windowFrontRightClosed {\n __typename\n timeStamp\n value\n }\n windowFrontLeftCalibrated {\n __typename\n timeStamp\n value\n }\n windowFrontRightCalibrated {\n __typename\n timeStamp\n value\n }\n windowRearLeftCalibrated {\n __typename\n timeStamp\n value\n }\n windowRearRightCalibrated {\n __typename\n timeStamp\n value\n }\n closureFrunkLocked {\n __typename\n timeStamp\n value\n }\n closureFrunkClosed {\n __typename\n timeStamp\n value\n }\n gearGuardLocked {\n __typename\n timeStamp\n value\n }\n closureLiftgateLocked {\n __typename\n timeStamp\n value\n }\n closureLiftgateClosed {\n __typename\n timeStamp\n value\n }\n windowRearLeftClosed {\n __typename\n timeStamp\n value\n }\n windowRearRightClosed {\n __typename\n timeStamp\n value\n }\n closureSideBinLeftLocked {\n __typename\n timeStamp\n value\n }\n closureSideBinLeftClosed {\n __typename\n timeStamp\n value\n }\n closureSideBinRightLocked {\n __typename\n timeStamp\n value\n }\n closureSideBinRightClosed {\n __typename\n timeStamp\n value\n }\n closureTailgateLocked {\n __typename\n timeStamp\n value\n }\n closureTailgateClosed {\n __typename\n timeStamp\n value\n }\n closureTonneauLocked {\n __typename\n timeStamp\n value\n }\n closureTonneauClosed {\n __typename\n timeStamp\n value\n }\n wiperFluidState {\n __typename\n timeStamp\n value\n }\n powerState {\n __typename\n timeStamp\n value\n }\n batteryHvThermalEventPropagation {\n __typename\n timeStamp\n value\n }\n vehicleMileage {\n __typename\n timeStamp\n value\n }\n brakeFluidLow {\n __typename\n timeStamp\n value\n }\n gearStatus {\n __typename\n timeStamp\n value\n }\n tirePressureStatusFrontLeft {\n __typename\n timeStamp\n value\n }\n tirePressureStatusValidFrontLeft {\n __typename\n timeStamp\n value\n }\n tirePressureStatusFrontRight {\n __typename\n timeStamp\n value\n }\n tirePressureStatusValidFrontRight {\n __typename\n timeStamp\n value\n }\n tirePressureStatusRearLeft {\n __typename\n timeStamp\n value\n }\n tirePressureStatusValidRearLeft {\n __typename\n timeStamp\n value\n }\n tirePressureStatusRearRight {\n __typename\n timeStamp\n value\n }\n tirePressureStatusValidRearRight {\n __typename\n timeStamp\n value\n }\n batteryLevel {\n __typename\n timeStamp\n value\n }\n chargerState {\n __typename\n timeStamp\n value\n }\n batteryHvThermalEvent {\n __typename\n timeStamp\n value\n }\n rangeThreshold {\n __typename\n timeStamp\n value\n }\n distanceToEmpty {\n __typename\n timeStamp\n value\n }\n otaAvailableVersionNumber {\n __typename\n timeStamp\n value\n }\n otaAvailableVersionWeek {\n __typename\n timeStamp\n value\n }\n otaAvailableVersionYear {\n __typename\n timeStamp\n value\n }\n otaCurrentVersionNumber {\n __typename\n timeStamp\n value\n }\n otaCurrentVersionWeek {\n __typename\n timeStamp\n value\n }\n otaCurrentVersionYear {\n __typename\n timeStamp\n value\n }\n otaDownloadProgress {\n __typename\n timeStamp\n value\n }\n otaInstallDuration {\n __typename\n timeStamp\n value\n }\n otaInstallProgress {\n __typename\n timeStamp\n value\n }\n otaInstallReady {\n __typename\n timeStamp\n value\n }\n otaInstallTime {\n __typename\n timeStamp\n value\n }\n otaInstallType {\n __typename\n timeStamp\n value\n }\n otaStatus {\n __typename\n timeStamp\n value\n }\n otaCurrentStatus {\n __typename\n timeStamp\n value\n }\n cabinClimateInteriorTemperature {\n __typename\n timeStamp\n value\n }\n cabinClimateDriverTemperature {\n __typename\n timeStamp\n value\n }\n cabinPreconditioningStatus {\n __typename\n timeStamp\n value\n }\n cabinPreconditioningType {\n __typename\n timeStamp\n value\n }\n petModeStatus {\n __typename\n timeStamp\n value\n }\n petModeTemperatureStatus {\n __typename\n timeStamp\n value\n }\n }\n}",
"variables": "{\n \"vehicleId\":\"{{vehicle_id}}\"\n}"
}
},
"url": {
"raw": "{{base_url}}/api/gql/gateway/graphql",
"host": [
"{{base_url}}"
],
"path": [
"api",
"gql",
"gateway",
"graphql"
]
}
},
"response": []
},
{
"name": "GraphQL getLiveSessionData Mobile",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "U-Sess",
"value": "{{u-sess}}"
}
],
"body": {
"mode": "graphql",
"graphql": {
"query": "query getLiveSessionData($userId: ID!, $vehicleId: ID) {\n getLiveSessionData(userId: $userId, vehicleId: $vehicleId) {\n isRivianCharger\n isFreeSession\n vehicleChargerState {\n value\n updatedAt\n }\n chargerId\n startTime\n timeElapsed\n timeRemaining {\n value\n updatedAt\n }\n kilometersChargedPerHour {\n value\n updatedAt\n }\n power {\n value\n updatedAt\n }\n rangeAddedThisSession {\n value\n updatedAt\n }\n totalChargedEnergy {\n value\n updatedAt\n }\n currentPrice\n }\n }",
"variables": "{\n \"userId\": \"{{userid}}\",\n \"vehicleId\": \"{{vehicle_id}}\"\n}"
}
},
"url": {
"raw": "{{base_url}}/api/gql/chrg/user/graphql",
"host": [
"{{base_url}}"
],
"path": [
"api",
"gql",
"chrg",
"user",
"graphql"
]
}
},
"response": []
},
{
"name": "GraphQL getSessionHistory Mobile",
"request": {
"method": "POST",
"header": [
{
"key": "U-Sess",
"value": "{{u-sess}}"
},
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "graphql",
"graphql": {
"query": "query getSessionHistory($userId: ID!, $vehicleId: String!, $startDate: String, $endDate: String) {\n getSessionHistory(\n userId: $userId\n vehicleId: $vehicleId\n startDate: $startDate\n endDate: $endDate\n ) {\n transactionId\n locationId\n vehicleId\n startDateTime\n endDateTime\n currency\n cost\n paidTotal\n energyOffered\n energyUnits\n rangeAdded\n rangeUnits\n vendor\n chargerType\n chargerName\n address\n city\n country\n postalCode\n }\n }",
"variables": "{\n \"userId\": \"{{userid}}\",\n \"vehicleId\": \"{{vehicleId}}\",\n \"startDate\": \"2022-10-01\",\n \"endDate\": \"2022-10-25\"\n}"
}
},
"url": {
"raw": "{{base_url}}/api/gql/chrg/user/graphql",
"host": [
"{{base_url}}"
],
"path": [
"api",
"gql",
"chrg",
"user",
"graphql"
]
}
},
"response": []
},
{
"name": "Vehicle Latest All",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{bearer_token}}",
"type": "string"
}
]
},
"method": "POST",
"header": [
{
"key": "Host",
"value": "cesium.rivianservices.com"
},
{
"key": "Accept",
"value": "*/*"
},
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Accept-Encoding",
"value": "gzip, deflate"
},
{
"key": "Namespace",
"value": "mobile-ios"
},
{
"key": "User-Agent",
"value": "RivianApp/707 CFNetwork/1237 Darwin/20.4.0"
},
{
"key": "Accept-Language",
"value": "en-us"
}
],
"body": {
"mode": "raw",
"raw": "{\r\n \"car\": \"{{vehicle_id}}\",\r\n \"properties\": [\r\n \"$gnss\",\r\n \"adas/*\",\r\n \"body/*\",\r\n \"core/*\",\r\n \"dynamics/*\",\r\n \"energy_storage/*\",\r\n \"telematics/*\",\r\n \"thermal/*\",\r\n \"vas/*\"\r\n ]\r\n}"
},
"url": {
"raw": "{{vehicle_url}}/v2/vehicle/latest",
"host": [
"{{vehicle_url}}"
],
"path": [
"v2",
"vehicle",
"latest"
]
}
},
"response": []
}
],
"event": [
{
"listen": "prerequest",
"script": {
"type": "text/javascript",
"exec": [
""
]
}
},
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
""
]
}
}
],
"variable": [
{
"key": "otp_token",
"value": "-",
"type": "string"
},
{
"key": "username",
"value": "{{username}}",
"type": "string"
},
{
"key": "password",
"value": "{{password}}",
"type": "string"
},
{
"key": "base_url",
"value": "https://rivian.com",
"type": "string"
},
{
"key": "auth_url",
"value": "https://auth.rivianservices.com",
"type": "string"
},
{
"key": "vehicle_url",
"value": "https://cesium.rivianservices.com",
"type": "string"
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment