{"id":13496828,"url":"https://github.com/driven-app/porsche-connect","last_synced_at":"2026-02-19T02:02:20.493Z","repository":{"id":39449457,"uuid":"334386484","full_name":"driven-app/porsche-connect","owner":"driven-app","description":"An unofficial Porsche Connect API library written in Swift","archived":false,"fork":false,"pushed_at":"2023-07-09T08:30:16.000Z","size":696,"stargazers_count":41,"open_issues_count":7,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-11-18T09:28:17.320Z","etag":null,"topics":["electric-vehicles","macos","porsche","swift"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/driven-app.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-01-30T10:32:39.000Z","updated_at":"2025-10-23T05:42:51.000Z","dependencies_parsed_at":"2023-11-21T17:06:37.999Z","dependency_job_id":"9225b054-f389-4ba7-95a1-a6815dd06202","html_url":"https://github.com/driven-app/porsche-connect","commit_stats":{"total_commits":361,"total_committers":3,"mean_commits":"120.33333333333333","dds":"0.16620498614958445","last_synced_commit":"733033195fb9e831cd473428431bd581814a0858"},"previous_names":[],"tags_count":39,"template":false,"template_full_name":null,"purl":"pkg:github/driven-app/porsche-connect","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/driven-app%2Fporsche-connect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/driven-app%2Fporsche-connect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/driven-app%2Fporsche-connect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/driven-app%2Fporsche-connect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/driven-app","download_url":"https://codeload.github.com/driven-app/porsche-connect/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/driven-app%2Fporsche-connect/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29600847,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T00:59:38.239Z","status":"online","status_checked_at":"2026-02-19T02:00:07.702Z","response_time":117,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["electric-vehicles","macos","porsche","swift"],"created_at":"2024-07-31T19:02:01.004Z","updated_at":"2026-02-19T02:02:20.475Z","avatar_url":"https://github.com/driven-app.png","language":"Swift","funding_links":[],"categories":["Swift"],"sub_categories":[],"readme":"\u003cdiv align=center\u003e\n\n# PorscheConnect \n\n![PorscheConnect](https://github.com/driven-app/porsche-connect/workflows/PorscheConnect/badge.svg)\n[![License](https://img.shields.io/github/license/driven-app/porsche-connect)](https://github.com/driven-app/porsche-connect/blob/main/LICENSE)\n[![Reviewed by Hound](https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg)](https://houndci.com)\n[![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fdriven-app%2Fporsche-connect%2Fbadge%3Ftype%3Dswift-versions)](https://swiftpackageindex.com/driven-app/porsche-connect)\n[![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fdriven-app%2Fporsche-connect%2Fbadge%3Ftype%3Dplatforms)](https://swiftpackageindex.com/driven-app/porsche-connect)\n\n\u003c/div\u003e\n\nThis is an unofficial Porsche Connect API library written in Swift. The primary purpose for this library is to act as a building block for both mobile, desktop and serverside applications built around the Porsche Connect service.\n\nYou will require a My Porsche account to be able to make use of this library.\n\n## Is the API official?\n\nAbsolutely not. These endpoints are a result of reverse engineering Porsche's web and mobile applications.\n\n\n## CI/CD Status\n\nThe library has a comprehensive suite of unit tests that run on GitHub Actions. Currently the test suite is run on a Intel based macOS v13..x running XCode 14.3.\n\nYou can see the current build status of the `main` branch here:\n\n![PorscheConnect](https://github.com/driven-app/porsche-connect/workflows/PorscheConnect/badge.svg)\n\n\n## Requirements\n\n### Swift\n\nPorsche Connect requires Swift 5.7 or higher. It uses the new async/await concurrency language features introduced in Swift 5.5.\n\n### Supported Platforms\n\nCurrently the library supports the following platforms:\n\n* **macOS** (Version 12.0+)\n* **iOS** (Version 15+)\n* **tvOS** (Version 15+)\n* **watchOS** (Version 8+)\n\n### Swift Package Index\n\nThis library is availble on the Swift Package Index at [https://swiftpackageindex.com/driven-app/porsche-connect](https://swiftpackageindex.com/driven-app/porsche-connect).\n\n### Auth\n\nSince calendar week 12, 2023, Porsche has moved their identity provider (iDP) in production to [Auth0](https://auth0.com). Release v0.1.37 and higher of this library uses this new Auth0 service in a transparent manner to external clients. Use of the old iDP has been retired. \n\n\n# Usage\n\n### Getting Started\n\nCreate an instance of the library:\n\n```swift\n let porscheConnect = PorscheConnect(username: \"homer.simpson@icloud.example\", \n                                     password: \"Duh!\")\n```\n\nThe following environments are supported:\n\n* **Germany** (default)\n* **Test** (used by the test suite against a mocked server)\n\nA valid [MyPorsche](https://my.porsche.com) username (email) and password is required to use this library.\n\n\n### List Vehicles\n\nTo get a list of vehicles associated with your My Porsche account . This call will return an array of `Vehicle` structs, with nested `VehicleAttribute`'s and `VehiclePicture`'s as appropriate for the vehicles configuration.\n\n```swift\ndo {\n  let result = try await porscheConnect.vehicles()\n  if let vehicles = result.vehicles {\n    // Do something with vehicles\n  }\n} catch {\n  // Handle the error\n}\n```\n\nFor example, to get the external [Color](https://developer.apple.com/documentation/swiftui/color) (a SwiftUI struct) for the first car in your account:\n\n```swift\ndo {\n  let result = try await porscheConnect.vehicles()\n  if let vehicles = result.vehicles {\n    let firstVehicle = vehicles.first!\n    let color: Color = firstVehicle.color\n  }\n} catch {\n  // Handle the error\n}\n```\n\n### Summary of a vehicle\n\nTo get a summary for a vehicle. This call will return a `Summary` struct.\n\n```swift\ndo {\n  let result = try await porscheConnect.summary(vin: vehicle.vin)\n  if let summary = result.summary {\n    // Do something with the summary\n  }\n} catch {\n  // Handle the error\n}\n```\n\n### Position of a vehicle\n\nTo get last reported position for a vehicle. This call will return a `Position` struct. \n\n```swift\ndo {\n  let result = try await porscheConnect.position(vin: vehicle.vin)\n  if let position = result.position {\n    // Do something with the position\n  }\n} catch {\n  // Handle the error\n}\n```\n\n### Capabilities of a vehicle\n\nTo get capabilities for a vehicle. This call will return a `Capabilities` struct. This struct has nested `OnlineRemoteUpdateStatus` and `HeatingCapabilities` structs as appropriate for the vehicle.\n\n```swift\ndo {\n  let result = try await porscheConnect.capabilities(vin: vehicle.vin)\n  if let capabilities = result.capabilities {\n    // Do something with the capabilities\n  }\n} catch {\n  // Handle the error\n}\n```\n\n### Emobility of a vehicle\n\nIf the vehicle is a plug-in hybrid (PHEV) or a battery electric vehicle (BEV) this will return the status and configuration of the e-mobility aspects of the vehicle. This call requires both a vehicle and its matching capabilities. This call will return a `Emobility` struct. Passing in a vehicles `Capabilites` is optional – if none is passed in, the library will assume the vehicle is based on the `J1` (Taycan) platform.\n\n```swift\ndo {\n  let result = try await porscheConnect.emobility(vin: vehicle.vin, capabilities: capabilities)\n  if let emobility = result.emobility {\n    // Do something with the emobility\n  }\n} catch {\n  // Handle the error\n}\n```\n\n### Status of a vehicle\n\nTo get the status for a vehicle. This call will return a `Status` struct. This struct has nested `ServiceIntervals`, and `RemainingRanges` structs as appropriate for the vehicle.\n\n```swift\ndo {\n  let result = try await porscheConnect.status(vin: vehicle.vin)\n  if let status = result.status {\n    // Do something with the status\n  }\n} catch {\n  // Handle the error\n}\n```\n\n### Vehicle Trips\n\nTo get the trips for a vehicle. This call will return an array of `Trip` structs. You can specify either `shortTerm` or `longTerm` trips to be returned. `shortTerm` is the default if no type is specified.\n\n```swift\ndo {\n  let result = try await porscheConnect.trips(vin: vehicle.vin, type: .longTerm)\n  if let trips = result.trips {\n    // Do something with the trips\n  }\n} catch {\n  // Handle the error\n}\n```\n\n### Maintenance\n\nTo get the maintenance status for a vehicle. This call will return a `Maintenance` struct which contains a number of maintenance `items`. \n\n```swift\ndo {\n  let result = try await porscheConnect.maintenance(vin: vehicle.vin)\n  if let maintenance = result.maintenance {\n    // Do something with maintenance\n  }\n} catch {\n  // Handle the error\n}\n```\n\n### Honk and Flash\n\nTo ask the vehicle to flash its indicators and optionally honk the horn. This call will return a `RemoteCommandAccepted` struct when the request has been accepted. The `andHorn` paramater is optional and defaults to false.\n\n```swift\ndo {\n  let result = try await porscheConnect.flash(vin: vehicle.vin, andHorn: true)\n  if let remoteCommandAccepted = result.remoteCommandAccepted {\n    // Do something with the remote command\n  }\n} catch {\n  // Handle the error\n}\n```\n\nAs Honk and Flash is a remote command that can take time to reach and be executed by the car, you can check the status of the command. You pass in both the vehicle and the response from the `flash()` call above. \n\nThe `status` is mapped to a strongly typed enum that can be retrieved by accessing the `remoteStatus` calculated property. \n\nPassing in a capabilites paramater is not required to determine the status of a Honk and Flash command.\n\n```swift\ndo {\n  let result = try await porscheConnect.checkStatus(vin: vehicle.vin, remoteCommand: remoteCommandAccepted)\n  if let remoteCommandStatus = result.remoteCommand {\n    // Do something with the remote command status\n  }\n} catch {\n  // Handle the error\n}\n```\n\n### Toggle Direct Charging\n\nTo toggle a battery electric vehicle (BEV) direct charging mode to on or off. This call will return a `RemoteCommandAccepted` struct when the request has been accepted. \n\nThe `enable` parameter is optional and defaults to true. \n\nPassing in a vehicles `Capabilites` is optional – if none is passed in, the library will assume the vehicle is based on the `J1` (Taycan) platform.\n\n```swift\ndo {\n  let result = try await porscheConnect.toggleDirectCharging(vin: vehicle.vin, capabilities: capabilities, enable: false)\n  if let remoteCommandAccepted = result.remoteCommandAccepted {\n    // Do something with the remote command\n  }\n} catch {\n  // Handle the error\n}\n```\n\nAs Toggle Direct Charging is a remote command that can take time to reach and be executed by the car, you can check the status of the command. You pass in both the vehicle and the response from the `toggleDirectCharging()` call above. \n\nThe `status` is mapped to a strongly typed enum that can be retrieved by accessing the `remoteStatus` calculated property. \n\nPassing in a vehicles `Capabilites` is optional – if none is passed in, the library will assume the vehicle is based on the `J1` (Taycan) platform.\n\n```swift\ndo {\n  let result = try await porscheConnect.checkStatus(vin: vehicle.vin, capabilities: capabilities, remoteCommand: remoteCommandAccepted)\n  if let remoteCommandStatus = result.remoteCommand {\n    // Do something with the remote command status\n  }\n} catch {\n  // Handle the error\n}\n```\n\n### Toggle Direct Climatisation\n\nTo toggle climatisation mode to on or off. This call will return a `RemoteCommandAccepted` struct when the request has been accepted. \n\nThe `enable` parameter is optional and defaults to true. \n\n```swift\ndo {\n  let result = try await porscheConnect.toggleClimatisation(vin: vehicle.vin, enable: false)\n  if let remoteCommandAccepted = result.remoteCommandAccepted {\n    // Do something with the remote command\n  }\n} catch {\n  // Handle the error\n}\n```\n\nAs Toggle Direct Climatisation is a remote command that can take time to reach and be executed by the car, you can check the status of the command. You pass in both the vehicle and the response from the `toggleClimatisation()` call above. \n\nThe `status` is mapped to a strongly typed enum that can be retrieved by accessing the `remoteStatus` calculated property.\n\n```swift\ndo {\n  let result = try await porscheConnect.checkStatus(vin: vehicle.vin, remoteCommand: remoteCommandAccepted)\n  if let remoteCommandStatus = result.remoteCommand {\n    // Do something with the remote command status\n  }\n} catch {\n  // Handle the error\n}\n```\n\n### Lock Vehicle\n\nTo ask the vehicle to remote lock. This call will return a `RemoteCommandAccepted` struct when the request has been accepted. \n\nMake sure that there are no vehicle keys, persons or animals in the vehicle.\n\n```swift\ndo {\n  let result = try await porscheConnect.lock(vin: vehicle.vin)\n  if let remoteCommandAccepted = result.remoteCommandAccepted {\n    // Do something with the remote command\n  }\n} catch {\n  // Handle the error\n}\n```\n\nAs Lock Vehicle is a remote command that can take time to reach and be executed by the car, you can check the status of the command. You pass in the vehicle, optionally the vehicles capabilities and the response from the `lock()` call above. \n\nThe `status` is mapped to a strongly typed enum that can be retrieved by accessing the `remoteStatus` calculated property. \n\nPassing in a capabilites paramater is not required to determine the status of a Lock command.\n\n```swift\ndo {\n  let result = try await porscheConnect.checkStatus(vin: vehicle.vin, remoteCommand: remoteCommandAccepted)\n  if let remoteCommandStatus = result.remoteCommand {\n    // Do something with the remote command status\n  }\n} catch {\n  // Handle the error\n}\n```\n\n### Unlock Vehicle\n\nTo ask the vehicle to remote unlock. As this action impacts the security of the vehicle (by unlocking it), it also requires the users four digit security (PIN) code. This call will return a `RemoteCommandAccepted` struct when the request has been accepted. \n\n```swift\ndo {\n  let result = try await porscheConnect.unlock(vin: vehicle.vin, pin: \"1234\")\n  if let remoteCommandAccepted = result.remoteCommandAccepted {\n    // Do something with the remote command\n  }\n} catch {\n  // Handle the error\n}\n```\n\nAs Unlock Vehicle is a remote command that can take time to reach and be executed by the car, you can check the status of the command. You pass in the vehicle, optionally the vehicles capabilities and the response from the `unlock()` call above. \n\nThe `status` is mapped to a strongly typed enum that can be retrieved by accessing the `remoteStatus` calculated property. \n\nPassing in a capabilites paramater is not required to determine the status of a Unlock command.\n\n```swift\ndo {\n  let result = try await porscheConnect.checkStatus(vin: vehicle.vin, remoteCommand: remoteCommandAccepted)\n  if let remoteCommandStatus = result.remoteCommand {\n    // Do something with the remote command status\n  }\n} catch {\n  // Handle the error\n}\n```\n\n# Tests\n\nTo run the test suite:\n\n```bash\nxcodebuild test -destination \"platform=iOS Simulator,name=iPhone 12 mini\" -scheme \"PorscheConnect\"\n```\n\nThis is similar to the commands that are run in CI to test the library on each git commit. You can change the destinations to any of the libraries supported platforms.\n\n\n# Command Line Tool\n\nThe library is packaged with a command line utility to give a simple terminal access to the set of Porsche Connect services wrapped by this library. \n\n### Compiling\n\nFrom within the project directory, run:\n\n```bash\nswift build -c release\n```\n\nThis will place the excutable in `\u003cproject-dir\u003e/.build/apple/Products/Release` folder, where it will be named `porsche`. If you want to make it available more generally when using a terminal, copy it to `/usr/local/bin` from the project dir:\n\n```bash\ncp -f .build/apple/Products/Release/porsche /usr/local/bin\n```\n\n### Universal binary\n\nIf you would like to build a universal binary for both Intel (x86) and Apple (ARC) processors (M-series Mac's, iPhones, iPads, Watches) then run the compiler with:\n\n```bash\nswift build -c release --arch arm64 --arch x86_64\n```\n\n### Using\n\nTo get help on the various commands available, call with `--help` on either the overall command or any of the sub-commands:\n\n```bash\n$ porsche --help\n\nOVERVIEW: A command-line tool to call and interact with Porsche Connect services\n\nUSAGE: porsche \u003csubcommand\u003e\n\nOPTIONS:\n  --version               Show the version.\n  -h, --help              Show help information.\n\nSUBCOMMANDS:\n  list-vehicles\n  show-summary\n  show-position\n  show-capabilities\n  show-emobility\n  show-trips\n  show-maintenance\n  flash\n  honk-and-flash\n  toggle-direct-charging\n  toggle-direct-climatisation\n  lock\n  unlock\n  \n  See 'porsche help \u003csubcommand\u003e' for detailed help.\n```\n\nBy default, the CLI tool will attempt to use your system locale for all API requests. This will\naffect the localization of the API responses. If your system locale is not supported, Germany will\nbe used instead. You can choose one of the supported locales using the `--locale` flag and passing\none of the supported locales, such as `de_DE` or `en_US`.\n\nTo get a list of all the vehicles associated with your My Porsche account:\n\n```bash\n$ porsche list-vehicles \u003cusername\u003e \u003cpassword\u003e\n\n#1 =\u003e Model: Taycan 4S; Year: 2021; Type: Y1ADB1; VIN: WP0ZZZXXXXXXXXXXX\n```\n\nTo show the summary for a specific vehicle – the nickname is usually set to be the licenseplate of the car, but can be any value set by the owner:\n\n```bash\n$ porsche show-summary \u003cusername\u003e \u003cpassword\u003e \u003cvin\u003e\n\nModel Description: Taycan 4S; Nickname: 211-D-12345\n```\n\nTo show the current position of a vehicle:\n\n```bash\n$ porsche show-position \u003cusername\u003e \u003cpassword\u003e \u003cvin\u003e\n\nLatitude: 53.395367; Longitude: -6.389296; Heading: 68\n```\n\nTo show the current status of a vehicle:\n\n```bash\n$ porsche show-status \u003cusername\u003e \u003cpassword\u003e \u003cvin\u003e\n\nOverall lock status: Closed and locked\nBattery level: 73.0%, Mileage: 2,206 kilometers\nRemaining range is 292 kilometers\nNext inspection in 27,842 kilometers or on Dec 10, 2024\n```\n\nTo show the capabilties of a vehicle:\n\n```bash\n$ porsche show-capabilities \u003cusername\u003e \u003cpassword\u003e \u003cvin\u003e\n\nDisplay parking brake: yes; Needs SPIN: yes; Has RDK: yes; Engine Type: BEV; Car Model: J1; Front Seat Heating: yes; Rear Seat Heating: no; Steering Wheel Position: RIGHT; Honk \u0026 Flash: yes\n```\n\nTo show the emobility of a vehicle:\n\n*(Note: this only displays a small subset of the information that the emobility service returns)*\n\n```bash\n$ porsche show-emobility \u003cusername\u003e \u003cpassword\u003e \u003cvin\u003e\n\nBattery Level: 53%; Remaining Range: 180 KM; Charging Status: NOT_CHARGING; Plug Status: DISCONNECTED\n```\n\nTo get a list of all trips taken by the vehicle: \n\n*You can specify either `short` or `long` term trips by using the `--trip-type` option. If no option is specified, it defaults to displaying `short` term trips.*\n\n```bash\n$ porsche show-trips \u003cusername\u003e \u003cpassword\u003e \u003cvin\u003e --trip-type \u003ctrip-type\u003e\n\n#1 =\u003e Trip ID: 1162572771; Timestamp: 8 Jan 2023 at 22:45:35; Distance: 6.0 km; Average speed: 11.0 km/h; EV consumption: 39.6 kWh/100km\n#2 =\u003e Trip ID: 1161450482; Timestamp: 7 Jan 2023 at 09:11:00; Distance: 12.0 km; Average speed: 31.0 km/h; EV consumption: 34.9 kWh/100km\n```\n\nTo get a list of all maintenance items for the vehicle: \n\n```bash\n$ porsche show-maintenance \u003cusername\u003e \u003cpassword\u003e \u003cvin\u003e\n\n#1 =\u003e Maintenance ID: 0003; Short Description: \"Inspection\"; Long Description: \"\"; Criticality: \"No maintenance is due at the moment.\"\n#2 =\u003e Maintenance ID: 0005; Short Description: \"Brake pads\"; Long Description: \"Replace brake pads\"; Criticality: \"No maintenance is due at the moment.\"\n#3 =\u003e Maintenance ID: 0007; Short Description: \"Brake fluid\"; Long Description: \"Replace brake fluid\"; Criticality: \"No maintenance is due at the moment.\"\n```\n\nTo flash the indicators of a vehicle:\n\n```bash\n$ porsche flash \u003cusername\u003e \u003cpassword\u003e \u003cvin\u003e\n\nRemote command \\\"Flash\\\" accepted by Porsche API with ID 123456\n```\n\nTo flash and honk the indicators of a vehicle:\n\n```bash\n$ porsche honk-and-flash \u003cusername\u003e \u003cpassword\u003e \u003cvin\u003e\n\nRemote command \\\"Honk and Flash\\\" accepted by Porsche API with ID 123456\n```\n\nTo toggle the direct charging mode of a vehicle:\n\n```bash\n$ porsche toggle-direct-charging \u003cusername\u003e \u003cpassword\u003e \u003cvin\u003e \u003ctoggle-direct-charging-on\u003e\n\nRemote command \\\"Toggle Direct Charging\\\" accepted by Porsche API with ID 123456\n```\n\nTo toggle climatisation mode of a vehicle:\n\n```bash\n$ porsche toggle-direct-climatisation \u003cusername\u003e \u003cpassword\u003e \u003cvin\u003e \u003ctoggle-climatisation-on\u003e\n\nRemote command \\\"Toggle Direct Climatisation\\\" accepted by Porsche API with ID 123456\n```\n\nTo lock a vehicle:\n\n```bash\n$ porsche lock \u003cusername\u003e \u003cpassword\u003e \u003cvin\u003e\n\nRemote command \\\"Lock\\\" accepted by Porsche API with ID 123456\n```\n\nTo unlock a vehicle:\n\n```bash\n$ porsche unlock \u003cusername\u003e \u003cpassword\u003e \u003cvin\u003e \u003cpin\u003e\n\nRemote command \\\"Unlock\\\" accepted by Porsche API with ID 123456\n```\n\n\n# Install\n\n### Package Manager\n\nTo do this, add the repo to `Package.swift`, like this:\n\n```swift\nimport PackageDescription\n\nlet package = Package(\n  name: \"PorscheConnect\",\n  dependencies: [\n    .package(url: \"git@github.com:driven-app/porsche-connect.git\", \n             from: \"0.1\"),\n  ]\n)\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdriven-app%2Fporsche-connect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdriven-app%2Fporsche-connect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdriven-app%2Fporsche-connect/lists"}