{"id":32207451,"url":"https://github.com/datarapi/rapi","last_synced_at":"2025-10-22T05:53:29.081Z","repository":{"id":223736605,"uuid":"761353779","full_name":"DataRapi/Rapi","owner":"DataRapi","description":"Rapi package is an interface to make requests from data providers. Current version is able to connect to APIs of EDDS of CBRT (Central Bank of the Republic of Türkiye) and FRED API of FED (Federal Reserve Bank).","archived":false,"fork":false,"pushed_at":"2025-01-14T12:03:22.000Z","size":4150,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-22T05:53:28.608Z","etag":null,"topics":["edds","evds","evds-api","evdsapi","fred","r","rpackage"],"latest_commit_sha":null,"homepage":"https://datarapi.github.io/Rapi/","language":"R","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/DataRapi.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-02-21T17:58:20.000Z","updated_at":"2025-01-14T12:03:25.000Z","dependencies_parsed_at":"2024-03-09T13:47:18.740Z","dependency_job_id":"5ab57988-23c3-409a-b072-3bed4d0d28d6","html_url":"https://github.com/DataRapi/Rapi","commit_stats":null,"previous_names":["datarapi/rapi"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/DataRapi/Rapi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DataRapi%2FRapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DataRapi%2FRapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DataRapi%2FRapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DataRapi%2FRapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DataRapi","download_url":"https://codeload.github.com/DataRapi/Rapi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DataRapi%2FRapi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280389299,"owners_count":26322507,"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-22T02:00:06.515Z","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":["edds","evds","evds-api","evdsapi","fred","r","rpackage"],"created_at":"2025-10-22T05:53:25.656Z","updated_at":"2025-10-22T05:53:29.071Z","avatar_url":"https://github.com/DataRapi.png","language":"R","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n## Rapi\n## [![CRAN_Status_Badge](https://img.shields.io/cran/v/Rapi?color=952100)](https://cran.r-project.org/package=Rapi) [![R-CMD-check](https://github.com/DataRapi/Rapi/actions/workflows/R_CMD_check.yml/badge.svg)](https://github.com/DataRapi/Rapi/actions/workflows/R_CMD_check.yml)\n \n\n[![DOI](https://zenodo.org/badge/761353779.svg)](https://zenodo.org/doi/10.5281/zenodo.10800216)\n\n![](https://cranlogs.r-pkg.org/badges/grand-total/Rapi?color=green)\n![](https://cranlogs.r-pkg.org/badges/Rapi?color=green)\n![](https://cranlogs.r-pkg.org/badges/last-week/Rapi?color=green)\n\n## Overview\n\nRapi package is an interface to make requests from data providers. \nCurrent version is able to connect to APIs of [`EDDS`](https://evds2.tcmb.gov.tr/index.php?/evds/userDocs/) of CBRT (Central Bank of the Republic of Türkiye)\nand [FRED API](https://fred.stlouisfed.org/docs/api/fred/) of FED (Federal Reserve Bank). \n\n## Installation\n\nYou can install the package from CRAN using:\n\n``` r\ninstall.packages(\"Rapi\")\n\n```\n\n### Development version\n\nOr you can install the development version from GitHub:\n\n``` r\n\nlibrary(devtools)\ninstall_github(\"DataRapi/Rapi\")\n```\n\n## Usage\n\n### set_api_key\n\n\n\n``` r\n# Set API keys for `EDDS`\nset_api_key(\"YOUR_EDDS_API_KEY\", \"evds\", \"env\")\n# Set API keys for FRED\nset_api_key(\"YOUR_FRED_API_KEY\", \"fred\", \"env\")\n# Alternatively, you can use file-based configuration\nset_api_key(\"YOUR_EDDS_API_KEY\", \"evds\", \"file\")\nset_api_key(\"YOUR_FRED_API_KEY\", \"fred\", \"file\")\n\n```\n\n###  get_series \n\n\u003e Example 1: Explicit Sources\n\n``` r\n# Define a template for series with explicit sources\ntemplate \u003c- \"\n    UNRATE        #fred (series)\n    bie_abreserv  #evds (table)\n    TP.AB.B1      #evds (series)\n\"\n```\n\n\n\u003e Example 2: Index-based Definition\n\n``` r\n# Define a template for series with indexes\ntemplate \u003c- \"\n    UNRATE         \n    bie_abreserv  \n    TP.AB.B1      \n\"\n```\n\nIn the index-based definition, the package will automatically figure out the source\nand base from the provided indexes.\n\n``` r\n# Fetch data based on the template\nobj \u003c- get_series(template, start_date = \"2012/05/22\", cache = FALSE)\n\n# Display the results\nprint(obj)\n\n======================================Rapi_GETPREP=======\n  status      : completed\n  index       : \n    UNRATE        #fred (series)\n    bie_abreserv  #evds (table)\n    TP.AB.B1      #evds (series)\n\n  start_date  : 2012/05/22\n  end_date    : 2100-01-01\n  status [completed]\n\n lines$data\n===================\n ! each line corresponds to a different set of func and data\n    data can be reached as below\n        --\u003e obj$lines$data\n  # A tibble: 3 × 8\n  index        source base   comments      freq  fnc_str         fnc          data              \n  \u003cchr\u003e        \u003cchr\u003e  \u003cchr\u003e  \u003cchr\u003e         \u003cchr\u003e \u003cchr\u003e           \u003cnamed list\u003e \u003clist\u003e            \n1 UNRATE       fred   series fred (series) null  fred_series_fnc \u003cfn\u003e         \u003ctibble [139 × 2]\u003e\n2 bie_abreserv evds   table  evds (table)  null  evds_table_fnc  \u003cfn\u003e         \u003ctibble [138 × 6]\u003e\n3 TP.AB.B1     evds   series evds (series) null  evds_series_fnc \u003cfn\u003e         \u003ctibble [138 × 2]\u003e\n data\n===================\n  (combined) data\n\n    a combined data frame will be constructed\n    combined data can be reached as\n        --\u003e obj$data\n  # A tibble: 138 × 8\n   date       UNRATE TP_AB_B1 TP_AB_B2 TP_AB_B3 TP_AB_B4 TP_AB_B6 TP.AB.B1\n   \u003cdate\u003e      \u003cdbl\u003e    \u003cdbl\u003e    \u003cdbl\u003e    \u003cdbl\u003e    \u003cdbl\u003e    \u003cdbl\u003e    \u003cdbl\u003e\n 1 2012-06-01    8.2   12438.   83062.   17704.   95500.  113204.   12438.\n 2 2012-07-01    8.2   15068.   85044.   17526.  100113.  117639.   15068.\n 3 2012-08-01    8.1   15706.   93006.   16191.  108712.  124903.   15706.\n 4 2012-09-01    7.8   17289.   94797    16106.  112086.  128192    17289.\n 5 2012-10-01    7.8   17675.   99534.   14575.  117208.  131783.   17675.\n 6 2012-11-01    7.7   18200.  100162.   15532.  118362.  133894.   18200.\n 7 2012-12-01    7.9   19235.   99933.   18326.  119168.  137493    19235.\n 8 2013-01-01    8     19860.  104349.   15466.  124210.  139676    19860.\n 9 2013-02-01    7.7   19204.  104023.   14783.  123227.  138010.   19204.\n10 2013-03-01    7.5   21037.  105658.   15164.  126695.  141859.   21037.\n# ℹ 128 more rows\n# ℹ Use `print(n = ...)` to see more rows\n\n=========================================================\n  ```\n### Additional Usage Examples\n``` r\n# Fetch data for a specific index\no \u003c- get_series(\"bie_yssk\", start_date = \"2010-01-01\")\nprint(o)\n\n# Fetch data for multiple indexes using a vector or template\nindex_vector \u003c- c(\"TP_YSSK_A1\", \"TP_YSSK_A2\")\no \u003c- get_series(index_vector)\nprint(o)\n\n# Remove NA values from the data frame\ndf_raw \u003c- o$data\ndf \u003c- remove_na_safe(df_raw)\nprint(df)\n\n# Create a lagged data frame\ndf2 \u003c- lag_df(df, list(TP_YSSK_A1 = 1:3, TP_YSSK_A2 = 1:6))\nprint(df2)\n\n```\n\n``` r\n  \no \u003c- get_series(\"bie_yssk\" , start_date = \"2010-01-01\")\no\n# ======================================Rapi_GETPREP=======\n#     status      : completed\n# index       : bie_yssk\n# start_date  : 2010-01-01\n# end_date    : 2100-01-01\n# ................... resolved [completed] ..............\n# \n# ..................................\n# .........\u003e lines   .............\n# ..................................\n# # each line corresponds to a different set of func and data\n# data can be reached as below\n\u003e obj$lines$data\n# # A tibble: 1 × 8\n# index    source base  comments freq  fnc_str        fnc          data              \n# \u003cchr\u003e    \u003cchr\u003e  \u003cchr\u003e \u003cchr\u003e    \u003cchr\u003e \u003cchr\u003e          \u003cnamed list\u003e \u003clist\u003e            \n#     1 bie_yssk evds   table \" \"      null  evds_table_fnc \u003cfn\u003e         \u003ctibble [167 × 7]\u003e\n#     ..................................\n# .........\u003e (combined) data ...\n# ..................................\n# a combined data frame will be constructed\n# combined data can be reached as\n\u003e obj$data\n# # A tibble: 167 × 7\n# date       TP_YSSK_A1 TP_YSSK_A2 TP_YSSK_A3 TP_YSSK_A4 TP_YSSK_A5 TP_YSSK_A6\n# \u003cdate\u003e          \u003cdbl\u003e      \u003cdbl\u003e      \u003cdbl\u003e      \u003cdbl\u003e      \u003cdbl\u003e      \u003cdbl\u003e\n#     1 2010-01-01       7928       6126       5020       5644      51100      75818\n# 2 2010-02-01       7619       6030       4911       5521      50088      74168\n# 3 2010-03-01       7517       5998       4920       5534      49625      73595\n# 4 2010-04-01       7333       5822       4859       5435      49360      72809\n# 5 2010-05-01       7136       5510       4922       5266      48108      70942\n# 6 2010-06-01       6906       5257       4449       5277      47464      69353\n# 7 2010-07-01       6836       5363       4445       5396      49051      71092\n# 8 2010-08-01       6758       5291       4411       5281      48407      70148\n# 9 2010-09-01       6799       5200       4411       5375      50099      71885\n# 10 2010-10-01       6770       5094       4324       5358      51091      72637\n# # ℹ 157 more rows\n# # ℹ Use print(n = ...) to see more rows\n# ...........................................................\n# \n# =========================================================\n```\n### indexes can be given as a vector or a string template \n```r\n\nindex_vector  = c( \"TP_YSSK_A1\" , \"TP_YSSK_A2\" )\n# or as a template it gives same result \nindex_template \u003c- \"\nTP_YSSK_A1\nTP_YSSK_A2\n\"\n\no \u003c- get_series(index_vector )\no\n\no \u003c- get_series(index_template )\no\n```\n\nAccessing Combined and Lines Data Frames\n\nOnce you have retrieved your data using the defined series, you can access the combined data frame and the lines data frame using the following structures:\n```r\n# Access the combined data frame\ncombined_data \u003c- obj$data\n\n# Access the 'lines' data frame\nlines_data \u003c- obj$lines\n```\nThis structure allows you to easily navigate through the object to access specific data frames.\n\n```r \ndf_raw \u003c- o$data\n\ndf_raw\n# # A tibble: 287 × 3\n# date       TP_YSSK_A1 TP_YSSK_A2\n# \u003cdate\u003e          \u003cdbl\u003e      \u003cdbl\u003e\n#     1 2000-01-01         NA         NA\n# 2 2000-02-01         NA         NA\n# 3 2000-03-01         NA         NA\n# 4 2000-04-01         NA         NA\n# 5 2000-05-01         NA         NA\n# 6 2000-06-01         NA         NA\n# 7 2000-07-01         NA         NA\n# 8 2000-08-01         NA         NA\n# 9 2000-09-01         NA         NA\n# 10 2000-10-01         NA         NA\n# # ℹ 277 more rows\n# # ℹ Use `print(n = ...)` to see more rows\n```\n\n### remove_na_safe\n\nThis function removes rows from both ends of a data frame until it identifies a row where all columns have non-NA values. The process involves two steps:\n\n1. **Trimming from the Beginning:** It starts from the beginning and removes rows until it encounters a row with complete data in all columns.\n\n2. **Trimming from the End:** After the initial trimming, it proceeds to remove rows from the end of the data frame, eliminating any rows with at least one NA value in any column, until it reaches a row where all columns contain non-NA values.\n\nThe process stops when it finds a row where all columns contain non-NA values, and the resulting data frame is returned.\n\n#### Usage:\n\n```R\n# Example data frame\nexample_data \u003c- data.frame(\n  A = c(1, 2, 3, NA, 5),\n  B = c(NA, 2, 3, 4, 5),\n  C = c(1, 2, 3, 4, 5)\n)\n\n# Remove NA values from both ends\ncleaned_data \u003c- remove_na_safe(example_data)\n\n# View the cleaned data frame\nprint(cleaned_data)\n\n```\n\nIn this example, the function remove_na_safe is applied to the example_data data frame. \nThe resulting cleaned_data will have rows removed from both ends until a row with non-NA values in all columns is reached.\n\n```r \ndf \u003c- remove_na_safe(df_raw )\ndf \n# # A tibble: 263 × 3\n# date       TP_YSSK_A1 TP_YSSK_A2\n# \u003cdate\u003e          \u003cdbl\u003e      \u003cdbl\u003e\n#     1 2002-01-01       2673       1197\n# 2 2002-02-01       3235       1262\n# 3 2002-03-01       3561       1432\n# 4 2002-04-01       3872       1525\n# 5 2002-05-01       4124       1642\n# 6 2002-06-01       4432       1748\n# 7 2002-07-01       4823       1841\n# 8 2002-08-01       4903       1732\n# 9 2002-09-01       5155       1706\n# 10 2002-10-01       5066       1709\n# # ℹ 253 more rows\n# ℹ Use `print(n = ...)` to see more rows\n\n```\n\n\n### lag_df  \n\nThe `lag_df` function creates additional columns based on a list of column names and lag sequences. \nThis feature is beneficial for scenarios where you need varying lag selections\nfor certain columns, allowing flexibility in specifying different lags for \ndifferent columns or opting for no lag at all.\n\n#### Usage Example:\n\n```R\n# Example data frame\nexample_data \u003c- data.frame(\n  a = c(10, 20, 30, 40, 50),\n  b = c(100, 200, 300, 400, 500)\n)\n\n# Applying lag_df function with specified lag sequences\nlagged_data \u003c- lag_df(example_data, list(a = 1:3, b = 1:2))\n\n# View the lagged data frame\nprint(lagged_data)\n\n# A tibble: 5 × 7\n      a     b a_lag_1 a_lag_2 a_lag_3 b_lag_1 b_lag_2\n  \u003cdbl\u003e \u003cdbl\u003e   \u003cdbl\u003e   \u003cdbl\u003e   \u003cdbl\u003e   \u003cdbl\u003e   \u003cdbl\u003e\n1    10   100      NA      NA      NA      NA      NA\n2    20   200      10      NA      NA     100      NA\n3    30   300      20      10      NA     200     100\n4    40   400      30      20      10     300     200\n5    50   500      40      30      20     400     300\n```\n\nIn this example, the lag_df function is applied to the example_data data frame with\nspecified columns (a and b) and corresponding lag sequences (1:3 and 1:6). \nThe resulting lagged_data will have additional columns representing the specified lags.\n\n\n```r\ndf2 \u003c- lag_df( df , list( TP_YSSK_A1 = 1 : 3 , TP_YSSK_A2 = 1 : 6 ) )\ndf2\n# # A tibble: 263 × 12\n# date       TP_YSSK_A1 TP_YSSK_A2 TP_YSSK_A1_lag_1 TP_YSSK_A1_lag_2 TP_YSSK_A1_lag_3 TP_YSSK_A2_lag_1 TP_YSSK_A2_lag_2\n# \u003cdate\u003e          \u003cdbl\u003e      \u003cdbl\u003e            \u003cdbl\u003e            \u003cdbl\u003e            \u003cdbl\u003e            \u003cdbl\u003e            \u003cdbl\u003e\n#     1 2002-01-01       2673       1197               NA               NA               NA               NA               NA\n# 2 2002-02-01       3235       1262             2673               NA               NA             1197               NA\n# 3 2002-03-01       3561       1432             3235             2673               NA             1262             1197\n# 4 2002-04-01       3872       1525             3561             3235             2673             1432             1262\n# 5 2002-05-01       4124       1642             3872             3561             3235             1525             1432\n# 6 2002-06-01       4432       1748             4124             3872             3561             1642             1525\n# 7 2002-07-01       4823       1841             4432             4124             3872             1748             1642\n# 8 2002-08-01       4903       1732             4823             4432             4124             1841             1748\n# 9 2002-09-01       5155       1706             4903             4823             4432             1732             1841\n# 10 2002-10-01       5066       1709             5155             4903             4823             1706             1732\n# # ℹ 253 more rows\n# # ℹ 4 more variables: TP_YSSK_A2_lag_3 \u003cdbl\u003e, TP_YSSK_A2_lag_4 \u003cdbl\u003e, TP_YSSK_A2_lag_5 \u003cdbl\u003e, TP_YSSK_A2_lag_6 \u003cdbl\u003e\n# # ℹ Use `print(n = ...)` to see more rows\n```\n\n`get_series` function does not require source names for IDs. The function uses hints \nto figure out which sources to request from for the index IDs given.\n\n\n```r \nindex_template \u003c- \"\nTP_YSSK_A1\nTP_YSSK_A2\nUNRATE\n\"\n\no \u003c- get_series(index_template )\no\n\n```\n\nAccessing Individual Data Frames\n\nOnce you have retrieved your data using the defined series, individual data frames\ncan be accessed using the following structure:\n\n```r\nyour_data \u003c- object$lines$data\n\n```\n\nThis structure allows you to navigate through the object to access specific data frames.\n\n```r\n\n\u003e o$lines\n# # A tibble: 3 × 8\n#   index        source base   comments      freq  fnc_str         fnc          data              \n#   \u003cchr\u003e        \u003cchr\u003e  \u003cchr\u003e  \u003cchr\u003e         \u003cchr\u003e \u003cchr\u003e           \u003cnamed list\u003e \u003clist\u003e            \n# 1 UNRATE       fred   series fred (series) null  fred_series_fnc \u003cfn\u003e         \u003ctibble [228 × 2]\u003e\n# 2 bie_abreserv evds   table  evds (table)  null  evds_table_fnc  \u003cfn\u003e         \u003ctibble [287 × 6]\u003e\n# 3 TP.AB.B1     evds   series evds (series) null  evds_series_fnc \u003cfn\u003e         \u003ctibble [287 × 2]\u003e\n\u003e o$lines$data\n# [[1]]\n# # A tibble: 228 × 2\n#    date       UNRATE\n#    \u003cdate\u003e      \u003cdbl\u003e\n#  1 2005-01-01    5.3\n#  2 2005-02-01    5.4\n#  3 2005-03-01    5.2\n#  4 2005-04-01    5.2\n#  5 2005-05-01    5.1\n#  6 2005-06-01    5  \n#  7 2005-07-01    5  \n#  8 2005-08-01    4.9\n#  9 2005-09-01    5  \n# 10 2005-10-01    5  \n# # ℹ 218 more rows\n# # ℹ Use `print(n = ...)` to see more rows\n# \n# [[2]]\n# # A tibble: 287 × 6\n#    date       TP_AB_B1 TP_AB_B2 TP_AB_B3 TP_AB_B4 TP_AB_B6\n#    \u003cdate\u003e        \u003cdbl\u003e    \u003cdbl\u003e    \u003cdbl\u003e    \u003cdbl\u003e    \u003cdbl\u003e\n#  1 2000-01-01    1011    22859.    8943.   23870.   32812.\n#  2 2000-02-01    1011    22907.    8296.   23918.   32214.\n#  3 2000-03-01    1011.   22926.    9817.   23937.   33754.\n#  4 2000-04-01    1011.   22337     8579.   23348.   31926.\n#  5 2000-05-01    1011.   22950.    8451.   23961.   32412.\n#  6 2000-06-01    1011.   24547.    9270.   25558.   34827.\n#  7 2000-07-01    1010.   24477.   10575.   25487    36062.\n#  8 2000-08-01    1033    24457    10146.   25490    35636.\n#  9 2000-09-01    1025    24160    10715.   25185    35900.\n# 10 2000-10-01     988    23593     9970.   24581    34551.\n# # ℹ 277 more rows\n# # ℹ Use `print(n = ...)` to see more rows\n# \n# [[3]]\n# # A tibble: 287 × 2\n#    date       TP.AB.B1\n#    \u003cdate\u003e        \u003cdbl\u003e\n#  1 2000-01-01    1011 \n#  2 2000-02-01    1011 \n#  3 2000-03-01    1011.\n#  4 2000-04-01    1011.\n#  5 2000-05-01    1011.\n#  6 2000-06-01    1011.\n#  7 2000-07-01    1010.\n#  8 2000-08-01    1033 \n#  9 2000-09-01    1025 \n# 10 2000-10-01     988 \n# # ℹ 277 more rows\n# # ℹ Use `print(n = ...)` to see more rows\n```\n\n### Excel export \n\u003e creates excel file including all data frames of the object \n\n```r\n\n# Export data frames to an Excel file\nobj \u003c- get_series( index = template_test() )\nexcel(obj, \"file_name.xlsx\", \"somefolder\")\n\n\n```\n## Getting API Keys\n\nTo access data from `EDDS` (CBRT) and FRED (FED), users need to obtain API keys by creating accounts on their respective websites.\n\n### `EDDS` (CBRT) API Key\n\n1. Visit the [`EDDS` (CBRT) API Documentation](https://evds2.tcmb.gov.tr/index.php?/evds/userDocs).\n2. Create an account on the `EDDS` website if you don't have one.\n3. Follow the documentation to generate your API key.\n\n### FRED (FED) API Key\n\n1. Go to the [FRED (FED) API Key Documentation](https://fred.stlouisfed.org/docs/api/api_key.html).\n2. Create an account on the FRED website if you haven't done so already.\n3. Follow the documentation to obtain your FRED API key.\n\nMake sure to securely store your API keys and never expose them in public repositories.\n\n### Contributing\n\nIf you find any issues or have suggestions for improvement, feel free to open an issue or submit a pull request on GitHub.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatarapi%2Frapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdatarapi%2Frapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatarapi%2Frapi/lists"}