{"id":21655888,"url":"https://github.com/koltyakov/sp-rest-proxy","last_synced_at":"2025-10-04T08:41:24.827Z","repository":{"id":10974163,"uuid":"67223399","full_name":"koltyakov/sp-rest-proxy","owner":"koltyakov","description":"🌐 SharePoint API Proxy for local development","archived":false,"fork":false,"pushed_at":"2025-06-20T23:05:58.000Z","size":2285,"stargazers_count":174,"open_issues_count":22,"forks_count":42,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-09-26T02:57:11.449Z","etag":null,"topics":["angular","api","developer-tools","javascript","nodejs","proxy","react","rest","sharepoint","sharepoint-online","spfx","workbench"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/koltyakov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2016-09-02T13:08:01.000Z","updated_at":"2025-09-12T15:24:14.000Z","dependencies_parsed_at":"2024-11-25T08:37:51.327Z","dependency_job_id":"834b4ec0-3fe7-4a93-9ca3-5da4494c7243","html_url":"https://github.com/koltyakov/sp-rest-proxy","commit_stats":{"total_commits":338,"total_committers":14,"mean_commits":"24.142857142857142","dds":0.6094674556213018,"last_synced_commit":"78a8afe93049371188f49c0198eb1d07008f7bea"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/koltyakov/sp-rest-proxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koltyakov%2Fsp-rest-proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koltyakov%2Fsp-rest-proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koltyakov%2Fsp-rest-proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koltyakov%2Fsp-rest-proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/koltyakov","download_url":"https://codeload.github.com/koltyakov/sp-rest-proxy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koltyakov%2Fsp-rest-proxy/sbom","scorecard":{"id":566546,"data":{"date":"2025-08-11","repo":{"name":"github.com/koltyakov/sp-rest-proxy","commit":"c616952626ab37d6ba4cedb26b1ad8652e83560a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.8,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":0,"reason":"Found 0/21 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: docker/Dockerfile:1: pin your Docker image by updating node:16-alpine to node:16-alpine@sha256:a1f9d027912b58a7c75be7716c97cfbc6d3099f3a97ed84aa490be9dee20e787","Warn: npmCommand not pinned by hash: docker/Dockerfile:4","Info:   0 out of   1 containerImage dependencies pinned","Info:   0 out of   1 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 12 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"37 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-wf5p-g6vw-rhxx","Warn: Project is vulnerable to: GHSA-jr5f-v2jv-69x6","Warn: Project is vulnerable to: GHSA-qwcr-r2fm-qrc7","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-r7qp-cfhv-p84w","Warn: Project is vulnerable to: GHSA-q9mw-68c2-j6m5","Warn: Project is vulnerable to: GHSA-rv95-896h-c2vc","Warn: Project is vulnerable to: GHSA-qw6h-vgh9-j6wx","Warn: Project is vulnerable to: GHSA-jchw-25xp-jwwc","Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-4q6p-r6v2-jvc5","Warn: Project is vulnerable to: GHSA-pfrx-2q88-qq97","Warn: Project is vulnerable to: GHSA-rc47-6667-2j5j","Warn: Project is vulnerable to: GHSA-8cf7-32gw-wr33","Warn: Project is vulnerable to: GHSA-hjrf-2m68-5959","Warn: Project is vulnerable to: GHSA-qwph-4952-7xr6","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-mwcw-c2x4-8c55","Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j","Warn: Project is vulnerable to: GHSA-rhx6-c78j-4q9w","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-m6fv-jmcg-4jfg","Warn: Project is vulnerable to: GHSA-76p7-773f-r4q5","Warn: Project is vulnerable to: GHSA-cm22-4g7w-348p","Warn: Project is vulnerable to: GHSA-25hc-qcg6-38wj","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q","Warn: Project is vulnerable to: GHSA-776f-qx25-q3cc"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-20T15:07:40.847Z","repository_id":10974163,"created_at":"2025-08-20T15:07:40.847Z","updated_at":"2025-08-20T15:07:40.847Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278288970,"owners_count":25962345,"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-10-04T02:00:05.491Z","response_time":63,"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":["angular","api","developer-tools","javascript","nodejs","proxy","react","rest","sharepoint","sharepoint-online","spfx","workbench"],"created_at":"2024-11-25T08:37:38.931Z","updated_at":"2025-10-04T08:41:24.796Z","avatar_url":"https://github.com/koltyakov.png","language":"TypeScript","readme":"# sp-rest-proxy - SharePoint REST API Proxy for local Front-end development tool-chains\n\n[![NPM](https://nodei.co/npm/sp-rest-proxy.png?mini=true\u0026downloads=true\u0026downloadRank=true)](https://nodei.co/npm/sp-rest-proxy/)\n\n[![npm version](https://badge.fury.io/js/sp-rest-proxy.svg)](https://badge.fury.io/js/sp-rest-proxy)\n[![Downloads](https://img.shields.io/npm/dm/sp-rest-proxy.svg)](https://www.npmjs.com/package/sp-rest-proxy)\n[![Build Status](https://koltyakov.visualstudio.com/SPNode/_apis/build/status/sp-rest-proxy?branchName=master)](https://koltyakov.visualstudio.com/SPNode/_build/latest?definitionId=7\u0026branchName=master)\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fkoltyakov%2Fsp-rest-proxy.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fkoltyakov%2Fsp-rest-proxy?ref=badge_shield)\n[![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://gitter.im/sharepoint-node/Lobby)\n\n\u003e Allows performing API calls to local Express application with forwarding the queries to a remote SharePoint instance.\n\nOriginal concept of the proxy was created to show how it could be easy to implements real world data communications for SharePoint Framework local serve mode during web parts debug without deployment to SharePoint tenant. Now the tool is used with multiple teams for modern front-end solutions [rapid development](https://github.com/koltyakov/sp-rest-proxy#development-paradigms).\n\n![In a nutshell](./docs/img/high-level-scheme.png)\n\n## Supports SPFx and PnP JS\n\n## Supported SharePoint versions\n\n- SharePoint Online\n- SharePoint On-Prem (2019, 2016, 2013)\n- SharePoint On-Prem 2010 (limited support)\n\n## Development paradigms\n\n- SPA development ([Angular](http://johnliu.net/blog/2017/9/angular-4-sharepoint-on-premises-localhost-development-and-sp-rest-proxy), [React](https://www.linkedin.com/pulse/getting-started-react-local-development-sharepoint-andrew-koltyakov/), Vue.js, etc.) in serve mode against real data for On-Prem and Online\n- [SharePoint Framework with local workbench](https://www.linkedin.com/pulse/local-spfx-workbench-against-real-sharepoint-api-andrew-koltyakov/)\n- [SharePoint AddIns development](https://github.com/koltyakov/sp-rest-proxy/issues/41)\n\n## Supports proxying\n\n- REST API\n- CSOM requests\n- SOAP web services\n- Custom services\n- Static resources\n\n## Proxy modes\n\n- API Proxy server\n- Socket gateway server\n- Socket gateway client\n- Custom Express apps embed mode\n\nSocket proxying allows to forward API from behind NAT (experimental).\n\n## How to use as a module\n\n1\\. Install NPM module in the project:\n\n```bash\nnpm install sp-rest-proxy\n```\n\n2\\. Create server.js with the following code:\n\n```javascript\nconst RestProxy = require('sp-rest-proxy');\n\nconst settings = {\n  configPath: './config/private.json', // Location for SharePoint instance mapping and credentials\n  port: 8080,                          // Local server port\n  staticRoot: './static'               // Root folder for static content\n};\n\nconst restProxy = new RestProxy(settings);\nrestProxy.serve();\n```\n\n[Configuration parameters cheatsheet](https://github.com/koltyakov/sp-rest-proxy/tree/master/docs/authparameters.md)\n\n3\\. Add npm task for serve into package.json:\n\n```json\n\"scripts\": {\n  \"serve\": \"node ./server.js\"\n}\n```\n\nCheck if the path to server.js is correct.\n\n4\\. Run `npm run serve`.\n\n5\\. Provide SharePoint configuration parameters.\n\n6\\. Test local API proxy in action.\n\n## How to develop\n\n### Install\n\n1\\. Clone/fork the project:\n\n```bash\ngit clone https://github.com/koltyakov/sp-rest-proxy\n```\n\n2\\. CMD to the project folder.\n\n3\\. Install dependencies:\n\n```bash\nnpm install\n```\n\n4\\. Build:\n\n```bash\nnpm run build\n```\n\n5\\. Run the server:\n\n```bash\nnpm run serve\n```\n\nor serve in TypeScript directly\n\n```bash\nnpm run ts-serve\n```\n\nPrompts credentials for a SharePoint site.\n\n6\\. Navigate to `http://localhost:8080` (or whatever in settings)\n\n7\\. Ajax REST calls as if you were in SharePoint site page context:\n\n![REST Client Example](./docs/img/client-example.png)\n\n8\\. Tests.\n\n```bash\nnpm run test\n```\n\n![Tests Example](./docs/img/tests-example.png)\n\n## Webpack Dev Server\n\n```javascript\n/* webpack.config.js */\nconst RestProxy = require('sp-rest-proxy');\n\nconst port = process.env.WEBPACK_DEV_SERVER_PORT || 9090;\n\nmodule.exports = {\n  // Common Webpack settings\n  // ...\n  devServer: {\n    watchContentBase: true,\n    writeToDisk: true,\n    port,\n    before: (app) =\u003e {\n      // Register SP API Proxy\n      new RestProxy({ port }, app).serveProxy();\n\n      // Other routes\n      // ...\n    }\n  }\n};\n```\n\n## Rollup Dev Server\n\nFor [Rollup](https://rollupjs.org/guide/en/)-based workflows, e.g. [Vite](https://vitejs.dev) tools, please check community plugin: [rollup-plugin-sp-rest-proxy](https://github.com/rquanx/rollup-plugin-sp-rest-proxy).\n\n## TypeScript support\n\nIn early days of `sp-rest-proxy`, the library was written in ES6 and used `module.exports` which was kept after migrating to TypeScript later on for the backward compatibility reasons.\n\nIn TypeScript, it's better to import the lib from `sp-rest-proxy/dist/RestProxy` to get advantages of types:\n\n```typescript\nimport RestProxy, { IProxySettings } from 'sp-rest-proxy/dist/RestProxy';\n\nconst settings: IProxySettings = {\n  configPath: './config/private.json'\n};\n\nconst restProxy = new RestProxy(settings);\nrestProxy.serve();\n```\n\n## Authentication settings\n\nThe proxy provides wizard-like approach for building and managing config files for [`node-sp-auth`](https://github.com/s-KaiNet/node-sp-auth) (Node.js to SharePoint unattended http authentication).\n\n- SharePoint Online:\n  - User credentials (SAML/ADFS)\n  - Add-In Only permissions\n  - On-Demand authentication (using Electron popup)\n- SharePoint 2019, 2016, 2013:\n  - User credentials (NTLM, NTLM v2)\n  - ADFS user credentials\n  - Form-based authentication (FBA)\n  - Form-based authentication (Forefront TMG)\n  - Add-In Only permissions\n  - On-Demand authentication (using Electron popup)\n- SharePoint 2010:\n  - User credentials (NTLM, NTMLv2)\n  - Form-based authentication (FBA)\n  - Form-based authentication (Forefront TMG)\n\nFor more information please check node-sp-auth [credential options](https://github.com/s-KaiNet/node-sp-auth#params) and [wiki pages](https://github.com/s-KaiNet/node-sp-auth/wiki).\nAuth settings are stored inside `./config/private.json`.\n\n## PnPjs\n\nsp-rest-proxy works with PnPjs (check out [brief notice](https://github.com/koltyakov/sp-rest-proxy/issues/26) how to configure).\n\n![PnP JS + sp-rest-proxy](http://koltyakov.ru/images/pnp-sp-rest-proxy.png)\n\n### Load page context helper\n\nsp-rest-proxy includes helper method for configuring page context - `loadPageContext`.\n\n```typescript\nimport { loadPageContext } from 'sp-rest-proxy/dist/utils/env';\nimport { Web } from '@pnp/sp';\n\n// loadPageContext - gets correct URL in localhost and SP environments\nloadPageContext().then(async () =\u003e {\n\n  // In both localhost and published to SharePoint page\n  // `_spPageContextInfo` will contain correct info for vital props\n\n  // PnPjs's Web object should be created in the following way\n  const web = new Web(_spPageContextInfo.webAbsoluteUrl);\n\n  // Then goes ordinary PnPjs code\n  const batch = web.createBatch();\n\n  const list = web.getList(`${_spPageContextInfo.webServerRelativeUrl}/List/ListName`);\n  const entityName = await list.getListItemEntityTypeFullName();\n\n  [1, 2, 3, 4].forEach((el) =\u003e {\n    list.items.inBatch(batch).add({\n      Title: `${el}`\n    }, entityName);\n  });\n\n  await batch.execute();\n  console.log('Done');\n\n}).catch(console.warn);\n```\n\n## JSOM (SharePoint JavaScript Object Model)\n\nJSOM can be used in local development mode with sp-rest-proxy with some additional setup.\n\nThe local development workbench page should contain JSOM init scripts:\n\n```html\n\u003cscript type=\"text/javascript\" src=\"/_layouts/15/1033/initstrings.js\"\u003e\u003c/script\u003e\n\u003cscript type=\"text/javascript\" src=\"/_layouts/15/init.js\"\u003e\u003c/script\u003e\n\u003cscript type=\"text/javascript\" src=\"/_layouts/15/MicrosoftAjax.js\"\u003e\u003c/script\u003e\n\u003cscript type=\"text/javascript\" src=\"/_layouts/15/sp.core.js\"\u003e\u003c/script\u003e\n\u003cscript type=\"text/javascript\" src=\"/_layouts/15/sp.runtime.js\"\u003e\u003c/script\u003e\n\u003cscript type=\"text/javascript\" src=\"/_layouts/15/sp.js\"\u003e\u003c/script\u003e\n```\n\nCheck out the [example](https://github.com/koltyakov/sp-rest-proxy/blob/master/test/manual/static/jsom.html).\n\n## SharePoint Framework\n\n[Blog post article with setting up SPFx and Proxy](https://www.linkedin.com/pulse/local-spfx-workbench-against-real-sharepoint-api-andrew-koltyakov/)\n\n## Use cases\n\n- Client side applications development with local serve, but real data from SharePoint\n- SharePoint Framework in local workbench with real data\n- Client applications integration test automation scenarios\n\n## Usage with Docker\n\n- [Docker Hub](https://hub.docker.com/r/koltyakov/sp-rest-proxy/)\n- [Local example](https://github.com/koltyakov/sp-rest-proxy/tree/master/docker)\n\n\n## License\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fkoltyakov%2Fsp-rest-proxy.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fkoltyakov%2Fsp-rest-proxy?ref=badge_large)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkoltyakov%2Fsp-rest-proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkoltyakov%2Fsp-rest-proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkoltyakov%2Fsp-rest-proxy/lists"}