{"id":14960420,"url":"https://github.com/proyecto26/restclient","last_synced_at":"2026-03-16T03:03:29.495Z","repository":{"id":25979708,"uuid":"104830183","full_name":"proyecto26/RestClient","owner":"proyecto26","description":"🦄  A Promise based REST and HTTP client for Unity 🎮","archived":false,"fork":false,"pushed_at":"2024-10-27T16:04:50.000Z","size":49848,"stargazers_count":1287,"open_issues_count":28,"forks_count":175,"subscribers_count":35,"default_branch":"develop","last_synced_at":"2025-04-28T15:22:53.642Z","etag":null,"topics":["ajax","async-requests","http","http-client","http-requests","httpclient","json","promises","request-promise","requests","rest","rest-api","rest-client","unity","unity-asset","unity-scripts","unity3d","unity3d-plugin","web-request","web-services"],"latest_commit_sha":null,"homepage":"https://assetstore.unity.com/packages/slug/102501","language":"C#","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/proyecto26.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"jdnichollsc","patreon":"proyecto26","open_collective":"proyecto26","ko_fi":"proyecto26","liberapay":"proyecto26","donorbox":"proyecto-26","custom":["paypal.me/jdnichollsc","buymeacoffee.com/jdnichollsc","donorbox.org/proyecto-26"]}},"created_at":"2017-09-26T03:13:51.000Z","updated_at":"2025-04-23T10:16:35.000Z","dependencies_parsed_at":"2024-11-06T00:14:31.137Z","dependency_job_id":null,"html_url":"https://github.com/proyecto26/RestClient","commit_stats":{"total_commits":266,"total_committers":19,"mean_commits":14.0,"dds":0.1278195488721805,"last_synced_commit":"efcbcf4f9c85ffcb81c5924d8d0243a53c8a0caa"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/proyecto26%2FRestClient","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/proyecto26%2FRestClient/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/proyecto26%2FRestClient/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/proyecto26%2FRestClient/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/proyecto26","download_url":"https://codeload.github.com/proyecto26/RestClient/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251336573,"owners_count":21573228,"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","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":["ajax","async-requests","http","http-client","http-requests","httpclient","json","promises","request-promise","requests","rest","rest-api","rest-client","unity","unity-asset","unity-scripts","unity3d","unity3d-plugin","web-request","web-services"],"created_at":"2024-09-24T13:22:14.622Z","updated_at":"2026-03-16T03:03:29.490Z","avatar_url":"https://github.com/proyecto26.png","language":"C#","readme":"[![Made with Unity](https://img.shields.io/badge/Made%20with-Unity-57b9d3.svg?style=flat\u0026logo=unity)](https://assetstore.unity.com/publishers/32542)\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)\n[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-brightgreen.svg)](https://github.com/proyecto26/RestClient/graphs/commit-activity)\n[![Tidelift Subscription](https://tidelift.com/badges/package/nuget/Proyecto26.RestClient)](https://tidelift.com/subscription/pkg/nuget-proyecto26-restclient?utm_source=nuget-proyecto26-restclient\u0026utm_medium=referral\u0026utm_campaign=readme)\n[![Twitter Follow][twitter-image]][twitter-url]\n\n[twitter-image]:https://img.shields.io/twitter/follow/jdnichollsc.svg?style=social\u0026label=Follow%20me\n[twitter-url]:https://twitter.com/jdnichollsc\n\n# RestClient for Unity 🤘\n\n![RestClient for Unity](https://github.com/proyecto26/RestClient/blob/master/img/rest-client_900x.png?raw=true)\n\n\u003cimg src=\"https://github.com/proyecto26/RestClient/blob/master/img/icono.png?raw=true\" width=\"150px\" align=\"right\" alt=\"Proyecto26.RestClient logo\" /\u003e\n\nThis **HTTP/REST** Client is based on Promises to avoid the [Callback Hell](http://callbackhell.com/) ☠️ and the [Pyramid of doom](https://en.wikipedia.org/wiki/Pyramid_of_doom_(programming)) 💩 working with **Coroutines** in **Unity** 🎮, example:\n\n```csharp\nvar api = \"https://jsonplaceholder.typicode.com\";\nRestClient.GetArray\u003cPost\u003e(api + \"/posts\", (err, res) =\u003e {\n  RestClient.GetArray\u003cTodo\u003e(api + \"/todos\", (errTodos, resTodos) =\u003e {\n    RestClient.GetArray\u003cUser\u003e(api + \"/users\", (errUsers, resUsers) =\u003e {\n      //Missing validations to catch errors!\n    });\n  });\n});\n```\n\nBut working with **Promises** we can improve our code, yay! 👏\n\n```csharp\nRestClient.GetArray\u003cPost\u003e(api + \"/posts\").Then(response =\u003e {\n  EditorUtility.DisplayDialog (\"Success\", JsonHelper.ArrayToJson\u003cPost\u003e(response, true), \"Ok\");\n  return RestClient.GetArray\u003cTodo\u003e(api + \"/todos\");\n}).Then(response =\u003e {\n  EditorUtility.DisplayDialog (\"Success\", JsonHelper.ArrayToJson\u003cTodo\u003e(response, true), \"Ok\");\n  return RestClient.GetArray\u003cUser\u003e(api + \"/users\");\n}).Then(response =\u003e {\n  EditorUtility.DisplayDialog (\"Success\", JsonHelper.ArrayToJson\u003cUser\u003e(response, true), \"Ok\");\n}).Catch(err =\u003e EditorUtility.DisplayDialog (\"Error\", err.Message, \"Ok\"));\n```\n\n## Features 🎮\n- Works out of the box 🎉 \n- Make **HTTP** requests from Unity\n- Supports **HTTPS/SSL**\n- Built on top of **[UnityWebRequest](https://docs.unity3d.com/ScriptReference/Networking.UnityWebRequest.html)** system\n- Transform request and response data (**JSON** serialization with **[JsonUtility](https://docs.unity3d.com/ScriptReference/JsonUtility.html)** or other tools)\n- Automatic transforms for **JSON Arrays**.\n- Supports default **HTTP** Methods **(GET, POST, PUT, DELETE, HEAD, PATCH)**\n- Generic **REQUEST** method to create any http request\n- Based on **Promises** for a better asynchronous programming. Learn about Promises [here](https://github.com/Real-Serious-Games/C-Sharp-Promise)!\n- Utility to work during scene transition\n- Handle HTTP exceptions and retry requests easily\n- Open Source 🦄\n\n## Supported platforms 📱 🖥 \nThe [UnityWebRequest](https://docs.unity3d.com/Manual/UnityWebRequest.html) system supports most Unity platforms:\n\n* All versions of the Editor and Standalone players\n* WebGL\n* Mobile platforms: iOS, Android\n* Universal Windows Platform\n* PS4 and PSVita\n* XboxOne\n* HoloLens\n* Nintendo Switch\n\n## Demo ⏯\nDo you want to see this beautiful package in action? Download the demo [here](https://minhaskamal.github.io/DownGit/#/home?url=https://github.com/proyecto26/RestClient/tree/master/demo)\n\n![Unity configuration](https://github.com/proyecto26/RestClient/blob/master/img/unity_demo.png?raw=true)\n![Demo](https://github.com/proyecto26/RestClient/blob/master/img/demo.png?raw=true)\n\n## Installation 👨‍💻\n\n### Unity package\nDownload and install the **.unitypackage** file of the latest release published [here](https://github.com/proyecto26/RestClient/releases).\n\n### UPM package\nMake sure you had installed [C# Promise package](https://openupm.com/packages/com.rsg.promise/) or at least have it in your [openupm scope registry](https://openupm.com/). Then install **RestClient package** using this URL from **Package Manager**: `https://github.com/proyecto26/RestClient.git#upm`\n\n### NuGet package\nOther option is download this package from **NuGet** with **Visual Studio** or using the **nuget-cli**, a **[NuGet.config](https://github.com/proyecto26/RestClient/blob/master/demo/NuGet.config)** file is required at the root of your **Unity Project**, for example:\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003cconfiguration\u003e\n  \u003cconfig\u003e\n    \u003cadd key=\"repositoryPath\" value=\"./Assets/Packages\" /\u003e\n  \u003c/config\u003e\n\u003c/configuration\u003e\n```\nThe package to search for is **[Proyecto26.RestClient](https://www.nuget.org/packages/Proyecto26.RestClient/)**.\n\n## Getting Started 📚\nThe default methods **(GET, POST, PUT, DELETE, HEAD)** are:\n```csharp\nRestClient.Get(\"https://jsonplaceholder.typicode.com/posts/1\").Then(response =\u003e {\n  EditorUtility.DisplayDialog(\"Response\", response.Text, \"Ok\");\n});\nRestClient.Post(\"https://jsonplaceholder.typicode.com/posts\", newPost).Then(response =\u003e {\n  EditorUtility.DisplayDialog(\"Status\", response.StatusCode.ToString(), \"Ok\");\n});\nRestClient.Put(\"https://jsonplaceholder.typicode.com/posts/1\", updatedPost).Then(response =\u003e {\n  EditorUtility.DisplayDialog(\"Status\", response.StatusCode.ToString(), \"Ok\");\n});\nRestClient.Delete(\"https://jsonplaceholder.typicode.com/posts/1\").Then(response =\u003e {\n  EditorUtility.DisplayDialog(\"Status\", response.StatusCode.ToString(), \"Ok\");\n});\nRestClient.Head(\"https://jsonplaceholder.typicode.com/posts\").Then(response =\u003e {\n  EditorUtility.DisplayDialog(\"Status\", response.StatusCode.ToString(), \"Ok\");\n});\n```\n\n## Handling during scene transition\n```csharp\nExecuteOnMainThread.RunOnMainThread.Enqueue(() =\u003e {\n  //Any API call using RestClient\n});\n```\n\n### Generic Request Method\nAnd we have a generic method to create any type of request:\n```csharp\nRestClient.Request(new RequestHelper { \n  Uri = \"https://jsonplaceholder.typicode.com/photos\",\n  Method = \"POST\",\n  Timeout = 10,\n  Params = new Dictionary\u003cstring, string\u003e {\n    { \"param1\", \"Query string param...\" }\n  },\n  Headers = new Dictionary\u003cstring, string\u003e {\n    { \"Authorization\", \"Bearer JWT_token...\" }\n  },\n  Body = newPhoto, //Serialize object using JsonUtility by default\n  BodyString = SerializeObject(newPhoto), //Use it instead of 'Body' to serialize using other tools\n  BodyRaw = CompressToRawData(newPhoto), //Use it instead of 'Body' to send raw data directly\n  FormData = new WWWForm(), //Send files, etc with POST requests\n  SimpleForm = new Dictionary\u003cstring, string\u003e {}, //Content-Type: application/x-www-form-urlencoded\n  FormSections = new List\u003cIMultipartFormSection\u003e() {}, //Content-Type: multipart/form-data\n  CertificateHandler = new CustomCertificateHandler(), //Create custom certificates\n  UploadHandler = new UploadHandlerRaw(bytes), //Send bytes directly if it's required\n  DownloadHandler = new DownloadHandlerFile(destPah), //Download large files\n  ContentType = \"application/json\", //JSON is used by default\n  Retries = 3, //Number of retries\n  RetrySecondsDelay = 2, //Seconds of delay to make a retry\n  RetryCallbackOnlyOnNetworkErrors = true, //Invoke RetryCallack only when the retry is provoked by a network error\n  RetryCallback = (err, retries) =\u003e {}, //See the error before retrying the request\n  ProgressCallback = (percent) =\u003e {}, //Reports progress of the request from 0 to 1\n  EnableDebug = true, //See logs of the requests for debug mode\n  IgnoreHttpException = true, //Prevent to catch http exceptions\n  ChunkedTransfer = false,\n  UseHttpContinue = true,\n  RedirectLimit = 32,\n  DefaultContentType = false, //Disable JSON content type by default\n  ParseResponseBody = false //Don't encode and parse downloaded data as JSON\n}).Then(response =\u003e {\n  //Get resources via downloadHandler to get more control!\n  Texture texture = ((DownloadHandlerTexture)response.Request.downloadHandler).texture;\n  AudioClip audioClip = ((DownloadHandlerAudioClip)response.Request.downloadHandler).audioClip;\n  AssetBundle assetBundle = ((DownloadHandlerAssetBundle)response.Request.downloadHandler).assetBundle;\n\n  EditorUtility.DisplayDialog(\"Status\", response.StatusCode.ToString(), \"Ok\");\n}).Catch(err =\u003e {\n  var error = err as RequestException;\n  EditorUtility.DisplayDialog(\"Error Response\", error.Response, \"Ok\");\n});\n```\n\n- Example downloading an audio file:\n```csharp\nvar fileUrl = \"https://raw.githubusercontent.com/IonDen/ion.sound/master/sounds/bell_ring.ogg\";\nvar fileType = AudioType.OGGVORBIS;\n\nRestClient.Get(new RequestHelper {\n  Uri = fileUrl,\n  DownloadHandler = new DownloadHandlerAudioClip(fileUrl, fileType)\n}).Then(res =\u003e {\n  AudioSource audio = GetComponent\u003cAudioSource\u003e();\n  audio.clip = ((DownloadHandlerAudioClip)res.Request.downloadHandler).audioClip;\n  audio.Play();\n}).Catch(err =\u003e {\n  EditorUtility.DisplayDialog (\"Error\", err.Message, \"Ok\");\n});\n```\n\nWith all the methods we have the possibility to indicate the type of response, in the following example we're going to create a class and the **HTTP** requests to load **JSON** data easily:\n```csharp\n[Serializable]\npublic class User\n{\n  public int id;\n  public string name;\n  public string username;\n  public string email;\n  public string phone;\n  public string website;\n}\n```\n\n* **GET JSON**\n```csharp\nvar usersRoute = \"https://jsonplaceholder.typicode.com/users\"; \nRestClient.Get\u003cUser\u003e(usersRoute + \"/1\").Then(firstUser =\u003e {\n  EditorUtility.DisplayDialog(\"JSON\", JsonUtility.ToJson(firstUser, true), \"Ok\");\n});\n```\n* **GET Array (JsonHelper is an extension to manage arrays)**\n```csharp\nRestClient.GetArray\u003cUser\u003e(usersRoute).Then(allUsers =\u003e {\n  EditorUtility.DisplayDialog(\"JSON Array\", JsonHelper.ArrayToJsonString\u003cUser\u003e(allUsers, true), \"Ok\");\n});\n```\n\nAlso we can create different classes for custom responses:\n```csharp\n[Serializable]\npublic class CustomResponse\n{\n  public int id;\n}\n```\n* **POST**\n```csharp\nRestClient.Post\u003cCustomResponse\u003e(usersRoute, newUser).Then(customResponse =\u003e {\n  EditorUtility.DisplayDialog(\"JSON\", JsonUtility.ToJson(customResponse, true), \"Ok\");\n});\n```\n* **PUT**\n```csharp\nRestClient.Put\u003cCustomResponse\u003e(usersRoute + \"/1\", updatedUser).Then(customResponse =\u003e {\n  EditorUtility.DisplayDialog(\"JSON\", JsonUtility.ToJson(customResponse, true), \"Ok\");\n});\n```\n\n## Custom HTTP Headers, Params and Options 💥\n**HTTP Headers**, such as `Authorization`, can be set in the **DefaultRequestHeaders** object for all requests\n```csharp\nRestClient.DefaultRequestHeaders[\"Authorization\"] = \"Bearer ...\";\n```\n\n**Query string params** can be set in the **DefaultRequestParams** object for all requests\n```csharp\nRestClient.DefaultRequestParams[\"param1\"] = \"Query string value...\";\n```\n\nAlso we can add specific options and override default headers and params for a request\n```csharp\nvar currentRequest = new RequestHelper { \n  Uri = \"https://jsonplaceholder.typicode.com/photos\",\n  Headers = new Dictionary\u003cstring, string\u003e {\n    { \"Authorization\", \"Other token...\" }\n  },\n  Params = new Dictionary\u003cstring, string\u003e {\n    { \"param1\", \"Other value...\" }\n  }\n};\nRestClient.GetArray\u003cPhoto\u003e(currentRequest).Then(response =\u003e {\n  EditorUtility.DisplayDialog(\"Header\", currentRequest.GetHeader(\"Authorization\"), \"Ok\");\n});\n```\n\nAnd we can know the status of the request and cancel it!\n```csharp\ncurrentRequest.UploadProgress; //The progress by uploading data to the server\ncurrentRequest.UploadedBytes; //The number of bytes of body data the system has uploaded\ncurrentRequest.DownloadProgress; //The progress by downloading data from the server\ncurrentRequest.DownloadedBytes; //The number of bytes of body data the system has downloaded\ncurrentRequest.Abort(); //Abort the request manually\n```\n\nAdditionally we can run a callback function whenever a progress change happens!\n```csharp\nRestClient.Get(new RequestHelper {\n  Uri = \"https://jsonplaceholder.typicode.com/users\", \n  ProgressCallback = percent =\u003e Debug.Log(percent)\n});\n```\n\nLater we can clear the default headers and params for all requests\n```csharp\nRestClient.ClearDefaultHeaders();\nRestClient.ClearDefaultParams();\n```\n\n### Example\n- Unity as Client\n```csharp\n[Serializable]\npublic class ServerResponse {\n  public string id;\n  public string date; //DateTime is not supported by JsonUtility\n}\n[Serializable]\npublic class User {\n  public string firstName;\n  public string lastName;\n}\nRestClient.Post\u003cServerResponse\u003e(\"www.api.com/endpoint\", new User {\n  firstName = \"Juan David\",\n  lastName = \"Nicholls Cardona\"\n}).Then(response =\u003e {\n  EditorUtility.DisplayDialog(\"ID: \", response.id, \"Ok\");\n  EditorUtility.DisplayDialog(\"Date: \", response.date, \"Ok\");\n});\n```\n- NodeJS as Backend (Using [Express](http://expressjs.com/es/starter/hello-world.html))\n```js\nrouter.post('/', function(req, res) {\n  console.log(req.body.firstName)\n  res.json({\n    id: 123,\n    date: new Date()\n  })\n});\n```\n\n## Credits 👍\n* **C-Sharp-Promise:** [Promises library for C# for management of asynchronous operations.](https://github.com/Real-Serious-Games/C-Sharp-Promise)\n* **MyAPI:** [A template to create awesome APIs easily ⚡️](https://github.com/proyecto26/MyAPI)\n\n## Contributing ✨\nWhen contributing to this repository, please first discuss the change you wish to make via issue, email, or any other method with the owners of this repository before making a change.  \nContributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated** ❤️.  \nYou can learn more about how you can contribute to this project in the [contribution guide](https://github.com/proyecto26/RestClient/blob/develop/CONTRIBUTING.md).\n\n## Contributors ✨\nPlease do contribute! Issues and pull requests are welcome.\n\n### Code Contributors\n\nThis project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].\n\n\u003ca href=\"https://github.com/proyecto26/RestClient/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=proyecto26/RestClient\" /\u003e\n\u003c/a\u003e\n\n### Collaborators\n\u003c!-- COLLABORATORS-LIST:START - Do not remove or modify this section --\u003e\n[\u003cimg alt=\"jdnichollsc\" src=\"https://avatars3.githubusercontent.com/u/2154886?v=3\u0026s=117\" width=\"117\"\u003e](https://github.com/jdnichollsc) | [\u003cimg alt=\"diegoossa\" src=\"https://avatars3.githubusercontent.com/u/3436237?v=3\u0026s=117\" width=\"117\"\u003e](https://github.com/diegoossa) | [\u003cimg alt=\"nasdull\" src=\"https://avatars3.githubusercontent.com/u/25492923?v=3\u0026s=117\" width=\"117\"\u003e](https://github.com/nasdull) | [\u003cimg alt=\"nasdull\" src=\"https://avatars.githubusercontent.com/u/29339330?v=4\" width=\"117\"\u003e](https://github.com/maifeeulasad) |\n:---: | :---: | :---: | :---: |\n[Juan Nicholls](mailto:jdnichollsc@hotmail.com) | [Diego Ossa](mailto:diegoossa@gmail.com) | [Nasdull](mailto:nasdull@hotmail.com) | [Maifee Ul Asad](mailto:maifeeulasad@gmail.com) |\n\u003c!-- COLLABORATORS-LIST:END --\u003e\n\n## Supporting 🍻\nI believe in Unicorns 🦄\nSupport [me](http://www.paypal.me/jdnichollsc/2), if you do too.\n\nDonate **Ethereum**, **ADA**, **BNB**, **SHIBA**, **USDT/USDC**, **DOGE**, etc:\n\n\u003e Wallet address: jdnichollsc.eth\n\nPlease let us know your contributions! 🙏\n\n## Enterprise 💼\n\nAvailable as part of the Tidelift Subscription.\n\nThe maintainers of RestClient for Unity and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/nuget-proyecto26-restclient?utm_source=nuget-proyecto26-restclient\u0026utm_medium=referral\u0026utm_campaign=enterprise\u0026utm_term=repo)\n\n## Security contact information 🚨\nTo report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure.\n\n## Who is using RestClient ⚔️\nWe are battle tested. There is a list of our usage in production:\n - mainware. Ref: https://github.com/proyecto26/RestClient/issues/138#issuecomment-725552712\n - virsabi. Ref: https://github.com/proyecto26/RestClient/issues/138#issuecomment-863222899\n - type3studio. Ref: https://github.com/proyecto26/RestClient/issues/138#issuecomment-1415945883\n\n## License ⚖️\nThis repository is available under the [MIT License](https://github.com/proyecto26/RestClient/blob/develop/LICENSE).\n\n## Happy coding 💯\nMade with ❤️\n\n\u003cimg width=\"150px\" src=\"https://avatars0.githubusercontent.com/u/28855608?s=200\u0026v=4\" align=\"right\"\u003e\n","funding_links":["https://github.com/sponsors/jdnichollsc","https://patreon.com/proyecto26","https://opencollective.com/proyecto26","https://ko-fi.com/proyecto26","https://liberapay.com/proyecto26","proyecto-26","paypal.me/jdnichollsc","buymeacoffee.com/jdnichollsc","donorbox.org/proyecto-26","https://tidelift.com/badges/package/nuget/Proyecto26.RestClient","https://tidelift.com/subscription/pkg/nuget-proyecto26-restclient?utm_source=nuget-proyecto26-restclient\u0026utm_medium=referral\u0026utm_campaign=readme","http://www.paypal.me/jdnichollsc/2","https://tidelift.com/subscription/pkg/nuget-proyecto26-restclient?utm_source=nuget-proyecto26-restclient\u0026utm_medium=referral\u0026utm_campaign=enterprise\u0026utm_term=repo","https://tidelift.com/security"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fproyecto26%2Frestclient","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fproyecto26%2Frestclient","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fproyecto26%2Frestclient/lists"}