{"id":30697545,"url":"https://github.com/richardpiazza/sessionplus","last_synced_at":"2026-02-01T19:03:15.445Z","repository":{"id":40386739,"uuid":"257680788","full_name":"richardpiazza/SessionPlus","owner":"richardpiazza","description":"A swift request \u0026 response framework for JSON apis.","archived":false,"fork":false,"pushed_at":"2025-02-02T18:28:29.000Z","size":64,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-18T16:34:33.152Z","etag":null,"topics":["http","swift","urlsession"],"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/richardpiazza.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-21T18:25:35.000Z","updated_at":"2025-02-02T18:28:31.000Z","dependencies_parsed_at":"2025-01-25T21:23:14.736Z","dependency_job_id":"ec91bf77-ae78-460b-8821-2dbb8c399a7c","html_url":"https://github.com/richardpiazza/SessionPlus","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/richardpiazza/SessionPlus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardpiazza%2FSessionPlus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardpiazza%2FSessionPlus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardpiazza%2FSessionPlus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardpiazza%2FSessionPlus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/richardpiazza","download_url":"https://codeload.github.com/richardpiazza/SessionPlus/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richardpiazza%2FSessionPlus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273258889,"owners_count":25073811,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-02T02:00:09.530Z","response_time":77,"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":["http","swift","urlsession"],"created_at":"2025-09-02T09:12:42.334Z","updated_at":"2026-02-01T19:03:15.439Z","avatar_url":"https://github.com/richardpiazza.png","language":"Swift","readme":"# SessionPlus\n\nA swift _request \u0026 response_ framework for JSON apis.\n\n[![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Frichardpiazza%2FSessionPlus%2Fbadge%3Ftype%3Dplatforms)](https://swiftpackageindex.com/richardpiazza/SessionPlus)\n[![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Frichardpiazza%2FSessionPlus%2Fbadge%3Ftype%3Dswift-versions)](https://swiftpackageindex.com/richardpiazza/SessionPlus)\n\nThis package has been designed to work across multiple swift environments by utilizing conditional checks. It has been tested on Apple platforms (macOS, iOS, tvOS, watchOS), as well as Linux (Ubuntu).\n\n## Usage\n\n**SessionPlus** offers a default implementation (`URLSessionClient`) that allows for requesting data from a JSON api. For example:\n\n```swift\nlet url = URL(string: \"https://api.agify.io\")!\nlet client = BaseURLSessionClient(baseURL: url)\nlet request = Get(queryItems: [URLQueryItem(name: \"name\", value: \"bob\")])\nlet response = try await client.request(request)\n```\n\n### Decoding\n\nThe `Client` protocol also offers extensions for automatically decoding responses to any `Decodable` type.\n\n```swift\nstruct ApiResult: Decodable {\n  let name: String\n  let age: Int\n  let count: Int\n}\n\n\nlet response = try await client.request(request) as ApiResult\n...\nlet response: ApiResult = try await client.request(request)\n```\n\n## Installation\n\n**SessionPlus** is distributed using the [Swift Package Manager](https://swift.org/package-manager). \nYou can add it using Xcode or by listing it as a dependency in your `Package.swift` manifest:\n\n```swift\nlet package = Package(\n  ...\n  dependencies: [\n    .package(url: \"https://github.com/richardpiazza/SessionPlus.git\", .upToNextMajor(from: \"2.0.0\")\n  ],\n  ...\n  targets: [\n    .target(\n      name: \"MyPackage\",\n      dependencies: [\n        .product(name: \"SessionPlus\", package: \"SessionPlus\"),\n      ]\n    )\n  ]\n)\n```\n\n## Contribution\n\nContributions to **SessionPlus** are welcomed and encouraged! See the [Contribution Guide](CONTRIBUTING.md) for more information.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichardpiazza%2Fsessionplus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frichardpiazza%2Fsessionplus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichardpiazza%2Fsessionplus/lists"}