Skip to content

Commit 676d0ee

Browse files
committed
Fix invalid URLs flagged by CRAN incoming pretest
OpenAlex moved its API documentation from docs.openalex.org to developers.openalex.org, so all old links now return 301 redirects.
1 parent 64935ee commit 676d0ee

13 files changed

Lines changed: 52 additions & 41 deletions

CRAN-SUBMISSION

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
Version: 3.0.1
2-
Date: 2026-01-13 18:50:14 UTC
3-
SHA: 44daafc927e44f7e0ebd6631ea22820a4e6a9e12
1+
Version: 3.1.0
2+
Date: 2026-07-02 14:35:16 UTC
3+
SHA: 8b44f2fbba2756fd57248858126951a18f0f952f

DESCRIPTION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Authors@R: c(
2626
comment = c(ORCID = "0000-0002-0701-921X"))
2727
)
2828
Description: A set of tools to extract bibliographic content from
29-
'OpenAlex' database using API <https://docs.openalex.org>.
29+
'OpenAlex' database using API <https://developers.openalex.org/>.
3030
License: MIT + file LICENSE
3131
URL: https://github.com/ropensci/openalexR,
3232
https://docs.ropensci.org/openalexR/

R/oa2bibliometrix.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#' Convert OpenAlex collection from data frame to bibliometrix object
22
#'
33
#' It converts bibliographic collections gathered from OpenAlex database \href{https://openalex.org/}{https://openalex.org/} into a
4-
#' bibliometrix data frame (\href{https://bibliometrix.org/}{https://bibliometrix.org/})
4+
#' bibliometrix data frame (\href{https://www.bibliometrix.org/}{https://www.bibliometrix.org/})
55
#' Column names follow https://images.webofknowledge.com/images/help/WOS/hs_wos_fieldtags.html.
66
#'
77
#' @param df is bibliographic collection of works downloaded from OpenAlex.

R/oa2df.R

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ process_records <- function(
178178
#'
179179
#' @return a data.frame.
180180
#'
181-
#' For more extensive information about OpenAlex API, please visit: <https://docs.openalex.org>
181+
#' For more extensive information about OpenAlex API, please visit: <https://developers.openalex.org/>
182182
#'
183183
#' @importFrom stats setNames
184184
#'
@@ -407,7 +407,7 @@ works2df <- function(
407407
#'
408408
#' @return a data.frame.
409409
#'
410-
#' For more extensive information about OpenAlex API, please visit: <https://docs.openalex.org>
410+
#' For more extensive information about OpenAlex API, please visit: <https://developers.openalex.org/>
411411
#'
412412
#'
413413
#' @examples
@@ -496,7 +496,7 @@ authors2df <- function(
496496
#'
497497
#' @return a data.frame.
498498
#'
499-
#' For more extensive information about OpenAlex API, please visit: <https://docs.openalex.org>
499+
#' For more extensive information about OpenAlex API, please visit: <https://developers.openalex.org/>
500500
#'
501501
#'
502502
#' @examples
@@ -602,7 +602,7 @@ institutions2df <- function(
602602
#'
603603
#' @return a data.frame.
604604
#'
605-
#' For more extensive information about OpenAlex API, please visit: <https://docs.openalex.org>
605+
#' For more extensive information about OpenAlex API, please visit: <https://developers.openalex.org/>
606606
#'
607607
#'
608608
#' @examples
@@ -731,7 +731,7 @@ keywords2df <- function(data, verbose = TRUE) {
731731
#'
732732
#' @return a data.frame.
733733
#'
734-
#' For more extensive information about OpenAlex API, please visit: <https://docs.openalex.org>
734+
#' For more extensive information about OpenAlex API, please visit: <https://developers.openalex.org/>
735735
#'
736736
#'
737737
#' @examples
@@ -788,7 +788,7 @@ funders2df <- function(
788788
#'
789789
#' @return a data.frame.
790790
#'
791-
#' For more extensive information about OpenAlex API, please visit: <https://docs.openalex.org>
791+
#' For more extensive information about OpenAlex API, please visit: <https://developers.openalex.org/>
792792
#'
793793
#'
794794
#' @examples
@@ -867,7 +867,7 @@ sources2df <- function(
867867
#'
868868
#' @return a data.frame.
869869
#'
870-
#' For more extensive information about OpenAlex API, please visit: <https://docs.openalex.org>
870+
#' For more extensive information about OpenAlex API, please visit: <https://developers.openalex.org/>
871871
#'
872872
#'
873873
#' @examples
@@ -926,7 +926,7 @@ publishers2df <- function(
926926
#'
927927
#' @return a data.frame.
928928
#'
929-
#' For more extensive information about OpenAlex API, please visit: <https://docs.openalex.org>
929+
#' For more extensive information about OpenAlex API, please visit: <https://developers.openalex.org/>
930930
#'
931931
#'
932932
#' @examples

R/oa_fetch.R

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ oa_fetch <- function(
133133
}
134134

135135
# overcome OA limitation of combining 50 values (OR) for a filter at a time
136-
# https://docs.openalex.org/how-to-use-the-api/get-lists-of-entities/filter-entity-lists#addition-or
136+
# https://developers.openalex.org/guides/filtering
137137
# We can only chunk ONE filter at a time; more than one would require a
138138
# combinatorial set of requests, so we ask the user to split the call instead.
139139
large_filter <- which(lengths(filter) > 50)
@@ -239,7 +239,7 @@ oa_fetch <- function(
239239
#' When used with `options$sample` and or `pages`,
240240
#' paging is also automatically set to basic paging: `paging = "page"`
241241
#' to avoid duplicates and get the right page.
242-
#' See https://docs.openalex.org/how-to-use-the-api/get-lists-of-entities/paging.
242+
#' See https://developers.openalex.org/guides/page-through-results.
243243
#' @param pages Integer vector.
244244
#' The range of pages to return. If NULL, return all pages.
245245
#' @param count_only Logical.
@@ -260,7 +260,7 @@ oa_fetch <- function(
260260
#' @return a data.frame or a list of bibliographic records.
261261
#'
262262
#' For more extensive information about OpenAlex API, please visit:
263-
#' <https://docs.openalex.org>
263+
#' <https://developers.openalex.org/>
264264
#'
265265
#'
266266
#' @examples
@@ -547,7 +547,7 @@ oa_request <- function(
547547
"!" = "The following work{?s} {?has/have} truncated lists of authors: {.val {truncated}}.",
548548
"i" = "Query each work separately by its identifier to get full list of authors.",
549549
"i" = "For example: {.code lapply(c(\"{paste(utils::head(truncated, 2), collapse = '\", \"')}\"), \\(x) oa_fetch(identifier = x))}",
550-
"i" = "Details at {.url https://docs.openalex.org/api-entities/authors/limitations}."
550+
"i" = "Details at {.url https://developers.openalex.org/api-reference/authors}."
551551
))
552552
}
553553
}
@@ -586,13 +586,13 @@ get_next_page <- function(paging, i, res = NULL) {
586586
#' condition--specifically, a particular value for a particular attribute.
587587
#' Filters are formatted as attribute = value.
588588
#' The complete list of filter attributes for each entity can be found at
589-
#' <https://docs.openalex.org/how-to-use-the-api/get-lists-of-entities/filter-entity-lists>.
589+
#' <https://developers.openalex.org/guides/filtering>.
590590
#' For example, `cited_by_count = ">100"`,
591591
#' `title.search = c("bibliometric analysis", "science mapping")`,
592592
#' or `to_publication_date = "2021-12-31"`.
593593
#' @param multiple_id Logical. Whether there are multiple identifiers.
594594
#' @param identifier Character. OpenAlex ID(s) as item identifier(s).
595-
#' See more at <https://docs.openalex.org/how-to-use-the-api/get-single-entities#the-openalex-id>.
595+
#' See more at <https://developers.openalex.org/guides/get>.
596596
#' @param entity Character. Scholarly entity of the search.
597597
#' The argument can be one of
598598
#' c("works", "authors", "institutions", "keywords", "funders", "sources", "publishers", "topics").
@@ -612,7 +612,7 @@ get_next_page <- function(paging, i, res = NULL) {
612612
#' To filter using search, append .search to the end of the attribute you're filtering for.
613613
#' @param group_by Character. Attribute to group by.
614614
#' For example: "oa_status" for works.
615-
#' See more at <https://docs.openalex.org/how-to-use-the-api/get-groups-of-entities>.
615+
#' See more at <https://developers.openalex.org/guides/grouping>.
616616
#' @param endpoint Character. URL of the OpenAlex Endpoint API server.
617617
#' Defaults to endpoint = "https://api.openalex.org".
618618
#' @param verbose Logical. If TRUE, print information on querying process.
@@ -624,7 +624,7 @@ get_next_page <- function(paging, i, res = NULL) {
624624
#' @return a character containing the query in OpenAlex format.
625625
#'
626626
#' For more extensive information about OpenAlex API, please visit:
627-
#' <https://docs.openalex.org>.
627+
#' <https://developers.openalex.org/>.
628628
#'
629629
#'
630630
#' @examples

R/oa_ngrams.R

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@ ngram2df <- function(ngram) {
2121
#'
2222
#' Some work entities in OpenAlex include N-grams (word sequences and their frequencies) of their full text.
2323
#' The N-grams are obtained from Internet Archive, which uses the spaCy parser to index scholarly works.
24-
#' See <https://docs.openalex.org/api-entities/works/get-n-grams> for coverage and more technical details.
24+
#' See <https://developers.openalex.org/guides/deprecations> for coverage and more technical details.
2525
#'
2626
#' @note A faster implementation is available for `curl` >= v5.0.0, and `oa_ngrams` will issue a one-time message
2727
#' about this. This can be suppressed with `options("oa_ngrams.message.curlv5" = FALSE)`.
2828
#'
2929
#' @param works_identifier Character. OpenAlex ID(s) of "works" entities as item identifier(s).
30-
#' These IDs start with "W". See more at <https://docs.openalex.org/api-entities/works#id>.
30+
#' These IDs start with "W". See more at <https://developers.openalex.org/api-reference/works>.
3131
#' @param ... Unused.
3232
#' @inheritParams oa_query
3333
#'

R/oa_options.R

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@
1414
#'
1515
#' @param select Character vector. Top-level fields to show in output.
1616
#' Defaults to NULL, which returns all fields.
17-
#' <https://docs.openalex.org/how-to-use-the-api/get-single-entities/select-fields>
17+
#' <https://developers.openalex.org/guides/selecting-fields>
1818
#' @param sort Character. Attribute to sort by.
1919
#' For example: "display_name" for sources or "cited_by_count:desc" for works.
20-
#' See more at <https://docs.openalex.org/how-to-use-the-api/get-lists-of-entities/sort-entity-lists>.
20+
#' See more at <https://developers.openalex.org/guides/sort>.
2121
#' @param sample Integer. Number of (random) records to return.
2222
#' Should be no larger than 10,000.
2323
#' Defaults to NULL, which returns all records satisfying the query.
24-
#' Read more at <https://docs.openalex.org/how-to-use-the-api/get-lists-of-entities/sample-entity-lists>.
24+
#' Read more at <https://developers.openalex.org/api-reference/works/list-works>.
2525
#' @param seed Integer.
2626
#' A seed value in order to retrieve the same set of random records in
2727
#' the same order when used multiple times with `sample`.
@@ -36,7 +36,7 @@
3636
#' Either "cursor" for cursor paging or "page" for basic paging.
3737
#' When used with `sample` and/or `pages`, paging is automatically set to
3838
#' basic paging (`paging = "page"`) to avoid duplicates and get the right page.
39-
#' See <https://docs.openalex.org/how-to-use-the-api/get-lists-of-entities/paging>.
39+
#' See <https://developers.openalex.org/guides/page-through-results>.
4040
#' @param pages Integer vector.
4141
#' The range of pages to return. If NULL, return all pages.
4242
#' @param ... Additional query parameters forwarded to the OpenAlex API

README.Rmd

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ install.packages("openalexR")
6565
Without a key, you are limited to 100 credits per day (for testing only).
6666
With a free API key, you get 100,000 credits per day.
6767

68-
See the [OpenAlex API access documentation](https://docs.openalex.org/#access) for details.
68+
See the [OpenAlex API access documentation](https://developers.openalex.org/guides/authentication) for details.
6969

7070
**To get your API key:**
7171

@@ -102,7 +102,7 @@ knitr::opts_chunk$set(dev.args = list(bg = "transparent"))
102102

103103
## 🌿 Examples
104104

105-
There are different [filters](https://ropensci.github.io/openalexR/articles/Filters)/arguments you can use in `oa_fetch`, depending on which [entity](https://docs.openalex.org/#data) you're interested in:
105+
There are different [filters](https://ropensci.github.io/openalexR/articles/Filters)/arguments you can use in `oa_fetch`, depending on which [entity](https://developers.openalex.org/guides/key-concepts) you're interested in:
106106
`r cat(setdiff(oa_entities(), "concepts"), sep = ", ")`.
107107
We show a few examples below.
108108

@@ -383,10 +383,10 @@ ggraph(graph = as_tbl_graph(snowball_docs), layout = "stress") +
383383

384384
## 🌾 N-grams
385385

386-
**Update 2024-09-15**: The n-gram API endpoint is [not currently in service](https://docs.openalex.org/api-entities/works/get-n-grams#api-endpoint).
386+
**Update 2024-09-15**: The n-gram API endpoint is [not currently in service](https://developers.openalex.org/guides/deprecations).
387387
The following code chunk is not evaluated.
388388

389-
OpenAlex offers (limited) support for [fulltext N-grams](https://docs.openalex.org/api-entities/works/get-n-grams#fulltext-coverage) of Work entities (these have IDs starting with `"W"`). Given a vector of work IDs, `oa_ngrams` returns a dataframe of N-gram data (in the `ngrams` list-column) for each work.
389+
OpenAlex offers (limited) support for [fulltext N-grams](https://developers.openalex.org/guides/deprecations) of Work entities (these have IDs starting with `"W"`). Given a vector of work IDs, `oa_ngrams` returns a dataframe of N-gram data (in the `ngrams` list-column) for each work.
390390

391391
```{r ngrams, eval=FALSE, fig.height=3}
392392
ngrams_data <- oa_ngrams(
@@ -414,7 +414,7 @@ ngrams_data |>
414414
)
415415
```
416416

417-
`oa_ngrams` can sometimes be slow because the N-grams data can get pretty big, but given that the N-grams are [`"cached via CDN"`](<https://docs.openalex.org/api-entities/works/get-n-grams#api-endpoint>), you may also consider parallelizing for this special case (`oa_ngrams` does this automatically if you have `{curl} >= v5.0.0`).
417+
`oa_ngrams` can sometimes be slow because the N-grams data can get pretty big, but given that the N-grams are [`"cached via CDN"`](<https://developers.openalex.org/guides/deprecations>), you may also consider parallelizing for this special case (`oa_ngrams` does this automatically if you have `{curl} >= v5.0.0`).
418418

419419
## 💫 About OpenAlex
420420

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ Without a key, you are limited to 100 credits per day (for testing
7979
only). With a free API key, you get 100,000 credits per day.
8080

8181
See the [OpenAlex API access
82-
documentation](https://docs.openalex.org/#access) for details.
82+
documentation](https://developers.openalex.org/guides/authentication) for details.
8383

8484
**To get your API key:**
8585

@@ -109,7 +109,7 @@ library(ggplot2)
109109
There are different
110110
[filters](https://ropensci.github.io/openalexR/articles/Filters)/arguments
111111
you can use in `oa_fetch`, depending on which
112-
[entity](https://docs.openalex.org/#data) you’re interested in: . We
112+
[entity](https://developers.openalex.org/guides/key-concepts) you’re interested in: . We
113113
show a few examples below.
114114

115115
### 📚 Works
@@ -579,11 +579,11 @@ ggraph(graph = as_tbl_graph(snowball_docs), layout = "stress") +
579579
## 🌾 N-grams
580580

581581
**Update 2024-09-15**: The n-gram API endpoint is [not currently in
582-
service](https://docs.openalex.org/api-entities/works/get-n-grams#api-endpoint).
582+
service](https://developers.openalex.org/guides/deprecations).
583583
The following code chunk is not evaluated.
584584

585585
OpenAlex offers (limited) support for [fulltext
586-
N-grams](https://docs.openalex.org/api-entities/works/get-n-grams#fulltext-coverage)
586+
N-grams](https://developers.openalex.org/guides/deprecations)
587587
of Work entities (these have IDs starting with `"W"`). Given a vector of
588588
work IDs, `oa_ngrams` returns a dataframe of N-gram data (in the
589589
`ngrams` list-column) for each work.
@@ -616,7 +616,7 @@ ngrams_data |>
616616

617617
`oa_ngrams` can sometimes be slow because the N-grams data can get
618618
pretty big, but given that the N-grams are
619-
[`"cached via CDN"`](https://docs.openalex.org/api-entities/works/get-n-grams#api-endpoint),
619+
[`"cached via CDN"`](https://developers.openalex.org/guides/deprecations),
620620
you may also consider parallelizing for this special case (`oa_ngrams`
621621
does this automatically if you have `{curl} >= v5.0.0`).
622622

cran-comments.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
1+
## Resubmission
2+
3+
This is a resubmission of version 3.1.0. It fixes the (possibly) invalid
4+
URLs reported by the CRAN incoming pretest:
5+
6+
* All links to the OpenAlex documentation (`https://docs.openalex.org/...`)
7+
were updated to the new documentation site
8+
(`https://developers.openalex.org/...`), as the old site now permanently
9+
redirects there.
10+
* `https://bibliometrix.org/` was updated to `https://www.bibliometrix.org/`.
11+
112
* Small patch to use string for package version comparison
213

314
## R CMD check results
415

5-
0 errors | 0 warnings | 0 note
16+
0 errors | 0 warnings | 0 notes

0 commit comments

Comments
 (0)