├── openapi ├── requestBodies.yaml ├── services │ ├── citation_helper.yaml │ ├── graphics.yaml │ ├── author-affiliation.yaml │ ├── objects.yaml │ ├── resolver.yaml │ ├── journals.yaml │ ├── solr.yaml │ ├── metrics.yaml │ ├── reference.yaml │ ├── oracle.yaml │ ├── harbour.yaml │ ├── vis.yaml │ ├── orcid.yaml │ └── vault.yaml ├── responses.yaml ├── README.md ├── openapi_internal.yaml ├── parameters.yaml ├── openapi_public.yaml ├── openapi.yaml └── schemas.yaml ├── .gitignore ├── README.md ├── API_documentation_Python └── Export_API_Python.ipynb └── API_documentation_UNIXshell └── Export_API.ipynb /openapi/requestBodies.yaml: -------------------------------------------------------------------------------- 1 | exportBody: 2 | description: > 3 | JSON containing the bibcodes to export 4 | content: 5 | application/json: 6 | schema: 7 | $ref: 'schemas.yaml#/bibcodeObject' 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.py[cod] 2 | 3 | # C extensions 4 | *.so 5 | 6 | # Packages 7 | *.egg 8 | *.egg-info 9 | dist 10 | build 11 | eggs 12 | parts 13 | bin 14 | var 15 | sdist 16 | develop-eggs 17 | .installed.cfg 18 | lib 19 | lib64 20 | 21 | # Installer logs 22 | pip-log.txt 23 | 24 | # Unit test / coverage reports 25 | .coverage 26 | .tox 27 | nosetests.xml 28 | 29 | # Translations 30 | *.mo 31 | 32 | # Mr Developer 33 | .mr.developer.cfg 34 | .project 35 | .pydevproject 36 | 37 | .ipynb_checkpoints 38 | .jekyll-cache 39 | .idea 40 | _site 41 | .DS_Store 42 | venv -------------------------------------------------------------------------------- /openapi/services/citation_helper.yaml: -------------------------------------------------------------------------------- 1 | citation_helper: 2 | post: 3 | summary: Suggest missing citations 4 | description: > 5 | Given a set of bibcodes, this endpoint uses a "friends of friends" analysis 6 | to suggest up to 10 missing citations. These missing citations cite 7 | and/or are cited by the papers in the given list, but are not in the list. 8 | The score given with each returned paper reflects how many papers in the input 9 | list the result is associated with. 10 | tags: 11 | - citation helper 12 | security: 13 | - ApiKeySecurity: [] 14 | requestBody: 15 | description: JSON containing the bibcode(s) to run the citation helper for 16 | content: 17 | application/json: 18 | schema: 19 | $ref: '../schemas.yaml#/bibcodesObject' 20 | responses: 21 | '200': 22 | description: JSON containing the suggested papers 23 | content: 24 | application/json: 25 | schema: 26 | type: array 27 | items: 28 | type: object 29 | properties: 30 | author: 31 | type: string 32 | bibcode: 33 | type: string 34 | score: 35 | type: integer 36 | title: 37 | type: string 38 | -------------------------------------------------------------------------------- /openapi/services/graphics.yaml: -------------------------------------------------------------------------------- 1 | graphics: 2 | get: 3 | summary: (internal) Return graphics for a bibcode 4 | description: Return graphics information for a bibcode 5 | tags: 6 | - graphics 7 | security: 8 | - ApiKeySecurity: [] 9 | parameters: 10 | - name: bibcode 11 | required: true 12 | in: path 13 | schema: 14 | type: string 15 | responses: 16 | '200': 17 | description: Graphics info for the bibcode 18 | content: 19 | application/json: 20 | schema: 21 | type: array 22 | items: 23 | type: object 24 | properties: 25 | bibcode: 26 | type: string 27 | number: 28 | type: integer 29 | pick: 30 | type: string 31 | header: 32 | type: string 33 | figures: 34 | type: array 35 | items: 36 | type: object 37 | properties: 38 | figure_label: 39 | type: string 40 | figure_caption: 41 | type: string 42 | figure_type: 43 | type: string 44 | images: 45 | type: array 46 | items: 47 | type: object 48 | properties: 49 | thumbnail: 50 | type: string 51 | highres: 52 | type: string 53 | -------------------------------------------------------------------------------- /openapi/responses.yaml: -------------------------------------------------------------------------------- 1 | ExportResponse: 2 | description: > 3 | Returns export 4 | content: 5 | application/json: 6 | schema: 7 | type: object 8 | properties: 9 | msg: 10 | type: string 11 | export: 12 | type: string 13 | ExportResponseGet: 14 | description: > 15 | Returns export 16 | content: 17 | application/json: 18 | schema: 19 | type: string 20 | QTree: 21 | description: Abstract Syntax Tree of a Parsed query 22 | content: 23 | application/json: 24 | schema: 25 | $ref: 'schemas.yaml#/qtree' 26 | ResolverResponse: 27 | description: > 28 | JSON containing the available external resources, 29 | including links 30 | content: 31 | application/json: 32 | schema: 33 | type: object 34 | properties: 35 | action: 36 | type: string 37 | links: 38 | type: object 39 | properties: 40 | count: 41 | type: integer 42 | link_type: 43 | type: string 44 | records: 45 | type: array 46 | items: 47 | type: object 48 | properties: 49 | bibcode: 50 | type: string 51 | count: 52 | type: integer 53 | title: 54 | type: string 55 | type: 56 | type: string 57 | url: 58 | type: string 59 | SearchResults: 60 | description: Results returned by the search engine 61 | content: 62 | application/json: 63 | schema: 64 | $ref: 'schemas.yaml#/results' 65 | TokenResponse: 66 | description: API token details 67 | content: 68 | application/json: 69 | schema: 70 | type: object 71 | properties: 72 | access_token: 73 | description: API token 74 | type: string 75 | anonymous: 76 | type: boolean 77 | client_id: 78 | type: string 79 | expire_in: 80 | type: string 81 | refresh_token: 82 | type: string 83 | scopes: 84 | type: array 85 | items: 86 | type: string 87 | token_type: 88 | type: string 89 | user_id: 90 | type: string 91 | username: 92 | type: string 93 | VaultResponse: 94 | description: Response from vault storage service 95 | content: 96 | application/json: 97 | schema: 98 | type: object 99 | properties: 100 | numfound: 101 | readOnly: true 102 | type: integer 103 | description: > 104 | Number of docs this query found (the last time it was executed; this 105 | number is up to date only when the query is stored). But if you see number higher 106 | than 0 then you can be sure that the query was executed. 107 | qid: 108 | readOnly: true 109 | type: string 110 | description: > 111 | Query ID (unique hash identifying all the parameters; it is computed 112 | from the supplied query parameters) 113 | query: 114 | type: string 115 | description: > 116 | Serialized JSON input search parameters 117 | -------------------------------------------------------------------------------- /openapi/services/author-affiliation.yaml: -------------------------------------------------------------------------------- 1 | author-affiliation-export: 2 | post: 3 | summary: Export the author-affiliations report 4 | description: > 5 | Export the author-affiliations report, generally used for reporting 6 | co-authors and their affiliations to grant agencies. Outputs to CSV, 7 | Excel, text, or directly to the browser/terminal. To save to file, 8 | use your terminal's flags or programming language's functionality. 9 | tags: 10 | - author affiliation 11 | security: 12 | - ApiKeySecurity: [] 13 | requestBody: 14 | description: Formatted report to output, along with format string 15 | content: 16 | application/json: 17 | schema: 18 | type: object 19 | properties: 20 | format: 21 | description: > 22 | Formatting string for the export. 23 | type: string 24 | enum: 25 | - "| Lastname, Firstname | Affiliation | Last Active Date | [csv]" 26 | - "| Lastname | Firstname | Affiliation | Last Active Date | [csv]" 27 | - "| Lastname, Firstname | Affiliation | Last Active Date | [excel]" 28 | - "| Lastname | Firstname | Affiliation | Last Active Date | [excel]" 29 | - "Lastname, Firstname(Affiliation)Last Active Date[text]" 30 | - "Lastname, Firstname(Affiliation)Last Active Date[browser]" 31 | selected: 32 | description: > 33 | Formatted data to export. 34 | type: array 35 | items: 36 | type: string 37 | description: > 38 | Format: Author name (last, first) | affiliation | last active date (year/month) 39 | responses: 40 | '200': 41 | description: Returns file or text, depending on format requested 42 | '400': 43 | description: Bad request, check payload 44 | author-affiliation-search: 45 | post: 46 | summary: Create the author-affiliations report 47 | description: > 48 | Create the author-affiliations report, generally used for reporting 49 | co-authors and their affiliations to grant agencies. Returns 50 | information in JSON. 51 | tags: 52 | - author affiliation 53 | security: 54 | - ApiKeySecurity: [] 55 | requestBody: 56 | description: JSON containing the bibcode(s) to produce the author affiliations for. 57 | content: 58 | application/json: 59 | schema: 60 | allOf: 61 | - $ref: '../schemas.yaml#/bibcodeObject' 62 | - type: object 63 | properties: 64 | maxauthor: 65 | description: First N authors for each paper to report on 66 | type: integer 67 | numyears: 68 | description: Last N years to retrieve affiliations for 69 | type: integer 70 | responses: 71 | '200': 72 | description: JSON containing the requested author affiliations 73 | content: 74 | application/json: 75 | schema: 76 | type: object 77 | properties: 78 | data: 79 | type: array 80 | items: 81 | type: object 82 | properties: 83 | authorName: 84 | type: string 85 | affiliations: 86 | type: object 87 | properties: 88 | name: 89 | type: string 90 | years: 91 | type: array 92 | items: 93 | type: string 94 | lastActiveDate: 95 | type: string 96 | '400': 97 | description: Bad request, check payload 98 | '404': 99 | description: No result from Solr 100 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # adsabs-dev-api 2 | 3 | ADS Developer API description. 4 | 5 | For bugs, feature requests or even random questions feel free to use the [issues](https://github.com/adsabs/adsabs-dev-api/issues) section. 6 | 7 | **Table of Contents** 8 | 9 | The help pages and examples below are formatted as Jupyter notebooks. Browse them in Github or download them to your own computer to edit the code and run as desired. Note that the code in these notebooks was run using an API key or token. This has been edited out of the notebooks for security; [acquire your own API key](#access) and copy it into the notebook before running it locally. 10 | 11 | Note: sometimes Github's internal Jupyter notebook rendering agent fails. If that happens, copy the link to the notebook you wish to view into the form at [Jupyter's own notebook renderer](https://nbviewer.jupyter.org/). 12 | 13 | - [Access](#access) 14 | - [Access Settings](#access-settings) 15 | - Search API ([Python](API_documentation_Python/Search_API_Python.ipynb), [bash/shell](API_documentation_UNIXshell/Search_API.ipynb)) 16 | - Metrics API ([Python](API_documentation_Python/Metrics_API_Python.ipynb), [bash/shell](API_documentation_UNIXshell/Metrics_API.ipynb)) 17 | - Export API ([Python](API_documentation_Python/Export_API_Python.ipynb), [bash/shell](API_documentation_UNIXshell/Export_API.ipynb)) 18 | - Libraries API( ([Python](API_documentation_Python/Libraries_API_Python.ipynb), [bash/shell](API_documentation_UNIXshell/Libraries_API.ipynb)) 19 | - Journals API ([Python](API_documentation_Python/Journals_API_Python.ipynb), [bash/shell](API_documentation_UNIXshell/Journals_API.ipynb)) 20 | - Converting curl to Python ([bash/shell](API_documentation_UNIXshell/Converting_curl_to_python.ipynb)) 21 | - Script examples ([Python](API_documentation_Python/API_examples)) 22 | 23 | 24 | ## Clients 25 | 26 | The unofficial python client for the API is maintained by Andy Casey described here: 27 | 28 | * http://ads.readthedocs.io/ 29 | 30 | Examples of how to use Andy Casey's Python client can be found here: 31 | 32 | * https://github.com/adsabs/ads-examples 33 | 34 | Geert Barentsen has built an application to support the Kepler publication database which uses the ADS API to discover relevant papers: 35 | 36 | * https://github.com/KeplerGO/kpub 37 | 38 | The ADS built an application to compare author's with a wrestling theme at AAS 227: 39 | 40 | * https://authorsmackdown.herokuapp.com/ 41 | 42 | 43 | ## Access 44 | 45 | Access to the ADS data holdings is regulated by the the ADS terms of use, as described in the ADS [Terms of Use](http://adsabs.github.io/help/terms/). 46 | 47 | To obtain access to the ADS Developer API you must do two things: 48 | 49 | 1. Create an account and log in to the latest version of the [ADS](https://ui.adsabs.harvard.edu). 50 | 1. Push the "Generate a new key" button under the [user profile](https://ui.adsabs.harvard.edu/#user/settings/token) 51 | 52 | All API requests must pass your token in an `Authorization: Bearer ` HTTP header (where is the key you just generated), e.g. 53 | 54 | curl -H 'Authorization: Bearer ' 'https://api.adsabs.harvard.edu/v1/search/query?q=star' 55 | 56 | 57 | ## Access Settings 58 | 59 | Each endpoint is individually rate-limited. API Responses advertise these limits in their HTTP response headers. A useful way to see these values is to issue a curl request to the desired endpoint with the verbose flag, e.g.: 60 | 61 | curl -v -H "Authorization: Bearer " 'https://api.adsabs.harvard.edu/v1/search/query?q=star' 62 | 63 | And then noting the following values: 64 | 65 | X-RateLimit-Limit: 5000 66 | X-RateLimit-Remaining: 4999 67 | X-RateLimit-Reset: 1435190400 68 | 69 | The Limit variable indicates the amount of daily queries allowed to the user (in this case 5000). The Remaining variable indicates how many queries are still available. The Reset variable provides a UTC timestamp corresponding to the time the rate limits will be reset. To see its value in human-readable format, you can use the UNIX "date" command: 70 | 71 | # syntax for UNIX on a Mac 72 | date -r 1435190400 73 | # Linux syntax 74 | date -d @1435190400 75 | # output for either 76 | Wed Jun 24 20:00:00 EDT 2015 77 | 78 | (the rate resetting happens at midnight UTC). 79 | For more information and tips about rate limits, please contact us directly at `adshelp@cfa.harvard.edu`. 80 | -------------------------------------------------------------------------------- /openapi/services/objects.yaml: -------------------------------------------------------------------------------- 1 | objects: 2 | post: 3 | summary: Return object identifers for a given string 4 | description: > 5 | For a given string, returns the object identifiers from either NED or 6 | SIMBAD, whichever is specified 7 | tags: 8 | - objects 9 | security: 10 | - ApiKeySecurity: [] 11 | requestBody: 12 | description: > 13 | JSON containing either a list of object names ("objects") or a list 14 | of SIMBAD object identifiers ("identifiers") 15 | content: 16 | application/json: 17 | schema: 18 | type: object 19 | properties: 20 | source: 21 | type: string 22 | enum: 23 | - simbad 24 | - ned 25 | example: "SIMBAD" 26 | identifiers: 27 | type: array 28 | items: 29 | type: string 30 | example: ["1575544"] 31 | objects: 32 | type: array 33 | items: 34 | type: string 35 | example: ["M31"] 36 | responses: 37 | '200': 38 | description: > 39 | JSON containing the input object or identifier as the key and the values 40 | are the canonical names or identifiers. If the object or identifier was 41 | not recognized, the value returned with be None. 42 | 43 | 44 | Note: this service also returns a 200 even if an error was encountered; 45 | be sure to read the returned error message carefully in that case. 46 | content: 47 | application/json: 48 | schema: 49 | type: object 50 | properties: 51 | object or identifier: 52 | type: object 53 | properties: 54 | id: 55 | description: Integer or string, depending on input source 56 | type: string 57 | canonical: 58 | type: string 59 | example: {"1575544": {"id": "1575544","canonical": "M 31"}} 60 | objects-nedsrv: 61 | post: 62 | summary: (internal) Returns object NED refcodes for a given object list 63 | description: Returns object NED refcodes for a given object list 64 | tags: 65 | - objects 66 | requestBody: 67 | content: 68 | application/json: 69 | schema: 70 | type: object 71 | properties: 72 | objects: 73 | type: array 74 | items: 75 | type: string 76 | output_format: 77 | type: string 78 | security: 79 | - ApiKeySecurity: [] 80 | responses: 81 | '200': 82 | description: NED refcodes 83 | content: 84 | text/plain: 85 | schema: 86 | type: object 87 | properties: 88 | data: 89 | type: array 90 | items: 91 | type: string 92 | ambiguous: 93 | type: array 94 | items: 95 | type: string 96 | '400': 97 | description: Error with NED API 98 | '504': 99 | description: Connection error with NED API 100 | objects-query: 101 | post: 102 | summary: Return a Solr query with object identifiers 103 | description: > 104 | For a given object, return a Solr query that expands the object 105 | to include the SIMBAD and NED identifiers. 106 | tags: 107 | - objects 108 | security: 109 | - ApiKeySecurity: [] 110 | requestBody: 111 | description: > 112 | JSON containing the input object query to expand 113 | content: 114 | application/json: 115 | schema: 116 | type: object 117 | properties: 118 | query: 119 | type: array 120 | items: 121 | type: string 122 | example: {"query":["object:m31"]} 123 | responses: 124 | '200': 125 | description: > 126 | JSON containing the expanded search query. 127 | 128 | 129 | Note: this service also returns a 200 even if an error was encountered; 130 | be sure to read the returned error message carefully in that case. 131 | content: 132 | application/json: 133 | schema: 134 | type: object 135 | properties: 136 | query: 137 | type: string 138 | example: {"query": "((=abs:m31 OR simbid:1575544 OR nedid:MESSIER_031) database:astronomy)"} 139 | -------------------------------------------------------------------------------- /openapi/README.md: -------------------------------------------------------------------------------- 1 | # OpenAPI Developer Notes 2 | 3 | ## Structure 4 | There are three main top-level files: 5 | * openapi.yaml: All endpoints, user-facing and internal 6 | * openapi_public.yaml: User-facing endpoints only 7 | * openapi_internal.yaml: Endpoints for internal use only 8 | 9 | Other top-level files (schemas.yaml, parameters.yaml) contain parameters, etc. that are used in one or more services. 10 | 11 | Each microservice's endpoints are contained within its own file within the `services` folder and are referenced in the main top-level files. 12 | 13 | ## Tools and Documentation 14 | Main OpenAPI documentation for the OpenAPI version used in these docs: https://spec.openapis.org/oas/v3.0.3 15 | 16 | [Rapidoc](https://rapidocweb.com/) is our front-end documentation renderer. 17 | 18 | ## Testing and Validation 19 | This is currently a pain, for two competing reasons: 20 | 1. It's quickest to validate a local file. The Swagger Editor (see below) accepts local files. 21 | 2. Our specification is large enough that it's split into multiple files. Rapidoc (see below) follows references and can handle a spec across multiple files. 22 | 23 | Most tools that I've found will do one or the other (local files or multiple files), but not both. Given that our spec is now relatively mature, you should be able to get away with the Rapidoc validation approach below. 24 | 25 | ### Latest: Redocly 26 | 27 | There are several ways to use [Redocly](https://redocly.com/docs/redocly-openapi/). Here we outline two methods. 28 | 29 | #### Redocly extension (VSCode) 30 | 31 | Add redocly.yaml with the content below to your project directory. 32 | 33 | ``` 34 | extends: 35 | - recommended 36 | 37 | apis: 38 | core@v3: 39 | root: ./adsabs-dev-api/openapi/openapi.yaml 40 | rules: 41 | tag-description: off 42 | # operation-summary: warn 43 | # no-unresolved-refs: warn 44 | # no-unused-components: warn 45 | # operation-2xx-response: warn 46 | # operation-operationId: warn 47 | # operation-singular-tag: warn 48 | # no-enum-type-mismatch: warn 49 | # no-identical-paths: warn 50 | # no-ambiguous-paths: warn 51 | # security-defined: on 52 | rule/operation-description: 53 | subject: 54 | type: Operation 55 | property: description 56 | assertions: 57 | defined: true 58 | minLength: 10 59 | public@latest: 60 | root: ./adsabs-dev-api/openapi/openapi_public.yaml 61 | labels: 62 | - public 63 | internal@latest: 64 | root: ./adsabs-dev-api/openapi/openapi_internal.yaml 65 | labels: 66 | - public 67 | 68 | theme: 69 | openapi: 70 | hideLogo: true 71 | schemaExpansionLevel: 2 72 | hideOneOfDescription: true 73 | sortOperationsAlphabetically: true 74 | sortTagsAlphabetically: true 75 | sortEnumValuesAlphabetically: true 76 | sortPropsAlphabetically: true 77 | generateCodeSamples: 78 | languages: 79 | - lang: curl 80 | - lang: Python 81 | 82 | decorators: 83 | remove-unused-components: on 84 | 85 | ``` 86 | 87 | #### Redocly via Docker container 88 | 89 | Setting up Redocly on your own can be painful, especially if you're not using `npm` already. To use one-off packages within Redocly more easily, run the commands within the provided Docker container. 90 | 91 | Full installation instructions here: https://redocly.com/docs/cli/installation/ 92 | 93 | From the instructions, to install the Redocly container via Docker Hub: 94 | 95 | ``` 96 | docker pull redocly/cli 97 | ``` 98 | 99 | Then, you can run commands such as `bundle` (https://redocly.com/docs/cli/commands/bundle/), which takes the main OpenAPI file and dereferences it, or bundles all of the references and dependencies into a single OpenAPI file. Many OpenAPI tools require a single OpenAPI file, so this is very helpful for validation. 100 | 101 | ``` 102 | docker run --rm -v $PWD:/spec redocly/cli bundle openapi_public.yaml --output openapi_public_consolidated.json -d 103 | ``` 104 | 105 | ### Swagger Editor validation 106 | The online [Swagger Editor](https://editor.swagger.io/) can be helpful for validation, but it doesn't support specifications split across multiple files, as ours is. If you want to use it, you'll have to bundle our specification into a single file (see Redocly instructions above). 107 | 108 | ### Rapidoc validation 109 | To test the full documentation before you commit changes to the main OpenAPI spec: 110 | 1. Commit your changes and push to your own fork/branch on Github. 111 | 2. Get the raw URL of the top-level YAML on your fork/branch. It'll be something like `https://raw.githubusercontent.com//adsabs-dev-api//openapi/openapi.yaml` 112 | 3. Copy the ["vanilla HTML" code example](https://rapidocweb.com/quickstart.html) into a local file. Replace `spec_url` with the raw Github URL from the previous step. (Note that this doesn't accept local files, which is why you have to push to your Github fork first.) 113 | 4. Open the local file from above in your web browser and make sure your changes look ok before opening a PR. The formatting will look different than for our main docs since you're using the "vanilla HTML" version, but make sure the content is fully rendered. 114 | -------------------------------------------------------------------------------- /openapi/openapi_internal.yaml: -------------------------------------------------------------------------------- 1 | openapi: 3.0.3 2 | info: 3 | title: Internal API for Astrophysics Data System (ADS) 4 | description: > 5 | Internal API endpoints 6 | termsOfService: https://ui.adsabs.harvard.edu/help/terms/ 7 | contact: 8 | name: ADS Help 9 | url: https://github.com/adsabs/adsabs-dev-api 10 | email: adshelp@cfa.harvard.edu 11 | version: 1.0.0 12 | servers: 13 | - url: https://api.adsabs.harvard.edu/{basePath} 14 | description: Production Server 15 | variables: 16 | basePath: 17 | default: v1 18 | enum: 19 | - v1 20 | - url: https://devapi.adsabs.harvard.edu/{basePath} 21 | description: Development Server 22 | variables: 23 | basePath: 24 | default: v1 25 | enum: 26 | - v1 27 | tags: 28 | - name: adsws 29 | - name: libraries 30 | - name: graphics 31 | - name: classic import 32 | - name: objects 33 | - name: orcid 34 | - name: reference 35 | - name: resolver 36 | - name: notifications 37 | - name: vault 38 | components: 39 | securitySchemes: 40 | ApiKeySecurity: 41 | type: http 42 | scheme: bearer 43 | bearerFormat: JWT 44 | XCsrfSecurity: 45 | type: apiKey 46 | in: header 47 | name: x-csrftoken 48 | parameters: 49 | token: 50 | $ref: 'parameters.yaml#/token' 51 | user_id: 52 | $ref: 'parameters.yaml#/user_id' 53 | orcidId: 54 | $ref: 'parameters.yaml#/orcidId' 55 | putcode: 56 | $ref: 'parameters.yaml#/putcode' 57 | OrcidAuthorization: 58 | $ref: 'parameters.yaml#/OrcidAuthorization' 59 | iso_datestring: 60 | $ref: 'parameters.yaml#/iso_datestring' 61 | responses: 62 | TokenResponse: 63 | $ref: 'responses.yaml#/TokenResponse' 64 | schemas: 65 | orcid-work-to: 66 | $ref: 'schemas.yaml#/orcid-work-to' 67 | orcid-work-from: 68 | $ref: 'schemas.yaml#/orcid-work-from' 69 | orcid-preferences: 70 | $ref: 'schemas.yaml#/orcid-preferences' 71 | myADSsetupResponse: 72 | $ref: 'schemas.yaml#/myADSsetupResponse' 73 | security: 74 | - ApiKeySecurity: [] 75 | - XCsrfSecurity: [] 76 | paths: 77 | /alive: 78 | $ref: 'services/adsws.yaml#/alive' 79 | /ready: 80 | $ref: 'services/adsws.yaml#/ready' 81 | /accounts/bootstrap: 82 | $ref: 'services/adsws.yaml#/accounts-bootstrap' 83 | /accounts/protected: 84 | $ref: 'services/adsws.yaml#/accounts-protected' 85 | /accounts/csrf: 86 | $ref: 'services/adsws.yaml#/accounts-csrf' 87 | /accounts/user: 88 | $ref: 'services/adsws.yaml#/accounts-user' 89 | /accounts/user/delete: 90 | $ref: 'services/adsws.yaml#/accounts-user-delete' 91 | /accounts/register: 92 | $ref: 'services/adsws.yaml#/accounts-register' 93 | /accounts/logout: 94 | $ref: 'services/adsws.yaml#/accounts-logout' 95 | /accounts/token: 96 | $ref: 'services/adsws.yaml#/accounts-token' 97 | /accounts/info/{account_data}: 98 | $ref: 'services/adsws.yaml#/accounts-info' 99 | /accounts/change-password: 100 | $ref: 'services/adsws.yaml#/accounts-change-password' 101 | /accounts/change-email: 102 | $ref: 'services/adsws.yaml#/accounts-change-email' 103 | /accounts/verify/{token}: 104 | $ref: 'services/adsws.yaml#/accounts-verify' 105 | /accounts/reset-password/{token}: 106 | $ref: 'services/adsws.yaml#/accounts-reset-password' 107 | /accounts/status: 108 | $ref: 'services/adsws.yaml#/accounts-status' 109 | /status: 110 | $ref: 'services/adsws.yaml#/status' 111 | /protected: 112 | $ref: 'services/adsws.yaml#/protected' 113 | /user/{identifier}: 114 | $ref: 'services/adsws.yaml#/user' 115 | /userfeedback: 116 | $ref: 'services/adsws.yaml#/userfeedback' 117 | /resources: 118 | $ref: 'services/adsws.yaml#/resources' 119 | /oauth/authorize: 120 | $ref: 'services/adsws.yaml#/oauth-authorize' 121 | /oauth/token: 122 | $ref: 'services/adsws.yaml#/oauth-token' 123 | /oauth/errors: 124 | $ref: 'services/adsws.yaml#/oauth-errors' 125 | /oauth/ping: 126 | $ref: 'services/adsws.yaml#/oauth-ping' 127 | /oauth/info: 128 | $ref: 'services/adsws.yaml#/oauth-info' 129 | /oauth/invalid: 130 | $ref: 'services/adsws.yaml#/oauth-invalid' 131 | /biblib/twopointoh: 132 | $ref: 'services/biblib.yaml#/biblib-twopointoh' 133 | /biblib/classic: 134 | $ref: 'services/biblib.yaml#/biblib-classic' 135 | /graphics/{bibcode}: 136 | $ref: 'services/graphics.yaml#/graphics' 137 | /harbour/auth/twopointoh: 138 | $ref: 'services/harbour.yaml#/harbour-auth-twopointoh' 139 | /harbour/export/twopointoh/{export}: 140 | $ref: 'services/harbour.yaml#/harbour-export-twopointoh' 141 | /harbour/libraries/twopointoh/{user_id}: 142 | $ref: 'services/harbour.yaml#/harbour-libraries-twopointoh' 143 | /harbour/libraries/classic/{user_id}: 144 | $ref: 'services/harbour.yaml#/harbour-libraries-classic' 145 | /harbour/myads/classic/{user_id}: 146 | $ref: 'services/harbour.yaml#/harbour-myads-classic' 147 | /orcid/exchangeOAuthCode: 148 | $ref: 'services/orcid.yaml#/orcid-exchangeOAuthCode' 149 | /orcid/{orcidId}/orcid-profile: 150 | $ref: 'services/orcid.yaml#/orcid-orcidId-orcid-profile' 151 | /orcid/{orcidId}/orcid-profile/{type}: 152 | $ref: 'services/orcid.yaml#/orcid-orcidId-orcid-profile-type' 153 | /orcid/{orcidId}/orcid-works/{putcode}: 154 | $ref: 'services/orcid.yaml#/orcid-orcidId-orcid-works-putcode' 155 | /orcid/{orcidId}/orcid-work: 156 | $ref: 'services/orcid.yaml#/orcid-orcidId-orcid-work' 157 | /orcid/{orcidId}/orcid-works: 158 | $ref: 'services/orcid.yaml#/orcid-orcidId-orcid-works' 159 | /orcid/export/{iso_datestring}: 160 | $ref: 'services/orcid.yaml#/orcid-export' 161 | /orcid/get-profile/{orcidId}: 162 | $ref: 'services/orcid.yaml#/orcid-get-profile' 163 | /orcid/update-orcid-profile/{orcidId}: 164 | $ref: 'services/orcid.yaml#/orcid-update-orcid-profile' 165 | /orcid/preferences/{orcidId}: 166 | $ref: 'services/orcid.yaml#/orcid-preferences' 167 | /orcid/update-status/{orcidId}: 168 | $ref: 'services/orcid.yaml#/orcid-update-status' 169 | /orcid/orcid-name/{orcidId}: 170 | $ref: 'services/orcid.yaml#/orcid-orcid-name' 171 | /objects/nedsrv: 172 | $ref: 'services/objects.yaml#/objects-nedsrv' 173 | /reference/pickle_source_matcher: 174 | $ref: 'services/reference.yaml#/reference-pickle_source_matcher' 175 | /reference/pickle_crf: 176 | $ref: 'services/reference.yaml#/reference-pickle_crf' 177 | /resolver/update: 178 | $ref: 'services/resolver.yaml#/resolver-update' 179 | /resolver/delete: 180 | $ref: 'services/resolver.yaml#/resolver-delete' 181 | /vault/configuration: 182 | $ref: 'services/vault.yaml#/vault-configuration' 183 | /vault/configuration/{key}: 184 | $ref: 'services/vault.yaml#/vault-configuration-key' 185 | /vault/user-data: 186 | $ref: 'services/vault.yaml#/vault-user-data' 187 | /vault/get-myads/{user_id}: 188 | $ref: 'services/vault.yaml#/vault-get-myads-user_id' 189 | /vault/get-myads/{user_id}/{iso_datestring}: 190 | $ref: 'services/vault.yaml#/vault-get-myads-user_id-iso_datestring' 191 | /vault/myads-users/{iso_datestring}: 192 | $ref: 'services/vault.yaml#/vault-myads-users' 193 | /vault/myads-import: 194 | $ref: 'services/vault.yaml#/vault-myads-import' 195 | -------------------------------------------------------------------------------- /openapi/services/resolver.yaml: -------------------------------------------------------------------------------- 1 | resolver-bibcode: 2 | get: 3 | summary: Return links to external resources for a given bibcode 4 | description: > 5 | Return links to external resources, such as a publisher's full text, 6 | data links, etc., for a given bibcode 7 | tags: 8 | - resolver 9 | security: 10 | - ApiKeySecurity: [] 11 | parameters: 12 | - $ref: '../parameters.yaml#/bibcode' 13 | responses: 14 | '200': 15 | $ref: '../responses.yaml#/ResolverResponse' 16 | '400': 17 | description: Malformed request 18 | '404': 19 | description: Did not find any matching records 20 | resolver-bibcode-link_type: 21 | get: 22 | summary: Return links to a given external resource for a bibcode 23 | description: > 24 | Return links to a specific external resource, such as a publisher's 25 | full text or data links, for a given bibcode 26 | tags: 27 | - resolver 28 | security: 29 | - ApiKeySecurity: [] 30 | parameters: 31 | - $ref: '../parameters.yaml#/bibcode' 32 | - name: link_type 33 | description: > 34 | External resource type to return (case-insensitive). The available link types 35 | for a given bibcode can be discovered by returning all available resources 36 | for a bibcode (via `/resolver/{bibcode}`) and looking at the `type` keywords. 37 | 38 | Note: for `link_type` of `arXiv` or `doi`, an additional parameter, the `id` 39 | is required. The syntax is `/resolver/{bibcode}/{link_type}:{id}`. 40 | 41 | 42 | For example: 43 | 44 | 45 | `/resolver/2010ApJ...713L.103B/doi:10.1088/2041-8205/713/2/L103` 46 | 47 | 48 | `/resolver/2018arXiv180303598K/arXiv:1803.03598` 49 | 50 | 51 | Available values for `link_type`: 52 | 53 | * `abstract` Abstract 54 | 55 | * `citations` Citations to the Article 56 | 57 | * `references` References in the Article 58 | 59 | * `coreads` Also-Read Articles 60 | 61 | * `toc` Table of Contents 62 | 63 | * `openurl` 64 | 65 | * `metrics` 66 | 67 | * `graphics` 68 | 69 | * `esource` Full text sources 70 | 71 | * `pub_pdf` Publisher PDF 72 | 73 | * `eprint_pdf` Arxiv eprint 74 | 75 | * `author_pdf` Link to PDF page provided by author 76 | 77 | * `ads_pdf` ADS PDF 78 | 79 | * `pub_html` Electronic on-line publisher article (HTML) 80 | 81 | * `eprint_html` Arxiv article 82 | 83 | * `author_html` Link to HTML page provided by author 84 | 85 | * `ads_scan` ADS scanned article 86 | 87 | * `gif` backward compatibility similar to /ads_scan 88 | 89 | * `preprint` backward compatibility similar to /eprint_html 90 | 91 | * `ejournal` backward compatibility similar to /pub_html 92 | 93 | * `data` On-line data 94 | 95 | * `aca` Acta Astronomica Data Files 96 | 97 | * `alma` Atacama Large Millimeter/submillimeter Array 98 | 99 | * `ari` Astronomisches Rechen-Institut 100 | 101 | * `astroverse` CfA Dataverse 102 | 103 | * `atnf` Australia Telescope Online Archive 104 | 105 | * `author` Author Hosted Dataset 106 | 107 | * `bavj` Data of the German Association for Variable Stars 108 | 109 | * `bicep2` BICEP/Keck Data 110 | 111 | * `cadc` Canadian Astronomy Data Center 112 | 113 | * `cds` Strasbourg Astronomical Data Center 114 | 115 | * `chandra` Chandra X-Ray Observatory 116 | 117 | * `dryad` International Repository of Research Data 118 | 119 | * `esa` ESAC Science Data Center 120 | 121 | * `eso` European Southern Observatory 122 | 123 | * `figshare` Online Open Access Repository 124 | 125 | * `gcpd` The General Catalogue of Photometric Data 126 | 127 | * `github` Git Repository Hosting Service 128 | 129 | * `gtc` Gran Telescopio CANARIAS Public Archive 130 | 131 | * `heasarc` NASA's High Energy Astrophysics Science Archive Research Center 132 | 133 | * `herschel` Herschel Science Center 134 | 135 | * `ibvs` Information Bulletin on Variable Stars 136 | 137 | * `ines` IUE Newly Extracted Spectra 138 | 139 | * `iso` Infrared Space Observatory 140 | 141 | * `jwst` JWST Proposal Info 142 | 143 | * `koa` Keck Observatory Archive 144 | 145 | * `mast` Mikulski Archive for Space Telescopes 146 | 147 | * `ned` NASA/IPAC Extragalactic Database 148 | 149 | * `nexsci` NASA Exoplanet Archive 150 | 151 | * `noao` National Optical Astronomy Observatory 152 | 153 | * `pangaea` Digital Data Library and a Data Publisher for Earth System Science 154 | 155 | * `pasa` Publication of the Astronomical Society of Australia Datasets 156 | 157 | * `pdg` Particle Data Group 158 | 159 | * `pds` The NASA Planetary Data System 160 | 161 | * `protocols` Collaborative Platform and Preprint Server for Science Methods and Protocols 162 | 163 | * `simbad` SIMBAD Database at the CDS 164 | 165 | * `spitzer` Spitzer Space Telescope 166 | 167 | * `tns` Transient Name Server 168 | 169 | * `vizier` VizieR Catalog Service 170 | 171 | * `xmm` XMM Newton Science Archive 172 | 173 | * `zenodo` Zenodo Archive 174 | 175 | * `inspire` HEP/Spires Information 176 | 177 | * `librarycatalog` 178 | 179 | * `presentation` Multimedia Presentation 180 | 181 | * `associated` Associated Articles 182 | required: true 183 | in: path 184 | schema: 185 | type: string 186 | responses: 187 | '200': 188 | $ref: '../responses.yaml#/ResolverResponse' 189 | '400': 190 | description: Malformed request 191 | '404': 192 | description: Did not find any matching records 193 | resolver-update: 194 | put: 195 | summary: (pipeline) Add/update records in resolver database 196 | description: > 197 | Add/update records in resolver database. Used by master pipeline. 198 | tags: 199 | - resolver 200 | security: 201 | - ApiKeySecurity: [] 202 | requestBody: 203 | description: Protobuf objects 204 | content: 205 | application/json: 206 | schema: 207 | type: object 208 | responses: 209 | '200': 210 | description: Successfully populated database 211 | '400': 212 | description: > 213 | Too many records sent; unable to extract protobufs; 214 | error updating database 215 | resolver-delete: 216 | delete: 217 | summary: (pipeline) Delete records from resolver database 218 | description: > 219 | Delete records from the resolver database. Used by master pipeline. 220 | 221 | **Note**: This endpoint requires a request body, or payload, 222 | consisting of an array of the bibcodes to be deleted. However, 223 | OpenAPI v3.0.3 does not allow endpoints with the DELETE method to have 224 | request bodies defined; this is resolved in OpenAPI v.3.1+, which is 225 | not yet available. 226 | tags: 227 | - resolver 228 | security: 229 | - ApiKeySecurity: [] 230 | responses: 231 | '200': 232 | description: Successfully deleted records 233 | '400': 234 | description: > 235 | Error with payload; too many bibcodes sent; error updating database 236 | -------------------------------------------------------------------------------- /openapi/services/journals.yaml: -------------------------------------------------------------------------------- 1 | summary: 2 | get: 3 | summary: Summary information about a publication indexed by ADS 4 | parameters: 5 | - $ref: '../parameters.yaml#/JournalBibstem' 6 | description: > 7 | For a bibstem, return information about the publication, including the 8 | official name and commonly-used variations, publisher and publisher 9 | history (when available), and the ISSN and other identifiers when 10 | available. 11 | tags: 12 | - journals 13 | security: 14 | - ApiKeySecurity: [] 15 | responses: 16 | '200': 17 | description: > 18 | JSON object containing `master`, `idents`, `abbrev`, `pubhist`, and 19 | `names` objects, which contain summary information about the 20 | publication (master), known alphanumeric identifiers (idents), 21 | known abbreviations for the title (abbrev), historical information 22 | about the journal and its publisher(s) when available (pubhist), 23 | and native-language and transliterated names for journals having 24 | names in languages other than English, when available (names). 25 | content: 26 | application/json: 27 | schema: 28 | allOf: 29 | - $ref: '../schemas.yaml#/summary' 30 | '403': 31 | description: Authentication failure, unable to get results 32 | '500': 33 | description: Internal error, unable to get results 34 | journal: 35 | get: 36 | summary: > 37 | Indexed journals that match a user-supplied search string 38 | description: > 39 | For a user-supplied search string, return a list of publication titles 40 | and their accompanying bibstems, if the search string matches one of the 41 | title's official name, translated or transliterated names, or a known 42 | alternate title or abbreviation. Spaces ("%20" in URL-encoded format) 43 | are treated as substring terminators, such that the returned result of 44 | a search for `Astro%20Jour` would include both `Astronomical Journal` 45 | and `Astrophysical Journal`. 46 | parameters: 47 | - $ref: '../parameters.yaml#/JournalJournalName' 48 | tags: 49 | - journals 50 | security: 51 | - ApiKeySecurity: [] 52 | responses: 53 | '200': 54 | description: > 55 | JSON list of possible matches containing both bibstem and the 56 | publication's formal name of record. 57 | content: 58 | application/json: 59 | schema: 60 | allOf: 61 | - $ref: '../schemas.yaml#/journal' 62 | '403': 63 | description: Authentication failure, unable to get results 64 | '500': 65 | description: Internal error, unable to get results 66 | holdings: 67 | get: 68 | summary: > 69 | Electronic sources available via the ADS for a given bibstem and volume 70 | parameters: 71 | - $ref: '../parameters.yaml#/JournalBibstem' 72 | - $ref: '../parameters.yaml#/JournalVolume' 73 | description: > 74 | For a user-supplied publication bibstem and volume, return a list of what 75 | types of electronic sources are available in our catalog holdings of 76 | papers from that publication. This service doesn't provide the actual 77 | links to the paper -- this is intended to provide librarians information 78 | at a quick glance what esources are available, including publisher pdf 79 | and html, eprints, and ADS-hosted PDF fulltext. 80 | tags: 81 | - journals 82 | security: 83 | - ApiKeySecurity: [] 84 | responses: 85 | '200': 86 | description: > 87 | JSON object containing the bibcode, volume, number papers in the 88 | volume, and an array of holdings objects containing the page number 89 | and an array of esource types. 90 | content: 91 | application/json: 92 | schema: 93 | allOf: 94 | - $ref: '../schemas.yaml#/holdings' 95 | '403': 96 | description: Authentication failure, unable to get results 97 | '500': 98 | description: Internal error, unable to get results 99 | refsource: 100 | get: 101 | summary: Sources of reference data for given publication 102 | parameters: 103 | - $ref: '../parameters.yaml#/JournalBibstem' 104 | description: > 105 | For a given bibstem, provide a tally of reference sources for each 106 | volume for which references exist. For a publication with references 107 | supplied by the publisher for most or all papers, the `publisher` count 108 | should approximately match the paper count for that volume. References 109 | may also originate from other sources for individual papers, such as 110 | author-supplied (e.g. ArXiv) preprints and OCR by NASA ADS. 111 | tags: 112 | - journals 113 | security: 114 | - ApiKeySecurity: [] 115 | responses: 116 | '200': 117 | description: > 118 | JSON object containing an array of refsource objects, each 119 | of which contains the volume, the year, and a dictionary of 120 | refsources containing the refsource type and count. 121 | content: 122 | application/json: 123 | schema: 124 | allOf: 125 | - $ref: '../schemas.yaml#/refsource' 126 | '403': 127 | description: Authentication failure, unable to get results 128 | '500': 129 | description: Internal error, unable to get results 130 | issn: 131 | get: 132 | summary: ADS bibstem for a given ISSN 133 | parameters: 134 | - $ref: '../parameters.yaml#/JournalISSN' 135 | description: > 136 | For a given ISSN, return a dictionary of the corresponding ADS bibstem, 137 | journal name and ISSN type (e.g. print, electronic) if it exists. If 138 | the record is not found, return an empty dictionary. 139 | tags: 140 | - journals 141 | security: 142 | - ApiKeySecurity: [] 143 | responses: 144 | '200': 145 | description: > 146 | JSON object containing a dictionary. If results are found, 147 | the dictionary contains the ISSN, ISSN type, ADS bibstem, and journal 148 | name of record as key value pairs. If no results are found, the 149 | dictionary is empty. 150 | content: 151 | application/json: 152 | schema: 153 | allOf: 154 | - $ref: '../schemas.yaml#/issn' 155 | '403': 156 | description: Authentication failure, unable to get results 157 | '500': 158 | description: Internal error, unable to get results 159 | browse: 160 | get: 161 | summary: Simple summary for a bibstem query 162 | parameters: 163 | - $ref: '../parameters.yaml#/JournalBibstem' 164 | description: > 165 | For a given bibstem, return a dictionary with journal metadata 166 | drawn from several tables in the journalsdb if it exists. 167 | tags: 168 | - journals 169 | security: 170 | - ApiKeySecurity: [] 171 | responses: 172 | '200': 173 | description: > 174 | JSON object containing a dictionary, with key-value pairs 175 | for english- and native-language titles, canonical abbreviation, 176 | external identifiers, publication history, and completeness estimate. 177 | content: 178 | application/json: 179 | schema: 180 | allOf: 181 | - $ref: '../schemas.yaml#/browse' 182 | '403': 183 | description: Authentication failure, unable to get results 184 | '500': 185 | description: Internal error, unable to get results 186 | -------------------------------------------------------------------------------- /openapi/parameters.yaml: -------------------------------------------------------------------------------- 1 | account_data: 2 | name: account_data 3 | description: > 4 | User identifier; can be session ID, user ID, access token, 5 | or client ID 6 | in: path 7 | required: true 8 | schema: 9 | type: string 10 | access_type: 11 | name: access_type 12 | description: > 13 | Type of access to library 14 | in: query 15 | required: false 16 | schema: 17 | type: string 18 | enum: 19 | - all 20 | - owner 21 | - collaborator 22 | default: all 23 | bibcode: 24 | name: bibcode 25 | description: Bibcode to export 26 | required: true 27 | in: path 28 | schema: 29 | type: string 30 | code: 31 | name: code 32 | description: Code to exchange 33 | required: true 34 | in: query 35 | schema: 36 | type: string 37 | document_id: 38 | name: document_id 39 | description: Bibcode 40 | required: true 41 | in: path 42 | schema: 43 | type: string 44 | export: 45 | name: export 46 | description: Service to export to 47 | required: true 48 | in: path 49 | schema: 50 | type: string 51 | fl: 52 | name: fl 53 | description: Comma delimited set of fields to return; default is 'id' 54 | in: query 55 | style: form 56 | explode: false 57 | example: "bibcode,author,title" 58 | schema: 59 | type: array 60 | default: id 61 | uniqueItems: true 62 | items: 63 | type: string 64 | enum: 65 | - abstract 66 | - ack 67 | - aff 68 | - aff_id 69 | - alternate_bibcode 70 | - alternate_title 71 | - arxiv_class 72 | - author 73 | - author_count 74 | - author_norm 75 | - bibcode 76 | - bibgroup 77 | - bibstem 78 | - citation 79 | - citation_count 80 | - cite_read_boost 81 | - classic_factor 82 | - comment 83 | - copyright 84 | - data 85 | - database 86 | - date 87 | - doctype 88 | - doi 89 | - eid 90 | - entdate 91 | - entry_date 92 | - esources 93 | - facility 94 | - first_author 95 | - first_author_norm 96 | - grant 97 | - grant_agencies 98 | - grant_id 99 | - id 100 | - identifier 101 | - indexstamp 102 | - inst 103 | - isbn 104 | - issn 105 | - issue 106 | - keyword 107 | - keyword_norm 108 | - keyword_schema 109 | - lang 110 | - links_data 111 | - nedid 112 | - nedtype 113 | - orcid_pub 114 | - orcid_other 115 | - orcid_user 116 | - page 117 | - page_count 118 | - page_range 119 | - property 120 | - pub 121 | - pub_raw 122 | - pubdate 123 | - pubnote 124 | - read_count 125 | - reference 126 | - simbid 127 | - title 128 | - vizier 129 | - volume 130 | - year 131 | fl_documents: 132 | name: fl_documents 133 | description: returned fields 134 | in: query 135 | schema: 136 | type: string 137 | default: 'bibcode' 138 | fq: 139 | name: fq 140 | description: Additional filters applied on top of the results of the main query. 141 | in: query 142 | required: false 143 | schema: 144 | type: array 145 | maxItems: 10 146 | items: 147 | type: string 148 | style: form 149 | explode: true 150 | iso_datestring: 151 | name: iso_datestring 152 | in: path 153 | description: > 154 | Datestring, following RFC3339 (e.g. '2008-09-03T20:56:35.450686Z') 155 | schema: 156 | type: string 157 | required: true 158 | key: 159 | name: key 160 | description: Key to return from vault configuration 161 | required: true 162 | in: path 163 | schema: 164 | default: link_servers 165 | type: string 166 | library_id: 167 | name: library_id 168 | description: Library ID 169 | required: true 170 | in: path 171 | schema: 172 | type: string 173 | link: 174 | name: link 175 | description: Query URL 176 | required: true 177 | in: path 178 | schema: 179 | type: string 180 | myadsId: 181 | name: myads_id 182 | description: ID from one myADS notification, taken from the response to `/vault/notifications` 183 | required: true 184 | in: path 185 | schema: 186 | type: integer 187 | notes: 188 | name: notes 189 | description: Whether notes should be returned or not 190 | in: query 191 | schema: 192 | type: boolean 193 | default: true 194 | OrcidAuthorization: 195 | name: Orcid-Authorization 196 | in: header 197 | description: > 198 | 'access_token' of the orcid user (will be passed on to the ORCiD API) 199 | schema: 200 | type: string 201 | orcidId: 202 | name: orcidId 203 | in: path 204 | description: ORCiD ID, i.e. '0000-0000-0000-0000' 205 | schema: 206 | type: string 207 | required: true 208 | password_reset_token: 209 | name: token 210 | description: Raw email address of recipient 211 | in: path 212 | required: true 213 | schema: 214 | type: string 215 | putcode: 216 | name: putcode 217 | description: Putcode (unique identifier for a work on the ORCID API) 218 | in: path 219 | schema: 220 | type: integer 221 | required: true 222 | q: 223 | name: q 224 | description: >- 225 | Query string; for detailed documentation go to 226 | https://ui.adsabs.harvard.edu/help/search/search-syntax 227 | in: query 228 | required: true 229 | schema: 230 | type: string 231 | example: "author%3Amart%C3%ADnez+neutron+star" 232 | queryId: 233 | name: queryId 234 | description: QID returned from the POST operation 235 | required: true 236 | in: path 237 | schema: 238 | type: string 239 | raw: 240 | name: raw 241 | description: returns raw bibcodes from database 242 | in: query 243 | schema: 244 | type: boolean 245 | default: false 246 | rows: 247 | name: rows 248 | description: How many records to return for this request (default=10, maximum=2000) 249 | in: query 250 | required: false 251 | schema: 252 | type: integer 253 | default: 10 254 | maximum: 2000 255 | sort: 256 | name: sort 257 | description: > 258 | The format is 'field' + 'direction' where direction is one of 'asc' or 259 | 'desc' and field is any of the valid indexes. The default sorting is by 260 | relevance (computed by our search engine). Example\: 261 | 'sort=read_count+desc' Some useful fields to sort by may be date, 262 | citation_count, or read_count. 263 | in: query 264 | required: false 265 | schema: 266 | type: string 267 | enum: 268 | - id asc 269 | - author_count asc 270 | - bibcode asc 271 | - citation_count asc 272 | - citation_count_norm asc 273 | - classic_factor asc 274 | - first_author asc 275 | - date asc 276 | - entry_date asc 277 | - read_count asc' 278 | - score asc 279 | - id desc 280 | - author_count desc 281 | - bibcode desc 282 | - citation_count desc 283 | - citation_count_norm desc 284 | - classic_factor desc 285 | - first_author desc 286 | - date desc 287 | - entry_date desc 288 | - read_count desc 289 | - score desc 290 | start: 291 | name: start 292 | description: For pagination, offset of the first returned result (default=0) 293 | in: query 294 | required: false 295 | schema: 296 | type: integer 297 | minimum: 0 298 | default: 0 299 | token: 300 | name: token 301 | description: > 302 | Verification token 303 | in: path 304 | required: true 305 | schema: 306 | type: string 307 | user_id: 308 | name: user_id 309 | description: User ID 310 | required: true 311 | in: path 312 | schema: 313 | type: string 314 | JournalBibstem: 315 | name: bibstem 316 | description: > 317 | (Case-sensitive) ADS identifier for a publication, used to create bibcodes 318 | in: path 319 | example: "ApJS" 320 | required: true 321 | schema: 322 | type: string 323 | JournalVolume: 324 | name: volume 325 | description: publication volume 326 | in: path 327 | required: true 328 | schema: 329 | type: string 330 | JournalJournalName: 331 | name: journalname 332 | description: Search string 333 | required: true 334 | in: path 335 | example: "Astro%20Jour" 336 | schema: 337 | type: string 338 | JournalISSN: 339 | name: issn 340 | description: Search string 341 | required: true 342 | in: path 343 | example: "0004-637X" 344 | schema: 345 | type: string 346 | -------------------------------------------------------------------------------- /API_documentation_Python/Export_API_Python.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "## Export service\n", 8 | "This notebook explains how to use the API to retrieve data in BibTeX and other formats for one or more bibcodes. Examples here will be shown using Python with the use of the [requests](http://docs.python-requests.org/en/master/) library, though the same work could be done using the [unofficial Python ADS library](https://ads.readthedocs.io/en/latest/) or curl commands on the command line (see the \"API documentation - UNIX shell\" folder in this same repository).\n", 9 | "\n", 10 | "The **base_url** for export queries is: \n", 11 | "```\n", 12 | "https://api.adsabs.harvard.edu/v1/export/\n", 13 | "``` \n", 14 | "\n", 15 | "where `` should be replaced by the desired export format. For example, to get BibTeX for a set of records, send a request with the POST method to the URL `https://api.adsabs.harvard.edu/v1/export/bibtex`. The following formats are currently supported:\n", 16 | "* BibTeX (`/bibtex`)\n", 17 | "* BibTeX ABS (`/bibtexabs`)\n", 18 | "* ADS (`/ads`)\n", 19 | "* EndNote (`/endnote`)\n", 20 | "* ProCite (`/procite`)\n", 21 | "* RIS (`/ris`)\n", 22 | "* RefWorks (`/refworks`)\n", 23 | "* RSS (`/rss`)\n", 24 | "* MEDLARS (`/medlars`)\n", 25 | "* DC-XML (`/dcxml`)\n", 26 | "* REF-XML (`/refxml`)\n", 27 | "* REFABS-XML (`/refabsxml`)\n", 28 | "* AASTeX (`/aastex`)\n", 29 | "* Icarus (`/icarus`)\n", 30 | "* MNRAS (`/mnras`)\n", 31 | "* Solar Physics (`/soph`)\n", 32 | "* VOTable (`/votable`)\n", 33 | "* Custom format (`/custom`)\n", 34 | "\n", 35 | "The POST payload (set via the `data` keyword) should be in serialized JSON format. We use the `json` library here to convert between Python dictionaries and JSON strings. For the export, the payload accepts the following keys: \n", 36 | "* `bibcode`: **required**; set the value to a list of the bibcodes to export\n", 37 | "* `sort`: optional; set the value to a combination of the field to sort on (see the Fields section in the Search API notebook), followed by a space plus `asc` or `desc` to indicate ascending or descending order. If the sort order is not specified, the default sort is by date, then by bibcode \n", 38 | "* `format`: **required when using custom format**; set the value to a string with the [desired formatting codes](http://adsabs.github.io/help/actions/export)\n", 39 | "\n", 40 | "For example, for most formats the POST payload would take this format: `{\"bibcode\": [\"\",\"\", ...], \"sort\": \" \"}`. For custom format exports, the POST payload would take this format: `{\"bibcode\": [\"\",\"\", ...], \"sort\": \" \", \"format\": \"\"}`\n", 41 | "\n", 42 | "The complete request should also include your personal API access token, as described in the top-level [README](https://github.com/adsabs/adsabs-dev-api/blob/master/README.md). " 43 | ] 44 | }, 45 | { 46 | "cell_type": "code", 47 | "execution_count": 1, 48 | "metadata": {}, 49 | "outputs": [], 50 | "source": [ 51 | "# import the requests package and set your token in a variable for later use\n", 52 | "import requests\n", 53 | "import json\n", 54 | "\n", 55 | "token=\"your-token-here\"" 56 | ] 57 | }, 58 | { 59 | "cell_type": "markdown", 60 | "metadata": {}, 61 | "source": [ 62 | "### Examples" 63 | ] 64 | }, 65 | { 66 | "cell_type": "code", 67 | "execution_count": 2, 68 | "metadata": {}, 69 | "outputs": [ 70 | { 71 | "data": { 72 | "text/plain": [ 73 | "'@ARTICLE{2015RaSc...50..916A,\\n author = {{Ads}, A.~G. and {Bergad{\\\\`a}}, P. and {Regu{\\\\\\'e}}, J.~R. and {Alsina-Pag{\\\\`e}s}, R.~M. and {Pijoan}, J.~L. and {Altadill}, D. and {Badia}, D. and {Graells}, S.},\\n title = \"{Vertical and oblique ionospheric soundings over the long haul HF link between Antarctica and Spain}\",\\n journal = {Radio Science},\\n keywords = {VIS, OIS, ionosphere},\\n year = 2015,\\n month = sep,\\n volume = {50},\\n number = {9},\\n pages = {916-930},\\n doi = {10.1002/2015RS005773},\\n adsurl = {https://ui.adsabs.harvard.edu/abs/2015RaSc...50..916A},\\n adsnote = {Provided by the SAO/NASA Astrophysics Data System}\\n}\\n\\n'" 74 | ] 75 | }, 76 | "execution_count": 2, 77 | "metadata": {}, 78 | "output_type": "execute_result" 79 | } 80 | ], 81 | "source": [ 82 | "# get the BibTeX entry for a single bibcode\n", 83 | "# note that the GET method can be used for a single bibcode, as shown\n", 84 | "results = requests.get(\"https://api.adsabs.harvard.edu/v1/export/bibtex/2015RaSc...50..916A\", \\\n", 85 | " headers={'Authorization': 'Bearer ' + token})\n", 86 | "results.text" 87 | ] 88 | }, 89 | { 90 | "cell_type": "code", 91 | "execution_count": 3, 92 | "metadata": {}, 93 | "outputs": [ 94 | { 95 | "data": { 96 | "text/plain": [ 97 | "{'msg': 'Retrieved 3 abstracts, starting with number 1.',\n", 98 | " 'export': '\\\\bibitem[Accomazzi et al.(2000)]{2000A&AS..143...85A} Accomazzi, A., Eichhorn, G., Kurtz, M.~J., et al.\\\\ 2000, \\\\aaps, 143, 85. doi:10.1051/aas:2000172\\n\\\\bibitem[Grant et al.(2000)]{2000A&AS..143..111G} Grant, C.~S., Accomazzi, A., Eichhorn, G., et al.\\\\ 2000, \\\\aaps, 143, 111. doi:10.1051/aas:2000173\\n\\\\bibitem[Kurtz et al.(2000)]{2000A&AS..143...41K} Kurtz, M.~J., Eichhorn, G., Accomazzi, A., et al.\\\\ 2000, \\\\aaps, 143, 41. doi:10.1051/aas:2000170\\n'}" 99 | ] 100 | }, 101 | "execution_count": 3, 102 | "metadata": {}, 103 | "output_type": "execute_result" 104 | } 105 | ], 106 | "source": [ 107 | "# get the AASTeX entries for multiple bibcodes, sorting by first author\n", 108 | "payload = {\"bibcode\": [\"2000A&AS..143...41K\", \"2000A&AS..143...85A\", \"2000A&AS..143..111G\"],\n", 109 | " \"sort\": \"first_author asc\"\n", 110 | " }\n", 111 | "results = requests.post(\"https://api.adsabs.harvard.edu/v1/export/aastex\", \\\n", 112 | " headers={'Authorization': 'Bearer ' + token}, \\\n", 113 | " data=json.dumps(payload))\n", 114 | "results.json()" 115 | ] 116 | }, 117 | { 118 | "cell_type": "code", 119 | "execution_count": 4, 120 | "metadata": { 121 | "scrolled": true 122 | }, 123 | "outputs": [ 124 | { 125 | "name": "stdout", 126 | "output_type": "stream", 127 | "text": [ 128 | "{\"msg\": \"Retrieved 3 abstracts, starting with number 1.\", \"export\": \"Accomazzi, Eichhorn, Kurtz, Grant \\\\& Murray 2000\\nGrant, Accomazzi, Eichhorn, Kurtz \\\\& Murray 2000\\nKurtz, Eichhorn, Accomazzi, Grant, Murray \\\\& Watson 2000\\n\\n\"}" 129 | ] 130 | }, 131 | { 132 | "name": "stderr", 133 | "output_type": "stream", 134 | "text": [ 135 | " % Total % Received % Xferd Average Speed Time Time Time Current\n", 136 | " Dload Upload Total Spent Left Speed\n", 137 | "\r", 138 | " 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0\r", 139 | "100 363 100 234 100 129 234 129 0:00:01 --:--:-- 0:00:01 1354\n" 140 | ] 141 | } 142 | ], 143 | "source": [ 144 | "# same as above, but exported using a custom format\n", 145 | "payload = {\"format\": \"%m %Y\",\n", 146 | " \"bibcode\": [\"2000A&AS..143...41K\", \"2000A&AS..143...85A\", \"2000A&AS..143..111G\"],\n", 147 | " \"sort\": \"first_author asc\"\n", 148 | " }\n", 149 | "results = requests.post(\"https://api.adsabs.harvard.edu/v1/export/aastex\", \\\n", 150 | " headers={'Authorization': 'Bearer ' + token}, \\\n", 151 | " data=json.dumps(payload))\n", 152 | "results.json()" 153 | ] 154 | } 155 | ], 156 | "metadata": { 157 | "kernelspec": { 158 | "display_name": "Python 3", 159 | "language": "python", 160 | "name": "python3" 161 | }, 162 | "language_info": { 163 | "codemirror_mode": { 164 | "name": "ipython", 165 | "version": 3 166 | }, 167 | "file_extension": ".py", 168 | "mimetype": "text/x-python", 169 | "name": "python", 170 | "nbconvert_exporter": "python", 171 | "pygments_lexer": "ipython3", 172 | "version": "3.8.1" 173 | } 174 | }, 175 | "nbformat": 4, 176 | "nbformat_minor": 2 177 | } 178 | -------------------------------------------------------------------------------- /openapi/services/solr.yaml: -------------------------------------------------------------------------------- 1 | search-bigquery: 2 | post: 3 | summary: Search using bigquery 4 | description: > 5 | Search endpoint which accepts a list of many IDs (bibcodes). Supports 6 | paging. 7 | 8 | 9 | This endpoint accepts standard search query parameters and returns 10 | standard search results, but it also accepts as input a very large query 11 | (i.e. a query that can be expressed only as a list of search 12 | criteria, typically IDs). There is currently no limit to the size of the 13 | submitted data (besides buffer/time limits imposed by our API 14 | frontend); however, there are severe limits on how often you can call 15 | this endpoint. Typically, only 100 requests per day per user are allowed. 16 | 17 | 18 | The `bigquery` is always executed as a filter **after** the main query 19 | (to filter out unwanted results and keep only the results 20 | specified by the `bigquery`). You may want to use `q=*:*` to filter 21 | contents of the whole database, however it is advisable to make 22 | the `q` as specific as possible. Broad queries have higher `qTime` 23 | (execution time) and that will be counted towards your rate-limit 24 | (in the future). 25 | 26 | 27 | The bigquery filter is *applied only after* the main search (i.e. it 28 | limits results of the main search). 29 | 30 | 31 | ## Example requests 32 | 33 | 34 | Python 35 | 36 | 37 | ``` 38 | import requests 39 | bibcodes="bibcode\n1907AN....174...59.\n1908PA.....16..445.\n1989LNP...334..242S" 40 | r = requests.post('https://api.adsabs.harvard.edu/v1/search/bigquery', 41 | params={'q':'*:*', 'wt':'json', 'fq':'{!bitset}', 'fl':'bibcode'}, 42 | headers={'Authorization': 'Bearer TOKEN'}, 43 | data=bibcodes) 44 | ``` 45 | 46 | 47 | Bash curl 48 | 49 | 50 | ``` 51 | curl 'https://api.adsabs.harvard.edu/v1/search/bigquery?q=*:*&fl=bibcode' \ 52 | -X 'POST' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: big-query/csv' \ 53 | -d $'bibcode\n1907AN....174...59.\n1908PA.....16..445.\n1989LNP...334..242S' 54 | ``` 55 | security: 56 | - ApiKeySecurity: [] 57 | parameters: 58 | - $ref: '../parameters.yaml#/q' 59 | - $ref: '../parameters.yaml#/fq' 60 | - $ref: '../parameters.yaml#/fl' 61 | - $ref: '../parameters.yaml#/start' 62 | - $ref: '../parameters.yaml#/rows' 63 | - $ref: '../parameters.yaml#/sort' 64 | requestBody: 65 | description: > 66 | Newline separated list of values; the first line specifies the index 67 | field, the rest are the search values.
Currently, we 68 | allow searching in `bibcode` index only. You can submit `canonical` 69 | as well as `alternate` bibcodes - the search will automatically 70 | match both. In the future, the list of available indexes may be 71 | extended. 72 | 73 | 74 | Note: to correctly format the POST payload, including the newline (\n) 75 | characters, in a bash curl request, use ANSI-C quoting (e.g. `$'...'`) 76 | as shown in the examples. 77 | content: 78 | big-query/csv: 79 | schema: 80 | type: string 81 | responses: 82 | '200': 83 | $ref: '../responses.yaml#/SearchResults' 84 | '404': 85 | $ref: '../responses.yaml#/SearchResults' 86 | '499': 87 | description: Server too busy 88 | '500': 89 | description: Server error 90 | tags: 91 | - search 92 | search-qtree: 93 | get: 94 | summary: (advanced) Search ADS and return a query tree object 95 | description: > 96 | Returns a `query tree` (Abstract Syntax Tree - AST) as understood by our 97 | query parser. The structure can be used by external applications to 98 | rewrite the query or check its syntactic correctness. 99 | 100 | 101 | ## Example result 102 | 103 | ```JSON 104 | 105 | { 106 | "qtree": "\n{\"name\":\"OPERATOR\", \"label\":\"DEFOP\", \"children\": [\n {\"name\":\"MODIFIER\", \"label\":\"MODIFIER\", \"children\": [\n {\"name\":\"TMODIFIER\", \"label\":\"TMODIFIER\", \"children\": [\n {\"name\":\"FIELD\", \"label\":\"FIELD\", \"children\": [\n {\"name\":\"QNORMAL\", \"label\":\"QNORMAL\", \"children\": [\n {\"name\":\"TERM_NORMAL\", \"input\":\"star\", \"start\":0, \"end\":3}]\n }]\n }]\n }]\n }]\n}", 107 | "responseHeader": { 108 | "status": 0, 109 | "QTime": 6, 110 | "params": { 111 | "q": "star", 112 | "wt": "json", 113 | "fl": "id" 114 | } 115 | } 116 | } 117 | ``` 118 | parameters: 119 | - $ref: '../parameters.yaml#/q' 120 | - $ref: '../parameters.yaml#/fq' 121 | - $ref: '../parameters.yaml#/fl' 122 | - $ref: '../parameters.yaml#/start' 123 | - $ref: '../parameters.yaml#/rows' 124 | - $ref: '../parameters.yaml#/sort' 125 | security: 126 | - ApiKeySecurity: [] 127 | responses: 128 | '200': 129 | $ref: '../responses.yaml#/QTree' 130 | '400': 131 | description: Malformed request 132 | '404': 133 | description: Resource not found 134 | '499': 135 | description: Server too busy 136 | '500': 137 | description: Server error 138 | tags: 139 | - search 140 | search-query: 141 | get: 142 | summary: Search ADS 143 | description: > 144 | Do a search. 145 | 146 | 147 | Query the search engine and return results. All parameters have to be 148 | properly url-encoded UTF-8. The response body will always be JSON 149 | encoded. 150 | 151 | 152 | ## Example Search 153 | 154 | `q=bibcode:2012A%26A...542A..16R&fl=bibcode,author,pub,identifier,title,property,abstract,keyword,aff` 155 | 156 | ## Example Response 157 | 158 | ```{ 159 | "responseHeader":{ 160 | "status":0, 161 | "QTime":3, 162 | "params":{ 163 | "q":"bibcode:2012A&A...542A..16R", 164 | "fl":"bibcode,author,pub,identifier,title,property,abstract,keyword", 165 | "start":"0", 166 | "rows":"10", 167 | "wt":"json"}}, 168 | "response":{"numFound":1,"start":0,"docs":[ 169 | { 170 | "identifier":["2012arXiv1204.4485R", 171 | "2012A&A...542A..16R", 172 | "10.1051/0004-6361/201118723", 173 | "10.1051/0004-6361/201118723", 174 | "arXiv:1204.4485", 175 | "2012arXiv1204.4485R"], 176 | "abstract":"X-ray surveys contain sizable numbers [...], 177 | "property":["ARTICLE", 178 | "ASSOCIATED", 179 | "DATA", 180 | "EPRINT_OPENACCESS", 181 | "ESOURCE", 182 | "OPENACCESS", 183 | "PUB_OPENACCESS", 184 | "REFEREED"], 185 | "bibcode":"2012A&A...542A..16R", 186 | "author":["Ranalli, P.", 187 | "Comastri, A.", 188 | "Zamorani, G.", 189 | "Cappelluti, N.", 190 | "Civano, F.", 191 | "Georgantopoulos, I.", 192 | "Gilli, R.", 193 | "Schinnerer, E.", 194 | "Smolčić, V.", 195 | "Vignali, C."], 196 | "pub":"Astronomy and Astrophysics", 197 | "keyword":["X-rays: galaxies", 198 | "radio continuum: galaxies", 199 | "galaxies: fundamental parameters", 200 | "galaxies: star formation", 201 | "galaxies: active", 202 | "galaxies: high-redshift", 203 | "Astrophysics - Cosmology and Extragalactic Astrophysics"], 204 | "title":["X-ray properties of radio-selected star forming galaxies in the Chandra-COSMOS survey"]}] 205 | }} 206 | ``` 207 | 208 | ## Example Search Requests 209 | 210 | Query | Explanation 211 | 212 | ------|------------------------------------------------- 213 | `q=bibcode:2011ApJ...737..103S` | Search by bibcode 214 | `q=black+holes&fq=database:astronomy` | Search for "black holes", restricted to astronomy content 215 | `q=dark+energy&fq=author:"Civano,+F"&sort=citation_count+desc` | Search for "dark energy", filter by author, sort by citation count 216 | `q=dark+energy&sort=citation_count+desc&fl=bibcode,property` | Return 217 | *bibcode* and *property* values 218 | 219 | `q=author:"Kurtz,+M"&fq=property:refereed`| Limit a search to only 220 | refereed articles 221 | 222 | `q=transiting+exoplanets&rows=200`| Search for "transiting exoplanets", 223 | get 200 rows 224 | 225 | `q=transiting+exoplanets&rows=200&start=201`| Same search but get the 226 | next 200 rows 227 | 228 | parameters: 229 | - $ref: '../parameters.yaml#/q' 230 | - $ref: '../parameters.yaml#/fq' 231 | - $ref: '../parameters.yaml#/fl' 232 | - $ref: '../parameters.yaml#/start' 233 | - $ref: '../parameters.yaml#/rows' 234 | - $ref: '../parameters.yaml#/sort' 235 | security: 236 | - ApiKeySecurity: [] 237 | responses: 238 | '200': 239 | $ref: '../responses.yaml#/SearchResults' 240 | '400': 241 | description: Malformed request 242 | '404': 243 | description: Resource not found 244 | '499': 245 | description: Server too busy 246 | '500': 247 | description: Server error 248 | tags: 249 | - search 250 | -------------------------------------------------------------------------------- /API_documentation_UNIXshell/Export_API.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "## Export service\n", 8 | "This notebook explains how to retrieve data in BibTeX and other formats for one or more bibcodes.\n", 9 | "\n", 10 | "The base URL for export queries is:\n", 11 | "```\n", 12 | "https://api.adsabs.harvard.edu/v1/export/\n", 13 | "```\n", 14 | "\n", 15 | "where `` should be replaced by the desired export format. For example, to get BibTeX for a set of records, send a request with the POST method to the URL `https://api.adsabs.harvard.edu/v1/export/bibtex`. The following formats are currently supported:\n", 16 | "* BibTeX (`/bibtex`)\n", 17 | "* BibTeX ABS (`/bibtexabs`)\n", 18 | "* ADS (`/ads`)\n", 19 | "* EndNote (`/endnote`)\n", 20 | "* ProCite (`/procite`)\n", 21 | "* RIS (`/ris`)\n", 22 | "* RefWorks (`/refworks`)\n", 23 | "* RSS (`/rss`)\n", 24 | "* MEDLARS (`/medlars`)\n", 25 | "* DC-XML (`/dcxml`)\n", 26 | "* REF-XML (`/refxml`)\n", 27 | "* REFABS-XML (`/refabsxml`)\n", 28 | "* AASTeX (`/aastex`)\n", 29 | "* Icarus (`/icarus`)\n", 30 | "* MNRAS (`/mnras`)\n", 31 | "* Solar Physics (`/soph`)\n", 32 | "* VOTable (`/votable`)\n", 33 | "* Custom format (`/custom`)\n", 34 | "\n", 35 | "The POST payload (set via the `-d` flag) should be in JSON format. To indicate the payload format, you must add the following header to your `curl` request: `-H \"Content-Type: application/json\"`. For the export, the payload accepts the following keys: \n", 36 | "* `bibcode`: **required**; set the value to a list of the bibcodes to export\n", 37 | "* `sort`: optional; set the value to a combination of the field to sort on (see the Fields section in the Search API notebook), followed by a space plus `asc` or `desc` to indicate ascending or descending order. If the sort order is not specified, the default sort is by date, then by bibcode \n", 38 | "* `format`: **required when using custom format**; set the value to a string with the [desired formatting codes](http://adsabs.github.io/help/actions/export)\n", 39 | "\n", 40 | "For example, for most formats the POST payload would take this format: `{\"bibcode\": [\"\",\"\", ...], \"sort\": \" \"}`. For custom format exports, the POST payload would take this format: `{\"bibcode\": [\"\",\"\", ...], \"sort\": \" \", \"format\": \"\"}`\n", 41 | "\n", 42 | "The complete `curl` request should also include your personal API access token, as described in the top-level [README](https://github.com/adsabs/adsabs-dev-api/blob/master/README.md). The complete `curl` request follows this format:\n", 43 | "```\n", 44 | " curl -H \"Authorization: Bearer \" -H \"Content-Type: application/json\" https://api.adsabs.harvard.edu/v1/export/ -X POST -d '{\"bibcode\":[\"\",\"\", ...]}' \n", 45 | "```\n", 46 | "\n", 47 | "Note: the API examples in this notebook assume you're using `curl` statements from the shell command line--you'll see `%%bash` at the top of a cell if its contents should be run in the shell instead of in Python. Guidelines for translating bash `curl` statements into Python can be found in the [converting curl to python notebook](Converting_curl_to_python.ipynb). If you prefer, you can use the unofficial Python package instead; see the top-level [README](https://github.com/adsabs/adsabs-dev-api/blob/master/README.md) for more information." 48 | ] 49 | }, 50 | { 51 | "cell_type": "markdown", 52 | "metadata": {}, 53 | "source": [ 54 | "### Examples" 55 | ] 56 | }, 57 | { 58 | "cell_type": "code", 59 | "execution_count": 1, 60 | "metadata": {}, 61 | "outputs": [ 62 | { 63 | "name": "stdout", 64 | "output_type": "stream", 65 | "text": [ 66 | "{\"msg\": \"Retrieved 1 abstracts, starting with number 1.\", \"export\": \"@ARTICLE{2015RaSc...50..916A,\\n author = {{Ads}, A.~G. and {Bergad{\\\\`a}}, P. and {Regu{\\\\'e}}, J.~R. and {Alsina-\\n Pag{\\\\`e}s}, R.~M. and {Pijoan}, J.~L. and {Altadill}, D. and\\n {Badia}, D. and {Graells}, S.},\\n title = \\\"{Vertical and oblique ionospheric soundings over the long haul HF link\\n between Antarctica and Spain}\\\",\\n journal = {Radio Science},\\n keywords = {VIS, OIS, ionosphere},\\n year = 2015,\\n month = Sep,\\n volume = {50},\\n pages = {916-930},\\n doi = {10.1002/2015RS005773},\\n adsurl = {https://ui.adsabs.harvard.edu/#abs/2015RaSc...50..916A},\\n adsnote = {Provided by the SAO/NASA Astrophysics Data System}\\n}\\n\\n\"}" 67 | ] 68 | }, 69 | { 70 | "name": "stderr", 71 | "output_type": "stream", 72 | "text": [ 73 | " % Total % Received % Xferd Average Speed Time Time Time Current\n", 74 | " Dload Upload Total Spent Left Speed\n", 75 | "\r", 76 | " 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0\r", 77 | "100 833 100 798 100 35 798 35 0:00:01 --:--:-- 0:00:01 3062\n" 78 | ] 79 | } 80 | ], 81 | "source": [ 82 | "%%bash\n", 83 | "token=\"your-token-here\"\n", 84 | "# get the BibTeX entry for a single bibcode\n", 85 | "curl -H \"Authorization: Bearer $token\" -H \"Content-Type: application/json\" \\\n", 86 | " https://api.adsabs.harvard.edu/v1/export/bibtex \\\n", 87 | " -X POST -d '{\"bibcode\":[\"2015RaSc...50..916A\"]}'" 88 | ] 89 | }, 90 | { 91 | "cell_type": "code", 92 | "execution_count": 2, 93 | "metadata": {}, 94 | "outputs": [ 95 | { 96 | "name": "stdout", 97 | "output_type": "stream", 98 | "text": [ 99 | "{\"msg\": \"Retrieved 3 abstracts, starting with number 1.\", \"export\": \"\\\\bibitem[Accomazzi, et al.(2000)]{2000A&AS..143...85A} Accomazzi, A., Eichhorn, G., Kurtz, M.~J., et al.\\\\ 2000, Astronomy and Astrophysics Supplement Series, 143, 85.\\n\\\\bibitem[Grant, et al.(2000)]{2000A&AS..143..111G} Grant, C.~S., Accomazzi, A., Eichhorn, G., et al.\\\\ 2000, Astronomy and Astrophysics Supplement Series, 143, 111.\\n\\\\bibitem[Kurtz, et al.(2000)]{2000A&AS..143...41K} Kurtz, M.~J., Eichhorn, G., Accomazzi, A., et al.\\\\ 2000, Astronomy and Astrophysics Supplement Series, 143, 41.\\n\"}" 100 | ] 101 | }, 102 | { 103 | "name": "stderr", 104 | "output_type": "stream", 105 | "text": [ 106 | " % Total % Received % Xferd Average Speed Time Time Time Current\n", 107 | " Dload Upload Total Spent Left Speed\n", 108 | "\r", 109 | " 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0\r", 110 | "100 684 100 574 100 110 574 110 0:00:01 --:--:-- 0:00:01 915\r", 111 | "100 684 100 574 100 110 574 110 0:00:01 --:--:-- 0:00:01 914\n" 112 | ] 113 | } 114 | ], 115 | "source": [ 116 | "%%bash\n", 117 | "token=\"your-token-here\"\n", 118 | "# get the AASTeX entries for multiple bibcodes, sorting by first author\n", 119 | "curl -H \"Authorization: Bearer $token\" -H \"Content-Type: application/json\" \\\n", 120 | " https://api.adsabs.harvard.edu/v1/export/aastex \\\n", 121 | " -X POST \\\n", 122 | " -d '{\"bibcode\": [\"2000A&AS..143...41K\", \"2000A&AS..143...85A\", \"2000A&AS..143..111G\"], \"sort\": \"first_author asc\"}'" 123 | ] 124 | }, 125 | { 126 | "cell_type": "code", 127 | "execution_count": 3, 128 | "metadata": { 129 | "scrolled": true 130 | }, 131 | "outputs": [ 132 | { 133 | "name": "stdout", 134 | "output_type": "stream", 135 | "text": [ 136 | "{\"msg\": \"Retrieved 3 abstracts, starting with number 1.\", \"export\": \"Accomazzi, Eichhorn, Kurtz, Grant \\\\& Murray 2000\\nGrant, Accomazzi, Eichhorn, Kurtz \\\\& Murray 2000\\nKurtz, Eichhorn, Accomazzi, Grant, Murray \\\\& Watson 2000\\n\\n\"}" 137 | ] 138 | }, 139 | { 140 | "name": "stderr", 141 | "output_type": "stream", 142 | "text": [ 143 | " % Total % Received % Xferd Average Speed Time Time Time Current\n", 144 | " Dload Upload Total Spent Left Speed\n", 145 | "\r", 146 | " 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0\r", 147 | "100 363 100 234 100 129 234 129 0:00:01 --:--:-- 0:00:01 1354\n" 148 | ] 149 | } 150 | ], 151 | "source": [ 152 | "%%bash\n", 153 | "token=\"your-token-here\"\n", 154 | "# same as above, but exported using a custom format\n", 155 | "curl -H \"Authorization: Bearer $token\" -H \"Content-Type: application/json\" \\\n", 156 | " https://api.adsabs.harvard.edu/v1/export/custom \\\n", 157 | " -X POST \\\n", 158 | " -d '{\"format\": \"%m %Y\", \"bibcode\": [\"2000A&AS..143...41K\", \"2000A&AS..143...85A\", \"2000A&AS..143..111G\"], \"sort\": \"first_author asc\"}'" 159 | ] 160 | } 161 | ], 162 | "metadata": { 163 | "kernelspec": { 164 | "display_name": "Python 2", 165 | "language": "python", 166 | "name": "python2" 167 | }, 168 | "language_info": { 169 | "codemirror_mode": { 170 | "name": "ipython", 171 | "version": 2 172 | }, 173 | "file_extension": ".py", 174 | "mimetype": "text/x-python", 175 | "name": "python", 176 | "nbconvert_exporter": "python", 177 | "pygments_lexer": "ipython2", 178 | "version": "2.7.13" 179 | } 180 | }, 181 | "nbformat": 4, 182 | "nbformat_minor": 2 183 | } 184 | -------------------------------------------------------------------------------- /openapi/services/metrics.yaml: -------------------------------------------------------------------------------- 1 | metrics: 2 | post: 3 | summary: Retrieve metrics for one or more bibcodes 4 | description: > 5 | This endpoint retrieves some or all of the available citation metrics for 6 | one or more bibcodes. More documentation is available [here](https://github.com/adsabs/adsabs-dev-api/blob/master/Metrics_API.ipynb). 7 | 8 | 9 | The available statistics types are: 10 | 11 | 12 | * 'basic': publication and usage stats (all papers, and just refereed papers); returns 13 | 'basic stats' and 'basic stats refereed' 14 | 15 | * 'citations': citation stats; returns 'citation stats' and 'citation stats refereed' 16 | 17 | * 'indicators': indicators, like the h-index, g-index, m-index, etc.; returns 18 | 'indicators' and 'indicators refereed' 19 | 20 | * 'histograms': publication, citation, reads and downloads histograms; returns 'histograms' 21 | 22 | * 'timeseries': time series for a set of indicators; returns 'time series' 23 | tags: 24 | - metrics 25 | security: 26 | - ApiKeySecurity: [] 27 | requestBody: 28 | description: > 29 | JSON containing the bibcode(s) to produce metrics for, as well as types of metrics desired. 30 | Depending on the type of metrics requested, other options may be included in the payload. 31 | content: 32 | application/json: 33 | schema: 34 | allOf: 35 | - $ref: '../schemas.yaml#/bibcodesObject' 36 | - type: object 37 | properties: 38 | types: 39 | description: Types of metrics to return. If not specified, all metrics will be returned. 40 | type: array 41 | items: 42 | type: string 43 | enum: 44 | - basic 45 | - citations 46 | - indicators 47 | - histograms 48 | - timeseries 49 | histograms: 50 | description: > 51 | If the metrics type is 'histograms', types of histograms to return. 52 | If not specified, all histograms will be returned. 53 | 54 | 55 | The available histogram types are: 56 | 57 | 58 | * 'publications': returns 'all publications', 'refereed publications', 'all publications normalized', 'refereed publications normalized' 59 | 60 | * 'reads': returns 'all reads', 'refereed reads', 'all reads normalized', 'refereed reads normalized' 61 | 62 | * 'downloads': returns 'all downloads', 'refereed downloads', 'all downloads normalized', 'refereed downloads normalized' 63 | 64 | * 'citations': returns 'refereed to refereed', 'nonrefereed to refereed', 'refereed to nonrefereed', 'nonrefereed to nonrefereed', 'refereed to refereed normalized', 'nonrefereed to refereed normalized', 'refereed to nonrefereed normalized', 'nonrefereed to nonrefereed normalized' 65 | type: array 66 | items: 67 | type: string 68 | enum: 69 | - publications 70 | - reads 71 | - downloads 72 | - citations 73 | responses: 74 | '200': 75 | description: > 76 | JSON containing the requested metrics 77 | content: 78 | application/json: 79 | schema: 80 | allOf: 81 | - $ref: '../schemas.yaml#/basicMetricsResponse' 82 | - type: object 83 | properties: 84 | indicators: 85 | type: object 86 | properties: 87 | g: 88 | type: integer 89 | h: 90 | type: integer 91 | i10: 92 | type: integer 93 | i100: 94 | type: integer 95 | m: 96 | type: number 97 | read10: 98 | type: number 99 | riq: 100 | type: integer 101 | tori: 102 | type: number 103 | indicators refereed: 104 | type: object 105 | properties: 106 | g: 107 | type: integer 108 | h: 109 | type: integer 110 | i10: 111 | type: integer 112 | i100: 113 | type: integer 114 | m: 115 | type: number 116 | read10: 117 | type: number 118 | riq: 119 | type: integer 120 | tori: 121 | type: number 122 | time series: 123 | type: object 124 | properties: 125 | g: 126 | type: object 127 | properties: 128 | year: 129 | type: integer 130 | h: 131 | type: object 132 | properties: 133 | year: 134 | type: integer 135 | i10: 136 | type: object 137 | properties: 138 | year: 139 | type: integer 140 | i100: 141 | type: object 142 | properties: 143 | year: 144 | type: integer 145 | m: 146 | type: object 147 | properties: 148 | year: 149 | type: number 150 | read10: 151 | type: object 152 | properties: 153 | year: 154 | type: number 155 | riq: 156 | type: object 157 | properties: 158 | year: 159 | type: integer 160 | tori: 161 | type: object 162 | properties: 163 | year: 164 | type: number 165 | '403': 166 | description: > 167 | Unable to get results 168 | '500': 169 | description: 170 | Metrics request blew up 171 | metrics-bibcode: 172 | get: 173 | summary: Retrieve metrics for one bibcode 174 | description: > 175 | Similar to the `/metrics` endpoint, but returns data for a single bibcode only. 176 | Does not return indicators or timeseries. 177 | parameters: 178 | - name: bibcode 179 | description: Bibcode to return metrics for 180 | required: true 181 | in: path 182 | schema: 183 | type: string 184 | tags: 185 | - metrics 186 | security: 187 | - ApiKeySecurity: [] 188 | responses: 189 | '200': 190 | description: > 191 | JSON containing the requested metrics 192 | content: 193 | application/json: 194 | schema: 195 | allOf: 196 | - $ref: '../schemas.yaml#/basicMetricsResponse' 197 | '403': 198 | description: > 199 | Unable to get results 200 | '500': 201 | description: 202 | Metrics request blew up 203 | metrics-detail: 204 | post: 205 | summary: Retrieve detail-level metrics for one or more bibcodes 206 | description: > 207 | Provides basic, year-by-year metrics on a per-bibcode basis. 208 | tags: 209 | - metrics 210 | security: 211 | - ApiKeySecurity: [] 212 | requestBody: 213 | description: JSON containing the bibcode(s) to produce metrics for. 214 | content: 215 | application/json: 216 | schema: 217 | $ref: '../schemas.yaml#/bibcodesObject' 218 | responses: 219 | '200': 220 | description: JSON containing the requested metrics 221 | content: 222 | application/json: 223 | schema: 224 | type: object 225 | properties: 226 | bibcode: 227 | type: object 228 | properties: 229 | citations: 230 | type: object 231 | properties: 232 | year: 233 | type: integer 234 | downloads: 235 | type: object 236 | properties: 237 | year: 238 | type: integer 239 | reads: 240 | type: object 241 | properties: 242 | year: 243 | type: integer 244 | ref_citations: 245 | type: object 246 | properties: 247 | year: 248 | type: integer 249 | skipped bibcodes: 250 | type: array 251 | items: 252 | type: string 253 | '403': 254 | description: > 255 | Unable to get results 256 | '500': 257 | description: 258 | Metrics request blew up 259 | -------------------------------------------------------------------------------- /openapi/services/reference.yaml: -------------------------------------------------------------------------------- 1 | reference-parse: 2 | post: 3 | summary: Parse one or more input reference strings 4 | description: > 5 | Given one or more reference strings (such as from the references section 6 | of a published paper), returns the parsed reference data. Multiple 7 | references should be passed as individual strings in a comma-delimited 8 | list. 9 | tags: 10 | - reference 11 | security: 12 | - ApiKeySecurity: [] 13 | requestBody: 14 | description: > 15 | JSON containing the input reference strings 16 | content: 17 | application/json: 18 | schema: 19 | type: object 20 | required: 21 | - reference 22 | properties: 23 | reference: 24 | type: array 25 | items: 26 | type: string 27 | example: {"reference":["Giraud et al., 1986, A&A, 170, 1"]} 28 | responses: 29 | '200': 30 | description: > 31 | JSON containing the parsed reference(s) 32 | content: 33 | application/json: 34 | schema: 35 | type: object 36 | properties: 37 | parsed: 38 | type: array 39 | items: 40 | type: object 41 | properties: 42 | authors: 43 | type: string 44 | year: 45 | type: string 46 | volume: 47 | type: string 48 | page: 49 | type: string 50 | journal: 51 | type: string 52 | refstr: 53 | description: Input reference string 54 | type: string 55 | example: {"parsed": [{"authors": "Giraud et al.", "year": "1986", "volume": "170", "page": "1", "journal": "A&A", "refstr": "Giraud et al., 1986, A&A, 170, 1"}]} 56 | '400': 57 | description: Bad request, check payload 58 | reference-pickle_crf: 59 | put: 60 | summary: (internal) Create new crf text model file 61 | description: > 62 | Endpoint to be called internally whwnever the models (either text 63 | or xml) have been changed, to create a new crf text model file. 64 | tags: 65 | - reference 66 | security: 67 | - ApiKeySecurity: [] 68 | responses: 69 | '200': 70 | description: New crf text matcher file created successfully 71 | reference-pickle_source_matcher: 72 | put: 73 | summary: (internal) Create new source matcher file 74 | description: > 75 | Endpoint to be called internally whenever the files of source 76 | matcher have been updated, to create a new source matcher file. 77 | tags: 78 | - reference 79 | security: 80 | - ApiKeySecurity: [] 81 | responses: 82 | '200': 83 | description: New source matcher file created successfully 84 | '400': 85 | description: Error creating new source matcher file 86 | reference-text: 87 | post: 88 | summary: Resolve one or more reference strings into a bibcode 89 | description: > 90 | Given one or more reference strings (such as from the references section 91 | of a published paper), returns the bibcode(s) of the matching paper(s). 92 | Multiple references should be passed as individual strings in a 93 | comma-delimited list. 94 | tags: 95 | - reference 96 | security: 97 | - ApiKeySecurity: [] 98 | requestBody: 99 | description: > 100 | JSON containing the input reference strings 101 | content: 102 | application/json: 103 | schema: 104 | type: object 105 | required: 106 | - reference 107 | properties: 108 | reference: 109 | type: array 110 | items: 111 | type: string 112 | example: {"reference":["Kravchenko et al. 2020, A&A 637, L6", "Blandford, R. D., & Znajek, R. L. 1977, MNRAS, 179, 433"]} 113 | responses: 114 | '200': 115 | description: > 116 | JSON containing the input reference, the matching bibcode, and the confidence score 117 | content: 118 | application/json: 119 | schema: 120 | type: object 121 | properties: 122 | resolved: 123 | type: object 124 | properties: 125 | bibcode: 126 | description: Output matching bibcode 127 | type: string 128 | refstring: 129 | description: Input reference string 130 | type: string 131 | score: 132 | description: Confidence score, ranging from 0 (low) to 1 (high) 133 | type: string 134 | comment: 135 | description: Error message if parsing fails 136 | type: string 137 | example: {'refstring': 'Kravchenko et al. 2020, A&A 637, L6', 'score': '1.0', 'bibcode': '2020A&A...637L...6K'} 138 | '400': 139 | description: Bad request, check payload 140 | reference-text-reference: 141 | get: 142 | summary: Resolve a reference string into a bibcode 143 | description: > 144 | Given a reference string (such as from the references section 145 | of a published paper), returns the bibcode of the matching paper. 146 | tags: 147 | - reference 148 | security: 149 | - ApiKeySecurity: [] 150 | parameters: 151 | - name: reference 152 | description: URL-encoded reference string 153 | required: true 154 | in: path 155 | schema: 156 | type: string 157 | example: "Kravchenko%20et%20al.%202020%2C%20A%26A%20637%2C%20L6" 158 | responses: 159 | '200': 160 | description: > 161 | JSON containing the input reference, the matching bibcode, and the confidence score 162 | content: 163 | application/json: 164 | schema: 165 | type: object 166 | properties: 167 | resolved: 168 | type: object 169 | properties: 170 | bibcode: 171 | description: Output matching bibcode 172 | type: string 173 | refstring: 174 | description: Input reference string 175 | type: string 176 | score: 177 | description: Confidence score, ranging from 0 (low) to 1 (high) 178 | type: string 179 | comment: 180 | description: Error message if parsing fails 181 | type: string 182 | example: {"resolved": {"refstring": "Kravchenko et al. 2020, A&A 637, L6", "score": "1.0", "bibcode": "2020A&A...637L...6K"}} 183 | reference-xml: 184 | post: 185 | summary: Resolve one or more parsed references into a bibcode 186 | description: > 187 | Given one or more parsed reference strings, returns the bibcode 188 | of the matching paper. 189 | tags: 190 | - reference 191 | security: 192 | - ApiKeySecurity: [] 193 | requestBody: 194 | description: > 195 | JSON containing the parsed input references. 196 | content: 197 | application/json: 198 | schema: 199 | type: object 200 | required: 201 | - parsed_reference 202 | properties: 203 | parsed_reference: 204 | type: array 205 | items: 206 | type: string 207 | description: > 208 | Parsed references, passed as serialized JSON. The following 209 | keywords are accepted (note that each value should be formatted 210 | as a string): 211 | 212 | * authors (value is formatted as "Last1, First1, Last2, First2") 213 | 214 | * journal 215 | 216 | * title 217 | 218 | * volume 219 | 220 | * issue 221 | 222 | * page 223 | 224 | * year 225 | 226 | * doi 227 | 228 | * arxiv 229 | 230 | * refstr (used for output only) 231 | 232 | * issn 233 | 234 | * refplaintext (if the parsed input fails, this is used for parsing) 235 | example: ["{'authors': 'Baumjohann, W., Haerendel, G.H.', 'journal': 'Geophysical Monograph', 'title': 'Physics of Magnetic Flux Ropes', 'volume': '58', 'page': '627', 'year': '1990', 'refstr': 'Baumjohann, W., Haerendel, G.H., 1990. Geophysical Monograph, Physics of Magnetic Flux Ropes, 58, 627.', 'refplaintext': 'Baumjohann, W., Haerendel, G.H., 1990. Geophysical Monograph, Physics of Magnetic Flux Ropes, 58, 627.'}"] 236 | responses: 237 | '200': 238 | description: > 239 | JSON containing the input reference, the matching bibcode, and the confidence score 240 | content: 241 | application/json: 242 | schema: 243 | type: object 244 | properties: 245 | resolved: 246 | type: object 247 | properties: 248 | bibcode: 249 | description: Output matching bibcode 250 | type: string 251 | refstring: 252 | description: Input reference string 253 | type: string 254 | score: 255 | description: Confidence score, ranging from 0 (low) to 1 (high) 256 | type: string 257 | comment: 258 | description: Error message if parsing fails 259 | type: string 260 | '400': 261 | description: Bad request, check payload 262 | -------------------------------------------------------------------------------- /openapi/services/oracle.yaml: -------------------------------------------------------------------------------- 1 | oracle-matchdoc: 2 | post: 3 | summary: Given some input metadata, return the matched bibcode 4 | description: > 5 | Matches input metadata to an existing record and returns the bibcode 6 | of the match. Can be used to find the bibcode of an input record or to 7 | match various versions of the same record (e.g. the published paper 8 | with its arXiv version). Also returned is the confidence score and 9 | which input metadata fields were used in the matching. 10 | tags: 11 | - recommender 12 | security: 13 | - ApiKeySecurity: [] 14 | requestBody: 15 | description: > 16 | JSON containing the input data for the recommender service 17 | content: 18 | application/json: 19 | schema: 20 | type: object 21 | required: 22 | - abstract 23 | - title 24 | - author 25 | - year 26 | - doctype 27 | properties: 28 | abstract: 29 | type: string 30 | title: 31 | type: string 32 | author: 33 | description: Format is "Last1, First1; Last2, First2; ..." 34 | type: string 35 | year: 36 | description: Type can be string or integer 37 | type: integer 38 | doctype: 39 | description: > 40 | Doctype of input metadata 41 | type: string 42 | doi: 43 | type: string 44 | mustmatch: 45 | description: > 46 | Set flag to true if you know ADS must have this paper; in some cases, 47 | the main matching algorithm may fail to find a match (e.g. if the 48 | abstract has changed significantly between the arXiv and published version). 49 | If this is the case, setting this flag to true allows a match to be made 50 | based on the title alone. 51 | type: boolean 52 | match_doctype: 53 | description: > 54 | Expected doctype of matched record 55 | type: array 56 | items: 57 | type: string 58 | example: {"abstract":"The nucleus of our nearest, large galactic neighbour, M31, contains an eccentric nuclear disc - a disc of stars on eccentric, apsidally aligned orbits around a supermassive black hole (SMBH). Previous studies of eccentric nuclear discs considered only an isolated disc, and did not study their dynamics under galaxy mergers (particularly a perturbing SMBH). Here, we present the first study of how eccentric discs are affected by a galactic merger. We perform N-body simulations to study the disc under a range of different possible SMBH initial conditions. A second SMBH in the disc always disrupts it, but more distant SMBHs can shut off differential precession and stabilize the disc. This results in a more aligned disc, nearly uniform eccentricity profile, and suppression of tidal disruption events compared to the isolated disc. We also discuss implications of our work for the presence of a secondary SMBH in M31.","title":"Galactic merger implications for eccentric nuclear discs: a mechanism for disc alignment","author":"Rodriguez, Alexander; Generozov, Aleksey; Madigan, Ann-Marie","year":2021,"doctype":"article","match_doctype":["article"],"mustmatch":false} 59 | responses: 60 | '200': 61 | description: > 62 | JSON containing any matches, plus information about the matching process. 63 | Confidence and scores range between 0 (low) and 1 (high). 64 | 65 | 66 | Note: If no matches are found, the service still returns a 200, but 67 | instead of the "match" keyword, the "no match" keyword will be returned 68 | in the JSON. 69 | content: 70 | application/json: 71 | schema: 72 | type: object 73 | properties: 74 | query: 75 | description: > 76 | Solr query used to find the matches 77 | type: string 78 | comment: 79 | description: > 80 | Logging from the matching algorithm 81 | type: string 82 | match: 83 | type: array 84 | items: 85 | type: object 86 | properties: 87 | bibcode: 88 | type: string 89 | confidence: 90 | type: integer 91 | scores: 92 | type: object 93 | properties: 94 | abstract: 95 | type: integer 96 | title: 97 | type: integer 98 | author: 99 | type: integer 100 | year: 101 | type: integer 102 | example: {"query": "topn(10, similar(\"The nucleus of our nearest, large galactic neighbour, M31, contains an eccentric nuclear disc - a disc of stars on eccentric, apsidally aligned orbits around a supermassive black hole (SMBH). Previous studies of eccentric nuclear discs considered only an isolated disc, and did not study their dynamics under galaxy mergers (particularly a perturbing SMBH). Here, we present the first study of how eccentric discs are affected by a galactic merger. We perform N-body simulations to study the disc under a range of different possible SMBH initial conditions. A second SMBH in the disc always disrupts it, but more distant SMBHs can shut off differential precession and stabilize the disc. This results in a more aligned disc, nearly uniform eccentricity profile, and suppression of tidal disruption events compared to the isolated disc. We also discuss implications of our work for the presence of a secondary SMBH in M31.\", input abstract, 43, 1, 1)) doctype:(article) property:REFEREED", "comment": "Matching doctype `article`.", "match": [{"bibcode": "2021MNRAS.503.2713R", "confidence": 1, "scores": {"abstract": 1.0, "title": 1.0, "author": 1, "year": 1}}]} 103 | '400': 104 | description: No payload provided, or payload is missing needed parameters 105 | oracle-readhist: 106 | post: 107 | summary: Return recommendations for the current user 108 | description: > 109 | Returns paper recommendations for the given user, based on their reading history. 110 | tags: 111 | - recommender 112 | security: 113 | - ApiKeySecurity: [] 114 | requestBody: 115 | description: > 116 | JSON containing the input data for the recommender service 117 | content: 118 | application/json: 119 | schema: 120 | type: object 121 | required: 122 | - function 123 | properties: 124 | function: 125 | description: > 126 | Second-order operator used to generate recommendations; default is 'similar' 127 | type: string 128 | enum: 129 | - similar 130 | - trending 131 | - reviews 132 | - useful 133 | sort: 134 | description: > 135 | Sort order for recommendation query 136 | type: string 137 | num_docs: 138 | description: > 139 | Number of recommendations to return 140 | type: integer 141 | top_n_reads: 142 | description: > 143 | Number of input records to use in generating recomendations 144 | type: integer 145 | cutoff_days: 146 | description: > 147 | Number of days back to generate recommendations; returned recommendations 148 | will have been entered into our database between now and N days ago, where N 149 | is the entered cutoff_days 150 | type: integer 151 | reader: 152 | description: > 153 | Internal ID specifying the user; if not included, user will be 154 | determined via the API token used 155 | type: string 156 | responses: 157 | '200': 158 | description: > 159 | JSON containing the returned recommendations and the query used to generate them 160 | content: 161 | application/json: 162 | schema: 163 | type: object 164 | properties: 165 | bibcodes: 166 | type: string 167 | query: 168 | type: string 169 | '400': 170 | description: No payload provided, or payload is missing needed parameters 171 | oracle-readhist-reader: 172 | get: 173 | summary: Return recommendations for the given user 174 | description: > 175 | Returns paper recommendations for the given user, based on their reading history. 176 | tags: 177 | - recommender 178 | security: 179 | - ApiKeySecurity: [] 180 | parameters: 181 | - name: function 182 | description: > 183 | Second-order operator used to generate recommendations; most common is 'similar' 184 | required: true 185 | in: path 186 | schema: 187 | type: string 188 | - name: reader 189 | description: > 190 | Internal ID specifying the user to generate recommendations for 191 | required: true 192 | in: path 193 | schema: 194 | type: string 195 | responses: 196 | '200': 197 | description: > 198 | JSON containing the returned recommendations and the query used to generate them 199 | content: 200 | application/json: 201 | schema: 202 | type: object 203 | properties: 204 | bibcodes: 205 | type: string 206 | query: 207 | type: string 208 | '400': 209 | description: Reader was not provided 210 | -------------------------------------------------------------------------------- /openapi/services/harbour.yaml: -------------------------------------------------------------------------------- 1 | harbour-auth-classic: 2 | post: 3 | summary: Sign into ADS Classic account 4 | description: > 5 | Sign into ADS Classic account and link it to your main ADS account 6 | tags: 7 | - classic import 8 | security: 9 | - ApiKeySecurity: [] 10 | requestBody: 11 | description: JSON containing the user's Classic ADS authentication 12 | content: 13 | application/json: 14 | schema: 15 | type: object 16 | required: 17 | - classic_email 18 | - classic_mirror 19 | - classic_password 20 | properties: 21 | classic_email: 22 | type: string 23 | classic_mirror: 24 | type: string 25 | classic_password: 26 | type: string 27 | responses: 28 | '200': 29 | description: > 30 | JSON containing user's stored Classic information. 31 | content: 32 | application/json: 33 | schema: 34 | type: object 35 | properties: 36 | classic_email: 37 | type: string 38 | classic_mirror: 39 | type: string 40 | classic_authed: 41 | type: boolean 42 | '400': 43 | description: Malformed payload; see error message for details 44 | '404': 45 | description: Classic authentication failed 46 | '500': 47 | description: Classic did not return a cookie 48 | '504': 49 | description: Classic timeout 50 | harbour-auth-twopointoh: 51 | post: 52 | summary: (retired) Authenticate user in ADS 2.0 53 | description: > 54 | (retired) Audenticate user's ADS 2.0 credentials with the 55 | external ADS Classic endpoint 56 | tags: 57 | - classic import 58 | security: 59 | - ApiKeySecurity: [] 60 | requestBody: 61 | content: 62 | application/json: 63 | schema: 64 | type: object 65 | properties: 66 | twopointoh_email: 67 | type: string 68 | twopointoh_password: 69 | type: string 70 | responses: 71 | '200': 72 | description: User info 73 | content: 74 | application/json: 75 | schema: 76 | type: object 77 | properties: 78 | twopointoh_authed: 79 | type: boolean 80 | twopointoh_email: 81 | type: string 82 | '400': 83 | description: Malformed request 84 | '404': 85 | description: Unknown user; incorrect password; failed authentication 86 | '500': 87 | description: Unknown error 88 | '504': 89 | description: Timeout 90 | harbour-export-twopointoh: 91 | get: 92 | summary: (retired) Export ADS 2.0 libraries 93 | description: > 94 | (retired) Return ADS 2.0 libraries in a format users can use to 95 | import them to other services. The following third-party services 96 | are supported: Zotero, Papers, Mendeley. 97 | tags: 98 | - classic import 99 | security: 100 | - ApiKeySecurity: [] 101 | parameters: 102 | - $ref: '../parameters.yaml#/export' 103 | responses: 104 | '200': 105 | description: URL to file import 106 | content: 107 | application/json: 108 | schema: 109 | type: object 110 | properties: 111 | url: 112 | type: string 113 | '400': 114 | description: Missing user account; user has no libraries 115 | '500': 116 | description: Unknown error 117 | harbour-libraries-classic: 118 | get: 119 | summary: (deprecated) Fetch ADS Classic libraries 120 | description: > 121 | (deprecated) Collect user's ADS Classic libraries and return 122 | them as a JSON. 123 | tags: 124 | - classic import 125 | security: 126 | - ApiKeySecurity: [] 127 | parameters: 128 | - $ref: '../parameters.yaml#/user_id' 129 | responses: 130 | '200': 131 | description: JSON of user's Classic libraries 132 | content: 133 | application/json: 134 | schema: 135 | type: array 136 | items: 137 | type: object 138 | properties: 139 | name: 140 | type: string 141 | description: 142 | type: string 143 | documents: 144 | type: array 145 | items: 146 | type: string 147 | '400': 148 | description: Missing user account 149 | '500': 150 | description: Unknown error 151 | '504': 152 | description: Classic timeout 153 | harbour-libraries-twopointoh: 154 | get: 155 | summary: (retired) Fetch ADS 2.0 libraries 156 | description: > 157 | (retired) Collect user's ADS 2.0 libraries and return as a JSON. 158 | tags: 159 | - classic import 160 | security: 161 | - ApiKeySecurity: [] 162 | parameters: 163 | - $ref: '../parameters.yaml#/user_id' 164 | responses: 165 | '200': 166 | description: JSON of user's ADS 2.0 libraries 167 | content: 168 | application/json: 169 | schema: 170 | type: array 171 | items: 172 | type: object 173 | properties: 174 | name: 175 | type: string 176 | description: 177 | type: string 178 | documents: 179 | type: array 180 | items: 181 | type: string 182 | '400': 183 | description: Missing user account; user has no libraries 184 | '500': 185 | description: Unknown error 186 | harbour-mirrors: 187 | get: 188 | summary: Fetch a list of ADS Classic mirrors 189 | description: > 190 | Returns the list of mirrors used by ADS Classic 191 | tags: 192 | - classic import 193 | security: 194 | - ApiKeySecurity: [] 195 | responses: 196 | '200': 197 | description: Array of available mirrors 198 | content: 199 | application/json: 200 | schema: 201 | type: array 202 | items: 203 | type: string 204 | harbour-myads-classic: 205 | get: 206 | summary: (internal) Fetch ADS Classic myADS setup 207 | description: > 208 | Collect user's ADS Classic myADS setups for use by the importing 209 | endpoint. 210 | tags: 211 | - classic import 212 | security: 213 | - ApiKeySecurity: [] 214 | parameters: 215 | - $ref: '../parameters.yaml#/user_id' 216 | responses: 217 | '200': 218 | description: User's Classic myADS setups 219 | content: 220 | application/json: 221 | schema: 222 | type: array 223 | items: 224 | type: object 225 | properties: 226 | id: 227 | description: User ID 228 | type: integer 229 | email: 230 | description: User email 231 | type: string 232 | firstname: 233 | description: User first name 234 | type: string 235 | lastname: 236 | description: User last name 237 | type: string 238 | daily_t1: 239 | description: keywords 1 (daily arXiv) 240 | type: string 241 | groups: 242 | description: arXiv classes (daily) 243 | type: array 244 | items: 245 | type: string 246 | phy_t1: 247 | description: keywords 1 (physics) 248 | type: string 249 | phy_t2: 250 | description: keywords 2 (physics) 251 | type: string 252 | phy_aut: 253 | description: authors (physics) 254 | type: string 255 | pre_t1: 256 | description: keywords 1 (weekly arXiv) 257 | type: string 258 | pre_t2: 259 | description: keywords 2 (weekly arXiv) 260 | type: string 261 | pre_aut: 262 | description: authors (weekly arXiv) 263 | type: string 264 | ast_t1: 265 | description: keywords 1 (astronomy) 266 | type: string 267 | ast_t2: 268 | description: keywords 2 (astronomy) 269 | type: string 270 | ast_aut: 271 | description: authors (astronomy) 272 | type: string 273 | disabled: 274 | description: Categories for which emails are disabled 275 | type: array 276 | items: 277 | type: string 278 | '400': 279 | description: Missing user account 280 | '500': 281 | description: Unknown error 282 | '504': 283 | description: Classic timeout 284 | harbour-user: 285 | get: 286 | summary: Fetch user's ADS Classic information 287 | description: > 288 | Returns a user's ADS Classic registration email and mirror 289 | tags: 290 | - classic import 291 | security: 292 | - ApiKeySecurity: [] 293 | responses: 294 | '200': 295 | description: > 296 | JSON containing user's Classic information. User is determined 297 | by the API token used. 298 | content: 299 | application/json: 300 | schema: 301 | type: object 302 | properties: 303 | classic_email: 304 | type: string 305 | classic_mirror: 306 | type: string 307 | twopointoh_email: 308 | type: string 309 | '400': 310 | description: User does not have an ADS Classic account 311 | -------------------------------------------------------------------------------- /openapi/services/vis.yaml: -------------------------------------------------------------------------------- 1 | vis-author-network: 2 | post: 3 | summary: Returns author network data 4 | description: > 5 | Used to generate our author network visualization, given an input set of bibcodes, 6 | returns the author network data 7 | tags: 8 | - visualizations 9 | security: 10 | - ApiKeySecurity: [] 11 | requestBody: 12 | description: > 13 | JSON containing the input bibcodes 14 | content: 15 | application/json: 16 | schema: 17 | $ref: '../schemas.yaml#/bibcodesObject' 18 | responses: 19 | '200': 20 | description: Author network data 21 | content: 22 | application/json: 23 | schema: 24 | type: object 25 | properties: 26 | msg: 27 | type: object 28 | properties: 29 | start: 30 | type: integer 31 | rows: 32 | type: integer 33 | numFound: 34 | type: integer 35 | data: 36 | type: object 37 | properties: 38 | bibcode_dict: 39 | type: object 40 | properties: 41 | bibcode: 42 | type: object 43 | properties: 44 | read_count: 45 | type: integer 46 | authors: 47 | type: array 48 | items: 49 | type: string 50 | citation_count: 51 | type: integer 52 | title: 53 | type: string 54 | root: 55 | type: object 56 | properties: 57 | name: 58 | type: array 59 | items: 60 | type: object 61 | properties: 62 | nodeName: 63 | type: string 64 | nodeWeight: 65 | type: integer 66 | delete: 67 | type: boolean 68 | children: 69 | type: array 70 | items: 71 | type: object 72 | properties: 73 | read_count: 74 | type: integer 75 | name: 76 | type: string 77 | citation_count: 78 | type: integer 79 | numberName: 80 | type: integer 81 | papers: 82 | type: array 83 | items: 84 | type: string 85 | size: 86 | type: number 87 | link_data: 88 | type: array 89 | items: 90 | type: array 91 | items: 92 | type: integer 93 | '403': 94 | description: Error with request 95 | vis-paper-network: 96 | post: 97 | summary: Returns paper network data 98 | description: > 99 | Used to generate our paper network visualization, given an input set of bibcodes, 100 | returns the paper network data 101 | tags: 102 | - visualizations 103 | security: 104 | - ApiKeySecurity: [] 105 | requestBody: 106 | description: > 107 | JSON containing the input bibcodes 108 | content: 109 | application/json: 110 | schema: 111 | $ref: '../schemas.yaml#/bibcodesObject' 112 | responses: 113 | '200': 114 | description: Paper network data 115 | content: 116 | application/json: 117 | schema: 118 | type: object 119 | properties: 120 | msg: 121 | type: object 122 | properties: 123 | start: 124 | type: integer 125 | rows: 126 | type: integer 127 | numFound: 128 | type: integer 129 | data: 130 | type: object 131 | properties: 132 | summaryGraph: 133 | type: object 134 | properties: 135 | directed: 136 | type: boolean 137 | graph: 138 | type: array 139 | default: [] 140 | items: 141 | type: integer 142 | nodes: 143 | type: array 144 | items: 145 | type: object 146 | properties: 147 | paper_count: 148 | type: integer 149 | node_label: 150 | type: object 151 | properties: 152 | label: 153 | type: number 154 | total_citations: 155 | type: integer 156 | node_name: 157 | type: integer 158 | top_common_references: 159 | type: object 160 | properties: 161 | bibcode: 162 | type: number 163 | total_reads: 164 | type: integer 165 | stable_index: 166 | type: integer 167 | id: 168 | type: integer 169 | links: 170 | type: array 171 | items: 172 | type: object 173 | properties: 174 | source: 175 | type: integer 176 | target: 177 | type: integer 178 | weight: 179 | type: integer 180 | multigraph: 181 | type: boolean 182 | fullGraph: 183 | type: object 184 | properties: 185 | directed: 186 | type: boolean 187 | graph: 188 | type: array 189 | default: [] 190 | items: 191 | type: integer 192 | nodes: 193 | type: array 194 | items: 195 | type: object 196 | properties: 197 | read_count: 198 | type: integer 199 | group: 200 | type: integer 201 | title: 202 | type: string 203 | first_author: 204 | type: string 205 | citation_count: 206 | type: integer 207 | node_name: 208 | type: string 209 | id: 210 | type: integer 211 | nodeWeight: 212 | type: integer 213 | links: 214 | type: array 215 | items: 216 | type: object 217 | properties: 218 | source: 219 | type: integer 220 | overlap: 221 | type: array 222 | items: 223 | type: string 224 | weight: 225 | type: integer 226 | target: 227 | type: integer 228 | '403': 229 | description: Error with request 230 | vis-word-cloud: 231 | post: 232 | summary: Returns the word cloud data 233 | description: > 234 | Used to generate our word/concept cloud visualization, given an input query, 235 | returns the word cloud data 236 | tags: 237 | - visualizations 238 | security: 239 | - ApiKeySecurity: [] 240 | requestBody: 241 | description: > 242 | JSON containing the input query 243 | content: 244 | application/json: 245 | schema: 246 | type: object 247 | properties: 248 | q: 249 | description: > 250 | Query string; can include search tags. If using 251 | quotes, make sure to escape them. 252 | type: array 253 | items: 254 | type: string 255 | example: ["author:\"huchra, john\""] 256 | sort: 257 | type: array 258 | items: 259 | type: string 260 | example: ["date desc, bibcode desc"] 261 | rows: 262 | description: > 263 | Number of records to use in generating the word cloud; 264 | currently the maximum allowed is 500. 265 | type: array 266 | items: 267 | type: integer 268 | example: [150] 269 | responses: 270 | '200': 271 | description: Word cloud data 272 | content: 273 | application/json: 274 | schema: 275 | type: object 276 | properties: 277 | word: 278 | description: Keywords are the words in the cloud 279 | type: object 280 | properties: 281 | idf: 282 | description: Inverse document frequency 283 | type: number 284 | record_count: 285 | type: integer 286 | total_occurrences: 287 | type: integer 288 | '403': 289 | description: Error with request 290 | -------------------------------------------------------------------------------- /openapi/openapi_public.yaml: -------------------------------------------------------------------------------- 1 | openapi: 3.0.3 2 | info: 3 | title: API for Astrophysics Data System (ADS) 4 | description: | 5 | ## API for the NASA Astrophysics Data System 6 | 7 | The source code for the project can be found at https://github.com/adsabs. 8 | 9 | Individual components: 10 | * Search: https://github.com/adsabs/solr-service 11 | * Stored search: https://github.com/adsabs/vault 12 | * Libraries: https://github.com/adsabs/biblib-service 13 | * Export: https://github.com/adsabs/export_service 14 | * Metrics: https://github.com/adsabs/metrics_service 15 | * Author affiliation: https://github.com/adsabs/author_affiliation_service 16 | * Citation helper: https://github.com/adsabs/citation_helper_service 17 | * Classic import: https://github.com/adsabs/harbour-service 18 | * Objects: https://github.com/adsabs/object_service 19 | * Journals: https://github.com/adsabs/ADSJournalsDB 20 | * Recommender: https://github.com/adsabs/oracle_service 21 | * Reference: https://github.com/adsabs/reference_service 22 | * Resolver: https://github.com/adsabs/resolver_service 23 | * Notifications: https://github.com/adsabs/vault 24 | * Visualizations: https://github.com/adsabs/vis-services 25 | 26 | This documentation follows the [OpenAPI specification](https://swagger.io/specification/). 27 | The UI was created with [RapiDoc](https://mrin9.github.io/RapiDoc/index.html). 28 | termsOfService: https://ui.adsabs.harvard.edu/help/terms/ 29 | contact: 30 | name: ADS Help 31 | url: https://github.com/adsabs/adsabs-dev-api 32 | email: adshelp@cfa.harvard.edu 33 | version: 1.0.0 34 | servers: 35 | - url: https://api.adsabs.harvard.edu/{basePath} 36 | description: Production Server 37 | variables: 38 | basePath: 39 | default: v1 40 | enum: 41 | - v1 42 | - url: https://devapi.adsabs.harvard.edu/{basePath} 43 | description: Development Server 44 | variables: 45 | basePath: 46 | default: v1 47 | enum: 48 | - v1 49 | tags: 50 | - name: search 51 | - name: stored search 52 | - name: libraries 53 | - name: export (tagged formats) 54 | - name: export (LaTeX formats) 55 | - name: export (XML formats) 56 | - name: export (other) 57 | - name: metrics 58 | - name: author affiliation 59 | - name: citation helper 60 | - name: classic import 61 | - name: objects 62 | - name: journals 63 | - name: recommender 64 | - name: reference 65 | - name: resolver 66 | - name: notifications 67 | - name: visualizations 68 | components: 69 | securitySchemes: 70 | ApiKeySecurity: 71 | type: http 72 | scheme: bearer 73 | bearerFormat: JWT 74 | parameters: 75 | q: 76 | $ref: 'parameters.yaml#/q' 77 | rows: 78 | $ref: 'parameters.yaml#/rows' 79 | fq: 80 | $ref: 'parameters.yaml#/fq' 81 | fl: 82 | $ref: 'parameters.yaml#/fl' 83 | start: 84 | $ref: 'parameters.yaml#/start' 85 | sort: 86 | $ref: 'parameters.yaml#/sort' 87 | bibcode: 88 | $ref: 'parameters.yaml#/bibcode' 89 | link: 90 | $ref: 'parameters.yaml#/link' 91 | queryId: 92 | $ref: 'parameters.yaml#/queryId' 93 | myadsId: 94 | $ref: 'parameters.yaml#/myadsId' 95 | responses: 96 | QTree: 97 | $ref: 'responses.yaml#/QTree' 98 | SearchResults: 99 | $ref: 'responses.yaml#/SearchResults' 100 | VaultResponse: 101 | $ref: 'responses.yaml#/VaultResponse' 102 | ExportResponse: 103 | $ref: 'responses.yaml#/ExportResponse' 104 | ExportResponseGet: 105 | $ref: 'responses.yaml#/ExportResponseGet' 106 | ResolverResponse: 107 | $ref: 'responses.yaml#/ResolverResponse' 108 | schemas: 109 | qtree: 110 | $ref: 'schemas.yaml#/qtree' 111 | results: 112 | $ref: 'schemas.yaml#/results' 113 | doc: 114 | $ref: 'schemas.yaml#/doc' 115 | responseHeader: 116 | $ref: 'schemas.yaml#/responseHeader' 117 | vaultObject: 118 | $ref: 'schemas.yaml#/vaultObject' 119 | basicMetricsResponse: 120 | $ref: 'schemas.yaml#/basicMetricsResponse' 121 | myADSsummaryResponse: 122 | $ref: 'schemas.yaml#/myADSsummaryResponse' 123 | myADSdetailResponse: 124 | $ref: 'schemas.yaml#/myADSdetailResponse' 125 | bibcodeObject: 126 | $ref: 'schemas.yaml#/bibcodeObject' 127 | bibcodesObject: 128 | $ref: 'schemas.yaml#/bibcodesObject' 129 | libraryMetadata: 130 | $ref: 'schemas.yaml#/libraryMetadata' 131 | requestBodies: 132 | exportBody: 133 | $ref: 'requestBodies.yaml#/exportBody' 134 | security: 135 | - ApiKeySecurity: [] 136 | paths: 137 | /search/query: 138 | $ref: 'services/solr.yaml#/search-query' 139 | /search/qtree: 140 | $ref: 'services/solr.yaml#/search-qtree' 141 | /search/bigquery: 142 | $ref: 'services/solr.yaml#/search-bigquery' 143 | /vault/query: 144 | $ref: 'services/vault.yaml#/vault-query' 145 | /vault/query/{queryId}: 146 | $ref: 'services/vault.yaml#/vault-query-queryId' 147 | /vault/execute_query/{queryId}: 148 | $ref: 'services/vault.yaml#/vault-execute_query' 149 | /vault/query2svg/{queryId}: 150 | $ref: 'services/vault.yaml#/vault-query2svg' 151 | /biblib/libraries: 152 | $ref: 'services/biblib.yaml#/biblib-libraries' 153 | /biblib/libraries/{library_id}: 154 | $ref: 'services/biblib.yaml#/biblib-libraries-library_id' 155 | /biblib/libraries/operations/{library_id}: 156 | $ref: 'services/biblib.yaml#/biblib-libraries-operations' 157 | /biblib/documents/{library_id}: 158 | $ref: 'services/biblib.yaml#/biblib-documents' 159 | /biblib/notes/{library_id}/{document_id}: 160 | $ref: 'services/biblib.yaml#/biblib-notes' 161 | /biblib/query/{library_id}: 162 | $ref: 'services/biblib.yaml#/biblib-query' 163 | /biblib/permissions/{library_id}: 164 | $ref: 'services/biblib.yaml#/biblib-permissions' 165 | /biblib/transfer/{library_id}: 166 | $ref: 'services/biblib.yaml#/biblib-transfer' 167 | /export/bibtexabs/{bibcode}: 168 | $ref: 'services/export.yaml#/export-bibtexabs-get' 169 | /export/bibtexabs: 170 | $ref: 'services/export.yaml#/export-bibtexabs' 171 | /export/bibtex/{bibcode}: 172 | $ref: 'services/export.yaml#/export-bibtex-get' 173 | /export/bibtex: 174 | $ref: 'services/export.yaml#/export-bibtex' 175 | /export/ads/{bibcode}: 176 | $ref: 'services/export.yaml#/export-ads-get' 177 | /export/ads: 178 | $ref: 'services/export.yaml#/export-ads' 179 | /export/endnote/{bibcode}: 180 | $ref: 'services/export.yaml#/export-endnote-get' 181 | /export/endnote: 182 | $ref: 'services/export.yaml#/export-endnote' 183 | /export/procite/{bibcode}: 184 | $ref: 'services/export.yaml#/export-procite-get' 185 | /export/procite: 186 | $ref: 'services/export.yaml#/export-procite' 187 | /export/ris/{bibcode}: 188 | $ref: 'services/export.yaml#/export-ris-get' 189 | /export/ris: 190 | $ref: 'services/export.yaml#/export-ris' 191 | /export/refworks/{bibcode}: 192 | $ref: 'services/export.yaml#/export-refworks-get' 193 | /export/refworks: 194 | $ref: 'services/export.yaml#/export-refworks' 195 | /export/medlars/{bibcode}: 196 | $ref: 'services/export.yaml#/export-medlars-get' 197 | /export/medlars: 198 | $ref: 'services/export.yaml#/export-medlars' 199 | /export/aastex/{bibcode}: 200 | $ref: 'services/export.yaml#/export-aastex-get' 201 | /export/aastex: 202 | $ref: 'services/export.yaml#/export-aastex' 203 | /export/icarus/{bibcode}: 204 | $ref: 'services/export.yaml#/export-icarus-get' 205 | /export/icarus: 206 | $ref: 'services/export.yaml#/export-icarus' 207 | /export/mnras/{bibcode}: 208 | $ref: 'services/export.yaml#/export-mnras-get' 209 | /export/mnras: 210 | $ref: 'services/export.yaml#/export-mnras' 211 | /export/soph/{bibcode}: 212 | $ref: 'services/export.yaml#/export-soph-get' 213 | /export/soph: 214 | $ref: 'services/export.yaml#/export-soph' 215 | /export/dcxml/{bibcode}: 216 | $ref: 'services/export.yaml#/export-dcxml-get' 217 | /export/dcxml: 218 | $ref: 'services/export.yaml#/export-dcxml' 219 | /export/refxml/{bibcode}: 220 | $ref: 'services/export.yaml#/export-refxml-get' 221 | /export/refxml: 222 | $ref: 'services/export.yaml#/export-refxml' 223 | /export/refabsxml/{bibcode}: 224 | $ref: 'services/export.yaml#/export-refabsxml-get' 225 | /export/refabsxml: 226 | $ref: 'services/export.yaml#/export-refabsxml' 227 | /export/votable/{bibcode}: 228 | $ref: 'services/export.yaml#/export-votable-get' 229 | /export/votable: 230 | $ref: 'services/export.yaml#/export-votable' 231 | /export/rss/{bibcode}: 232 | $ref: 'services/export.yaml#/export-rss-get' 233 | /export/rss: 234 | $ref: 'services/export.yaml#/export-rss' 235 | /export/rss/{bibcode}/{link}: 236 | $ref: 'services/export.yaml#/export-rss-link' 237 | /export/ieee/{bibcode}: 238 | $ref: 'services/export.yaml#/export-ieee-get' 239 | /export/ieee: 240 | $ref: 'services/export.yaml#/export-ieee' 241 | /export/csl: 242 | $ref: 'services/export.yaml#/export-csl' 243 | /export/custom: 244 | $ref: 'services/export.yaml#/export-custom' 245 | /metrics: 246 | $ref: 'services/metrics.yaml#/metrics' 247 | /metrics/{bibcode}: 248 | $ref: 'services/metrics.yaml#/metrics-bibcode' 249 | /metrics/detail: 250 | $ref: 'services/metrics.yaml#/metrics-detail' 251 | /author-affiliation/search: 252 | $ref: 'services/author-affiliation.yaml#/author-affiliation-search' 253 | /author-affiliation/export: 254 | $ref: 'services/author-affiliation.yaml#/author-affiliation-export' 255 | /citation_helper: 256 | $ref: 'services/citation_helper.yaml#/citation_helper' 257 | /harbour/mirrors: 258 | $ref: 'services/harbour.yaml#/harbour-mirrors' 259 | /harbour/user: 260 | $ref: 'services/harbour.yaml#/harbour-user' 261 | /harbour/auth/classic: 262 | $ref: 'services/harbour.yaml#/harbour-auth-classic' 263 | /objects: 264 | $ref: 'services/objects.yaml#/objects' 265 | /objects/query: 266 | $ref: 'services/objects.yaml#/objects-query' 267 | /journals/summary/{bibstem}: 268 | $ref: 'services/journals.yaml#/summary' 269 | /journals/journal/{journalname}: 270 | $ref: 'services/journals.yaml#/journal' 271 | /journals/holdings/{bibstem}/{volume}: 272 | $ref: 'services/journals.yaml#/holdings' 273 | /journals/refsource/{bibstem}: 274 | $ref: 'services/journals.yaml#/refsource' 275 | /journals/issn/{issn}: 276 | $ref: 'services/journals.yaml#/issn' 277 | /journals/browse/{bibstem}: 278 | $ref: 'services/journals.yaml#/browse' 279 | /oracle/matchdoc: 280 | $ref: 'services/oracle.yaml#/oracle-matchdoc' 281 | /oracle/readhist: 282 | $ref: 'services/oracle.yaml#/oracle-readhist' 283 | /oracle/readhist/{function}/{reader}: 284 | $ref: 'services/oracle.yaml#/oracle-readhist-reader' 285 | /reference/text/{reference}: 286 | $ref: 'services/reference.yaml#/reference-text-reference' 287 | /reference/text: 288 | $ref: 'services/reference.yaml#/reference-text' 289 | /reference/xml: 290 | $ref: 'services/reference.yaml#/reference-xml' 291 | /reference/parse: 292 | $ref: 'services/reference.yaml#/reference-parse' 293 | /resolver/{bibcode}: 294 | $ref: 'services/resolver.yaml#/resolver-bibcode' 295 | /resolver/{bibcode}/{link_type}: 296 | $ref: 'services/resolver.yaml#/resolver-bibcode-link_type' 297 | /vault/notifications: 298 | $ref: 'services/vault.yaml#/vault-notifications' 299 | /vault/notifications/{myads_id}: 300 | $ref: 'services/vault.yaml#/vault-notifications-myads_id' 301 | /vault/notification_query/{myads_id}: 302 | $ref: 'services/vault.yaml#/vault-notification_query' 303 | /vis/author-network: 304 | $ref: 'services/vis.yaml#/vis-author-network' 305 | /vis/paper-network: 306 | $ref: 'services/vis.yaml#/vis-paper-network' 307 | /vis/word-cloud: 308 | $ref: 'services/vis.yaml#/vis-word-cloud' 309 | externalDocs: 310 | description: Complete documentation describing how to use this API 311 | url: https://github.com/adsabs/adsabs-dev-api 312 | -------------------------------------------------------------------------------- /openapi/services/orcid.yaml: -------------------------------------------------------------------------------- 1 | orcid-exchangeOAuthCode: 2 | get: 3 | summary: (internal) OAuth exchange with ORCID 4 | description: OAuth token exchange with external ORCID Api 5 | tags: 6 | - orcid 7 | security: 8 | - ApiKeySecurity: [] 9 | parameters: 10 | - $ref: '../parameters.yaml#/code' 11 | responses: 12 | '200': 13 | description: Exchange complete, login successful 14 | '502': 15 | description: Connection error with ORCID API 16 | orcid-export: 17 | get: 18 | summary: (pipeline) Get all ORCID users updated after a certain point 19 | description: > 20 | Get all internal ORCID users whose profiles have been updated after a 21 | certain date/time. For ORCID pipeline use. 22 | tags: 23 | - orcid 24 | security: 25 | - ApiKeySecurity: [] 26 | parameters: 27 | - $ref: '../parameters.yaml#/iso_datestring' 28 | responses: 29 | '200': 30 | description: Recently updated ORCID users 31 | content: 32 | application/json: 33 | schema: 34 | type: array 35 | items: 36 | type: object 37 | properties: 38 | orcid_id: 39 | type: string 40 | created: 41 | type: string 42 | updated: 43 | type: string 44 | profile: 45 | type: string 46 | orcid-get-profile: 47 | get: 48 | summary: (pipeline) Fetch the latest profile from the ORCID API 49 | description: > 50 | For a given user, fetch the latest profile from the ORCID API. For 51 | ORCID pipeline use. 52 | tags: 53 | - orcid 54 | security: 55 | - ApiKeySecurity: [] 56 | parameters: 57 | - $ref: '../parameters.yaml#/orcidId' 58 | responses: 59 | '200': 60 | description: ORCID user profile 61 | content: 62 | application/json: 63 | schema: 64 | type: object 65 | properties: 66 | orcid_id: 67 | type: string 68 | access_token: 69 | type: string 70 | created: 71 | type: string 72 | updated: 73 | type: string 74 | profile: 75 | description: Fresh profile from ORCID API, serialized JSON 76 | type: string 77 | info: 78 | type: string 79 | orcid-orcidId-orcid-profile: 80 | get: 81 | summary: (retired) Get user profile from ORCID API 82 | description: > 83 | (retired) Get user profile from ORCID API and save to local storage. 84 | tags: 85 | - orcid 86 | security: 87 | - ApiKeySecurity: [] 88 | parameters: 89 | - $ref: '../parameters.yaml#/orcidId' 90 | - $ref: '../parameters.yaml#/OrcidAuthorization' 91 | responses: 92 | '200': 93 | description: JSON profile from ORCID API 94 | post: 95 | summary: (retired) Set user profile in ORCID API 96 | description: > 97 | (retired) Set user profile in ORCID API and save to local storage. 98 | tags: 99 | - orcid 100 | security: 101 | - ApiKeySecurity: [] 102 | parameters: 103 | - $ref: '../parameters.yaml#/orcidId' 104 | - $ref: '../parameters.yaml#/OrcidAuthorization' 105 | responses: 106 | '200': 107 | description: JSON profile from ORCID API 108 | orcid-orcidId-orcid-profile-type: 109 | get: 110 | summary: (internal) Get user profile from ORCID API 111 | description: > 112 | Get user profile from ORCID API. Update in local storage if requested. 113 | Return either an abridged or full version of the profile, depending 114 | on requested type. 115 | tags: 116 | - orcid 117 | security: 118 | - ApiKeySecurity: [] 119 | parameters: 120 | - $ref: '../parameters.yaml#/orcidId' 121 | - name: type 122 | description: > 123 | 'Simple' to return bibcodes and statuses only; 'full' to return 124 | full profile 125 | required: true 126 | in: path 127 | schema: 128 | type: string 129 | enum: 130 | - simple 131 | - full 132 | - name: update 133 | description: Set to True to update local storage 134 | required: false 135 | in: query 136 | schema: 137 | type: boolean 138 | - $ref: '../parameters.yaml#/OrcidAuthorization' 139 | responses: 140 | '200': 141 | description: > 142 | If type=simple, an object is still returned but containing 143 | only the bibcodes + statuses. The full response is returned 144 | if type=full. 145 | content: 146 | application/json: 147 | schema: 148 | type: object 149 | properties: 150 | identifier: 151 | type: string 152 | pubmonth: 153 | type: string 154 | pubyear: 155 | type: string 156 | putcode: 157 | type: integer 158 | source: 159 | type: array 160 | items: 161 | type: string 162 | status: 163 | type: string 164 | title: 165 | type: string 166 | updated: 167 | type: string 168 | '404': 169 | description: Wrong type passed, no profile found for ORCID ID 170 | '502': 171 | description: Connection error with ORCID API 172 | orcid-orcidId-orcid-work: 173 | post: 174 | summary: (internal) Add a work to the user's ORCID profile 175 | description: > 176 | Add a single work to the user's ORCID profile using the ORCID API 177 | tags: 178 | - orcid 179 | security: 180 | - ApiKeySecurity: [] 181 | parameters: 182 | - $ref: '../parameters.yaml#/orcidId' 183 | - $ref: '../parameters.yaml#/OrcidAuthorization' 184 | requestBody: 185 | content: 186 | application/json: 187 | schema: 188 | $ref: '../schemas.yaml#/orcid-work-to' 189 | responses: 190 | '200': 191 | description: ORCID work metadata 192 | content: 193 | application/json: 194 | schema: 195 | $ref: '../schemas.yaml#/orcid-work-from' 196 | orcid-orcidId-orcid-works: 197 | post: 198 | summary: (internal) Bulk add multiple works to the user's ORCID profile 199 | description: Bulk add one or more works to the user's ORCID profile 200 | tags: 201 | - orcid 202 | security: 203 | - ApiKeySecurity: [] 204 | parameters: 205 | - $ref: '../parameters.yaml#/orcidId' 206 | - $ref: '../parameters.yaml#/OrcidAuthorization' 207 | requestBody: 208 | content: 209 | application/json: 210 | schema: 211 | type: array 212 | items: 213 | $ref: '../schemas.yaml#/orcid-work-to' 214 | responses: 215 | '200': 216 | description: ORCID work metadata 217 | content: 218 | application/json: 219 | schema: 220 | type: array 221 | items: 222 | $ref: '../schemas.yaml#/orcid-work-from' 223 | orcid-orcidId-orcid-works-putcode: 224 | get: 225 | summary: (internal) Get one or more works from the ORCID API 226 | description: > 227 | Get the details of one or more works from the user's profile 228 | on the ORCID API 229 | tags: 230 | - orcid 231 | security: 232 | - ApiKeySecurity: [] 233 | parameters: 234 | - $ref: '../parameters.yaml#/orcidId' 235 | - $ref: '../parameters.yaml#/putcode' 236 | - $ref: '../parameters.yaml#/OrcidAuthorization' 237 | responses: 238 | '200': 239 | description: Returns work details from the ORCID API 240 | content: 241 | application/json: 242 | schema: 243 | $ref: '../schemas.yaml#/orcid-work-from' 244 | put: 245 | summary: (internal) Edit a work on the ORCID API 246 | description: > 247 | Edit the details of a work on the user's profile on the ORCID API 248 | tags: 249 | - orcid 250 | security: 251 | - ApiKeySecurity: [] 252 | parameters: 253 | - $ref: '../parameters.yaml#/orcidId' 254 | - $ref: '../parameters.yaml#/putcode' 255 | - $ref: '../parameters.yaml#/OrcidAuthorization' 256 | requestBody: 257 | description: > 258 | Use the return value from the GET method of this endpoint, modifying 259 | fields as needed before sending as a body on this PUT method. 260 | content: 261 | application/json: 262 | schema: 263 | $ref: '../schemas.yaml#/orcid-work-to' 264 | responses: 265 | '200': 266 | description: Success 267 | content: 268 | application/json: 269 | schema: 270 | $ref: '../schemas.yaml#/orcid-work-from' 271 | '409': 272 | description: External ID conflict 273 | delete: 274 | summary: (internal) Delete a work from the ORCID API 275 | description: > 276 | Delete a work from the user's profile on the ORCID API 277 | tags: 278 | - orcid 279 | security: 280 | - ApiKeySecurity: [] 281 | parameters: 282 | - $ref: '../parameters.yaml#/orcidId' 283 | - $ref: '../parameters.yaml#/putcode' 284 | - $ref: '../parameters.yaml#/OrcidAuthorization' 285 | responses: 286 | '204': 287 | description: Work successfully deleted 288 | orcid-orcid-name: 289 | get: 290 | summary: (internal) Get name from ORCID profile 291 | description: Get user's name from their ORCID profile 292 | tags: 293 | - orcid 294 | security: 295 | - ApiKeySecurity: [] 296 | parameters: 297 | - $ref: '../parameters.yaml#/orcidId' 298 | - $ref: '../parameters.yaml#/OrcidAuthorization' 299 | responses: 300 | '200': 301 | description: > 302 | Returns personal details section of ORCID profile; name can 303 | be parsed. 304 | '502': 305 | description: Connection error with ORCID API 306 | orcid-preferences: 307 | get: 308 | summary: (internal) Get ORCID preferences 309 | description: Get ORCID preferences 310 | tags: 311 | - orcid 312 | security: 313 | - ApiKeySecurity: [] 314 | parameters: 315 | - $ref: '../parameters.yaml#/orcidId' 316 | - $ref: '../parameters.yaml#/OrcidAuthorization' 317 | responses: 318 | '200': 319 | description: ORCID preferences 320 | content: 321 | application/json: 322 | schema: 323 | $ref: '../schemas.yaml#/orcid-preferences' 324 | '400': 325 | description: Unauthorized or other error 326 | '404': 327 | description: User not found 328 | post: 329 | summary: (internal) Set ORCID preferences 330 | description: Set ORCID preferences 331 | tags: 332 | - orcid 333 | security: 334 | - ApiKeySecurity: [] 335 | parameters: 336 | - $ref: '../parameters.yaml#/orcidId' 337 | - $ref: '../parameters.yaml#/OrcidAuthorization' 338 | requestBody: 339 | content: 340 | application/json: 341 | schema: 342 | $ref: '../schemas.yaml#/orcid-preferences' 343 | responses: 344 | '200': 345 | description: ORCID preferences 346 | content: 347 | application/json: 348 | schema: 349 | $ref: '../schemas.yaml#/orcid-preferences' 350 | '400': 351 | description: Unauthorized or other error 352 | '404': 353 | description: User not found 354 | '500': 355 | description: Database error 356 | orcid-update-orcid-profile: 357 | get: 358 | summary: (pipeline) Updates stored local profile using ORCID API 359 | description: > 360 | Calls the ORCID API to fetch and store a fresh copy of the ORCID 361 | profile in local storage. For ORCID pipeline use. 362 | tags: 363 | - orcid 364 | security: 365 | - ApiKeySecurity: [] 366 | parameters: 367 | - $ref: '../parameters.yaml#/orcidId' 368 | responses: 369 | '200': 370 | description: Returns claimed bibcodes 371 | content: 372 | application/json: 373 | schema: 374 | type: array 375 | items: 376 | type: string 377 | '404': 378 | description: Missing record or access token for user 379 | '502': 380 | description: Connection error with ORCID API 381 | orcid-update-status: 382 | get: 383 | summary: (pipeline) Get bibcode status for a given user 384 | description: Get bibcode status for a given user. For ORCID pipeline use. 385 | tags: 386 | - orcid 387 | security: 388 | - ApiKeySecurity: [] 389 | parameters: 390 | - $ref: '../parameters.yaml#/orcidId' 391 | responses: 392 | '200': 393 | description: Bibcodes and statuses 394 | content: 395 | application/json: 396 | schema: 397 | type: object 398 | properties: 399 | bibcodes: 400 | type: array 401 | items: 402 | type: string 403 | status: 404 | type: string 405 | post: 406 | summary: (pipeline) Set bibcode status for a given user 407 | description: Set bibcode status for a given user. For ORCID pipeline use. 408 | tags: 409 | - orcid 410 | security: 411 | - ApiKeySecurity: [] 412 | parameters: 413 | - $ref: '../parameters.yaml#/orcidId' 414 | requestBody: 415 | content: 416 | application/json: 417 | schema: 418 | type: object 419 | properties: 420 | bibcodes: 421 | type: array 422 | items: 423 | type: string 424 | status: 425 | type: string 426 | responses: 427 | '200': 428 | description: Bibcodes and statuses 429 | content: 430 | application/json: 431 | schema: 432 | type: object 433 | properties: 434 | bibcode: 435 | type: string 436 | '500': 437 | description: Updated status not saved 438 | -------------------------------------------------------------------------------- /openapi/openapi.yaml: -------------------------------------------------------------------------------- 1 | openapi: 3.0.3 2 | info: 3 | title: Full API for Astrophysics Data System (ADS) 4 | description: > 5 | Internal + user-facing API endpoints 6 | termsOfService: https://ui.adsabs.harvard.edu/help/terms/ 7 | contact: 8 | name: ADS Help 9 | url: https://github.com/adsabs/adsabs-dev-api 10 | email: adshelp@cfa.harvard.edu 11 | version: 1.0.0 12 | servers: 13 | - url: https://api.adsabs.harvard.edu/{basePath} 14 | description: Production Server 15 | variables: 16 | basePath: 17 | default: v1 18 | enum: 19 | - v1 20 | - url: https://devapi.adsabs.harvard.edu/{basePath} 21 | description: Development Server 22 | variables: 23 | basePath: 24 | default: v1 25 | enum: 26 | - v1 27 | tags: 28 | - name: adsws 29 | - name: author affiliation 30 | - name: libraries 31 | - name: citation helper 32 | - name: export (tagged formats) 33 | - name: export (LaTeX formats) 34 | - name: export (XML formats) 35 | - name: export (other) 36 | - name: graphics 37 | - name: classic import 38 | - name: journals 39 | - name: metrics 40 | - name: objects 41 | - name: orcid 42 | - name: recommender 43 | - name: reference 44 | - name: resolver 45 | - name: search 46 | - name: stored search 47 | - name: notifications 48 | - name: vault 49 | - name: visualizations 50 | components: 51 | securitySchemes: 52 | ApiKeySecurity: 53 | type: http 54 | scheme: bearer 55 | bearerFormat: JWT 56 | XCsrfSecurity: 57 | type: apiKey 58 | in: header 59 | name: x-csrftoken 60 | parameters: 61 | token: 62 | $ref: parameters.yaml#/token 63 | user_id: 64 | $ref: parameters.yaml#/user_id 65 | orcidId: 66 | $ref: parameters.yaml#/orcidId 67 | putcode: 68 | $ref: parameters.yaml#/putcode 69 | OrcidAuthorization: 70 | $ref: parameters.yaml#/OrcidAuthorization 71 | iso_datestring: 72 | $ref: parameters.yaml#/iso_datestring 73 | q: 74 | $ref: parameters.yaml#/q 75 | rows: 76 | $ref: parameters.yaml#/rows 77 | fq: 78 | $ref: parameters.yaml#/fq 79 | fl: 80 | $ref: parameters.yaml#/fl 81 | start: 82 | $ref: parameters.yaml#/start 83 | sort: 84 | $ref: parameters.yaml#/sort 85 | bibcode: 86 | $ref: parameters.yaml#/bibcode 87 | library_id: 88 | $ref: parameters.yaml#/library_id 89 | document_id: 90 | $ref: parameters.yaml#/document_id 91 | link: 92 | $ref: parameters.yaml#/link 93 | queryId: 94 | $ref: parameters.yaml#/queryId 95 | myadsId: 96 | $ref: parameters.yaml#/myadsId 97 | bibstem: 98 | $ref: parameters.yaml#/JournalBibstem 99 | volume: 100 | $ref: parameters.yaml#/JournalVolume 101 | issn: 102 | $ref: parameters.yaml#/JournalISSN 103 | export: 104 | $ref: parameters.yaml#/export 105 | code: 106 | $ref: parameters.yaml#/code 107 | responses: 108 | QTree: 109 | $ref: responses.yaml#/QTree 110 | SearchResults: 111 | $ref: responses.yaml#/SearchResults 112 | VaultResponse: 113 | $ref: responses.yaml#/VaultResponse 114 | ExportResponse: 115 | $ref: responses.yaml#/ExportResponse 116 | ExportResponseGet: 117 | $ref: responses.yaml#/ExportResponseGet 118 | ResolverResponse: 119 | $ref: responses.yaml#/ResolverResponse 120 | TokenResponse: 121 | $ref: responses.yaml#/TokenResponse 122 | schemas: 123 | qtree: 124 | $ref: schemas.yaml#/qtree 125 | results: 126 | $ref: schemas.yaml#/results 127 | doc: 128 | $ref: schemas.yaml#/doc 129 | responseHeader: 130 | $ref: schemas.yaml#/responseHeader 131 | vaultObject: 132 | $ref: schemas.yaml#/vaultObject 133 | basicMetricsResponse: 134 | $ref: schemas.yaml#/basicMetricsResponse 135 | myADSsummaryResponse: 136 | $ref: schemas.yaml#/myADSsummaryResponse 137 | myADSdetailResponse: 138 | $ref: schemas.yaml#/myADSdetailResponse 139 | bibcodeObject: 140 | $ref: schemas.yaml#/bibcodeObject 141 | bibcodesObject: 142 | $ref: schemas.yaml#/bibcodesObject 143 | libraryMetadata: 144 | $ref: schemas.yaml#/libraryMetadata 145 | libraryNote: 146 | $ref: schemas.yaml#/libraryNote 147 | orcid-work-to: 148 | $ref: schemas.yaml#/orcid-work-to 149 | orcid-work-from: 150 | $ref: schemas.yaml#/orcid-work-from 151 | orcid-preferences: 152 | $ref: schemas.yaml#/orcid-preferences 153 | myADSsetupResponse: 154 | $ref: schemas.yaml#/myADSsetupResponse 155 | summary: 156 | $ref: schemas.yaml#/summary 157 | journal: 158 | $ref: schemas.yaml#/journal 159 | holdings: 160 | $ref: schemas.yaml#/holdings 161 | refsource: 162 | $ref: schemas.yaml#/refsource 163 | issn: 164 | $ref: schemas.yaml#/issn 165 | browse: 166 | $ref: schemas.yaml#/browse 167 | paths: 168 | /alive: 169 | $ref: 'services/adsws.yaml#/alive' 170 | /ready: 171 | $ref: 'services/adsws.yaml#/ready' 172 | /accounts/bootstrap: 173 | $ref: 'services/adsws.yaml#/accounts-bootstrap' 174 | /accounts/protected: 175 | $ref: 'services/adsws.yaml#/accounts-protected' 176 | /accounts/csrf: 177 | $ref: 'services/adsws.yaml#/accounts-csrf' 178 | /accounts/user: 179 | $ref: 'services/adsws.yaml#/accounts-user' 180 | /accounts/user/delete: 181 | $ref: 'services/adsws.yaml#/accounts-user-delete' 182 | /accounts/register: 183 | $ref: 'services/adsws.yaml#/accounts-register' 184 | /accounts/logout: 185 | $ref: 'services/adsws.yaml#/accounts-logout' 186 | /accounts/token: 187 | $ref: 'services/adsws.yaml#/accounts-token' 188 | /accounts/info/{account_data}: 189 | $ref: 'services/adsws.yaml#/accounts-info' 190 | /accounts/change-password: 191 | $ref: 'services/adsws.yaml#/accounts-change-password' 192 | /accounts/change-email: 193 | $ref: 'services/adsws.yaml#/accounts-change-email' 194 | /accounts/verify/{token}: 195 | $ref: 'services/adsws.yaml#/accounts-verify' 196 | /accounts/reset-password/{token}: 197 | $ref: 'services/adsws.yaml#/accounts-reset-password' 198 | /accounts/status: 199 | $ref: 'services/adsws.yaml#/accounts-status' 200 | /status: 201 | $ref: 'services/adsws.yaml#/status' 202 | /protected: 203 | $ref: 'services/adsws.yaml#/protected' 204 | /user/{identifier}: 205 | $ref: 'services/adsws.yaml#/user' 206 | /userfeedback: 207 | $ref: 'services/adsws.yaml#/userfeedback' 208 | /resources: 209 | $ref: 'services/adsws.yaml#/resources' 210 | /oauth/authorize: 211 | $ref: 'services/adsws.yaml#/oauth-authorize' 212 | /oauth/token: 213 | $ref: 'services/adsws.yaml#/oauth-token' 214 | /oauth/errors: 215 | $ref: 'services/adsws.yaml#/oauth-errors' 216 | /oauth/ping: 217 | $ref: 'services/adsws.yaml#/oauth-ping' 218 | /oauth/info: 219 | $ref: 'services/adsws.yaml#/oauth-info' 220 | /oauth/invalid: 221 | $ref: 'services/adsws.yaml#/oauth-invalid' 222 | /author-affiliation/search: 223 | $ref: 'services/author-affiliation.yaml#/author-affiliation-search' 224 | /author-affiliation/export: 225 | $ref: 'services/author-affiliation.yaml#/author-affiliation-export' 226 | /biblib/twopointoh: 227 | $ref: 'services/biblib.yaml#/biblib-twopointoh' 228 | /biblib/classic: 229 | $ref: 'services/biblib.yaml#/biblib-classic' 230 | /biblib/libraries: 231 | $ref: 'services/biblib.yaml#/biblib-libraries' 232 | /biblib/libraries/{library_id}: 233 | $ref: 'services/biblib.yaml#/biblib-libraries-library_id' 234 | /biblib/libraries/operations/{library_id}: 235 | $ref: 'services/biblib.yaml#/biblib-libraries-operations' 236 | /biblib/documents/{library_id}: 237 | $ref: 'services/biblib.yaml#/biblib-documents' 238 | /biblib/notes/{library_id}/{document_id}: 239 | $ref: 'services/biblib.yaml#/biblib-notes' 240 | /biblib/query/{library_id}: 241 | $ref: 'services/biblib.yaml#/biblib-query' 242 | /biblib/permissions/{library_id}: 243 | $ref: 'services/biblib.yaml#/biblib-permissions' 244 | /biblib/transfer/{library_id}: 245 | $ref: 'services/biblib.yaml#/biblib-transfer' 246 | /citation_helper: 247 | $ref: 'services/citation_helper.yaml#/citation_helper' 248 | /export/bibtexabs/{bibcode}: 249 | $ref: 'services/export.yaml#/export-bibtexabs-get' 250 | /export/bibtexabs: 251 | $ref: 'services/export.yaml#/export-bibtexabs' 252 | /export/bibtex/{bibcode}: 253 | $ref: 'services/export.yaml#/export-bibtex-get' 254 | /export/bibtex: 255 | $ref: 'services/export.yaml#/export-bibtex' 256 | /export/ads/{bibcode}: 257 | $ref: 'services/export.yaml#/export-ads-get' 258 | /export/ads: 259 | $ref: 'services/export.yaml#/export-ads' 260 | /export/endnote/{bibcode}: 261 | $ref: 'services/export.yaml#/export-endnote-get' 262 | /export/endnote: 263 | $ref: 'services/export.yaml#/export-endnote' 264 | /export/procite/{bibcode}: 265 | $ref: 'services/export.yaml#/export-procite-get' 266 | /export/procite: 267 | $ref: 'services/export.yaml#/export-procite' 268 | /export/ris/{bibcode}: 269 | $ref: 'services/export.yaml#/export-ris-get' 270 | /export/ris: 271 | $ref: 'services/export.yaml#/export-ris' 272 | /export/refworks/{bibcode}: 273 | $ref: 'services/export.yaml#/export-refworks-get' 274 | /export/refworks: 275 | $ref: 'services/export.yaml#/export-refworks' 276 | /export/medlars/{bibcode}: 277 | $ref: 'services/export.yaml#/export-medlars-get' 278 | /export/medlars: 279 | $ref: 'services/export.yaml#/export-medlars' 280 | /export/aastex/{bibcode}: 281 | $ref: 'services/export.yaml#/export-aastex-get' 282 | /export/aastex: 283 | $ref: 'services/export.yaml#/export-aastex' 284 | /export/icarus/{bibcode}: 285 | $ref: 'services/export.yaml#/export-icarus-get' 286 | /export/icarus: 287 | $ref: 'services/export.yaml#/export-icarus' 288 | /export/mnras/{bibcode}: 289 | $ref: 'services/export.yaml#/export-mnras-get' 290 | /export/mnras: 291 | $ref: 'services/export.yaml#/export-mnras' 292 | /export/soph/{bibcode}: 293 | $ref: 'services/export.yaml#/export-soph-get' 294 | /export/soph: 295 | $ref: 'services/export.yaml#/export-soph' 296 | /export/dcxml/{bibcode}: 297 | $ref: 'services/export.yaml#/export-dcxml-get' 298 | /export/dcxml: 299 | $ref: 'services/export.yaml#/export-dcxml' 300 | /export/refxml/{bibcode}: 301 | $ref: 'services/export.yaml#/export-refxml-get' 302 | /export/refxml: 303 | $ref: 'services/export.yaml#/export-refxml' 304 | /export/refabsxml/{bibcode}: 305 | $ref: 'services/export.yaml#/export-refabsxml-get' 306 | /export/refabsxml: 307 | $ref: 'services/export.yaml#/export-refabsxml' 308 | /export/votable/{bibcode}: 309 | $ref: 'services/export.yaml#/export-votable-get' 310 | /export/votable: 311 | $ref: 'services/export.yaml#/export-votable' 312 | /export/rss/{bibcode}: 313 | $ref: 'services/export.yaml#/export-rss-get' 314 | /export/rss: 315 | $ref: 'services/export.yaml#/export-rss' 316 | /export/rss/{bibcode}/{link}: 317 | $ref: 'services/export.yaml#/export-rss-link' 318 | /export/ieee/{bibcode}: 319 | $ref: 'services/export.yaml#/export-ieee-get' 320 | /export/ieee: 321 | $ref: 'services/export.yaml#/export-ieee' 322 | /export/csl: 323 | $ref: 'services/export.yaml#/export-csl' 324 | /export/custom: 325 | $ref: 'services/export.yaml#/export-custom' 326 | /graphics/{bibcode}: 327 | $ref: 'services/graphics.yaml#/graphics' 328 | /harbour/auth/twopointoh: 329 | $ref: 'services/harbour.yaml#/harbour-auth-twopointoh' 330 | /harbour/export/twopointoh/{export}: 331 | $ref: 'services/harbour.yaml#/harbour-export-twopointoh' 332 | /harbour/libraries/twopointoh/{user_id}: 333 | $ref: 'services/harbour.yaml#/harbour-libraries-twopointoh' 334 | /harbour/libraries/classic/{user_id}: 335 | $ref: 'services/harbour.yaml#/harbour-libraries-classic' 336 | /harbour/myads/classic/{user_id}: 337 | $ref: 'services/harbour.yaml#/harbour-myads-classic' 338 | /harbour/mirrors: 339 | $ref: 'services/harbour.yaml#/harbour-mirrors' 340 | /harbour/user: 341 | $ref: 'services/harbour.yaml#/harbour-user' 342 | /harbour/auth/classic: 343 | $ref: 'services/harbour.yaml#/harbour-auth-classic' 344 | /journals/summary/{bibstem}: 345 | $ref: 'services/journals.yaml#/summary' 346 | /journals/journal/{journalname}: 347 | $ref: 'services/journals.yaml#/journal' 348 | /journals/holdings/{bibstem}/{volume}: 349 | $ref: 'services/journals.yaml#/holdings' 350 | /journals/refsource/{bibstem}: 351 | $ref: 'services/journals.yaml#/refsource' 352 | /journals/issn/{issn}: 353 | $ref: 'services/journals.yaml#/issn' 354 | /journals/browse/{bibstem}: 355 | $ref: 'services/journals.yaml#/browse' 356 | /metrics: 357 | $ref: 'services/metrics.yaml#/metrics' 358 | /metrics/{bibcode}: 359 | $ref: 'services/metrics.yaml#/metrics-bibcode' 360 | /metrics/detail: 361 | $ref: 'services/metrics.yaml#/metrics-detail' 362 | /objects: 363 | $ref: 'services/objects.yaml#/objects' 364 | /objects/query: 365 | $ref: 'services/objects.yaml#/objects-query' 366 | /objects/nedsrv: 367 | $ref: 'services/objects.yaml#/objects-nedsrv' 368 | /oracle/matchdoc: 369 | $ref: 'services/oracle.yaml#/oracle-matchdoc' 370 | /oracle/readhist: 371 | $ref: 'services/oracle.yaml#/oracle-readhist' 372 | /oracle/readhist/{function}/{reader}: 373 | $ref: 'services/oracle.yaml#/oracle-readhist-reader' 374 | /orcid/exchangeOAuthCode: 375 | $ref: 'services/orcid.yaml#/orcid-exchangeOAuthCode' 376 | /orcid/{orcidId}/orcid-profile: 377 | $ref: 'services/orcid.yaml#/orcid-orcidId-orcid-profile' 378 | /orcid/{orcidId}/orcid-profile/{type}: 379 | $ref: 'services/orcid.yaml#/orcid-orcidId-orcid-profile-type' 380 | /orcid/{orcidId}/orcid-works/{putcode}: 381 | $ref: 'services/orcid.yaml#/orcid-orcidId-orcid-works-putcode' 382 | /orcid/{orcidId}/orcid-work: 383 | $ref: 'services/orcid.yaml#/orcid-orcidId-orcid-work' 384 | /orcid/{orcidId}/orcid-works: 385 | $ref: 'services/orcid.yaml#/orcid-orcidId-orcid-works' 386 | /orcid/export/{iso_datestring}: 387 | $ref: 'services/orcid.yaml#/orcid-export' 388 | /orcid/get-profile/{orcidId}: 389 | $ref: 'services/orcid.yaml#/orcid-get-profile' 390 | /orcid/update-orcid-profile/{orcidId}: 391 | $ref: 'services/orcid.yaml#/orcid-update-orcid-profile' 392 | /orcid/preferences/{orcidId}: 393 | $ref: 'services/orcid.yaml#/orcid-preferences' 394 | /orcid/update-status/{orcidId}: 395 | $ref: 'services/orcid.yaml#/orcid-update-status' 396 | /orcid/orcid-name/{orcidId}: 397 | $ref: 'services/orcid.yaml#/orcid-orcid-name' 398 | /reference/text/{reference}: 399 | $ref: 'services/reference.yaml#/reference-text-reference' 400 | /reference/text: 401 | $ref: 'services/reference.yaml#/reference-text' 402 | /reference/xml: 403 | $ref: 'services/reference.yaml#/reference-xml' 404 | /reference/pickle_source_matcher: 405 | $ref: 'services/reference.yaml#/reference-pickle_source_matcher' 406 | /reference/pickle_crf: 407 | $ref: 'services/reference.yaml#/reference-pickle_crf' 408 | /reference/parse: 409 | $ref: 'services/reference.yaml#/reference-parse' 410 | /resolver/update: 411 | $ref: 'services/resolver.yaml#/resolver-update' 412 | /resolver/delete: 413 | $ref: 'services/resolver.yaml#/resolver-delete' 414 | /resolver/{bibcode}: 415 | $ref: 'services/resolver.yaml#/resolver-bibcode' 416 | /resolver/{bibcode}/{link_type}: 417 | $ref: 'services/resolver.yaml#/resolver-bibcode-link_type' 418 | /search/query: 419 | $ref: 'services/solr.yaml#/search-query' 420 | /search/qtree: 421 | $ref: 'services/solr.yaml#/search-qtree' 422 | /search/bigquery: 423 | $ref: 'services/solr.yaml#/search-bigquery' 424 | /vault/configuration: 425 | $ref: 'services/vault.yaml#/vault-configuration' 426 | /vault/configuration/{key}: 427 | $ref: 'services/vault.yaml#/vault-configuration-key' 428 | /vault/user-data: 429 | $ref: 'services/vault.yaml#/vault-user-data' 430 | /vault/get-myads/{user_id}: 431 | $ref: 'services/vault.yaml#/vault-get-myads-user_id' 432 | /vault/get-myads/{user_id}/{iso_datestring}: 433 | $ref: 'services/vault.yaml#/vault-get-myads-user_id-iso_datestring' 434 | /vault/myads-users/{iso_datestring}: 435 | $ref: 'services/vault.yaml#/vault-myads-users' 436 | /vault/myads-import: 437 | $ref: 'services/vault.yaml#/vault-myads-import' 438 | /vault/query: 439 | $ref: 'services/vault.yaml#/vault-query' 440 | /vault/query/{queryId}: 441 | $ref: 'services/vault.yaml#/vault-query-queryId' 442 | /vault/execute_query/{queryId}: 443 | $ref: 'services/vault.yaml#/vault-execute_query' 444 | /vault/query2svg/{queryId}: 445 | $ref: 'services/vault.yaml#/vault-query2svg' 446 | /vault/notifications: 447 | $ref: 'services/vault.yaml#/vault-notifications' 448 | /vault/notifications/{myads_id}: 449 | $ref: 'services/vault.yaml#/vault-notifications-myads_id' 450 | /vault/notification_query/{myads_id}: 451 | $ref: 'services/vault.yaml#/vault-notification_query' 452 | /vis/author-network: 453 | $ref: 'services/vis.yaml#/vis-author-network' 454 | /vis/paper-network: 455 | $ref: 'services/vis.yaml#/vis-paper-network' 456 | /vis/word-cloud: 457 | $ref: 'services/vis.yaml#/vis-word-cloud' 458 | -------------------------------------------------------------------------------- /openapi/schemas.yaml: -------------------------------------------------------------------------------- 1 | basicMetricsResponse: 2 | type: object 3 | properties: 4 | basic stats: 5 | type: object 6 | properties: 7 | average number of downloads: 8 | type: number 9 | average number of reads: 10 | type: number 11 | median number of downloads: 12 | type: number 13 | median number of reads: 14 | type: number 15 | normalized paper count: 16 | type: number 17 | number of papers: 18 | type: integer 19 | recent number of downloads: 20 | type: integer 21 | recent number of reads: 22 | type: integer 23 | total number of downloads: 24 | type: integer 25 | total number of reads: 26 | type: integer 27 | basic stats refereed: 28 | type: object 29 | properties: 30 | average number of downloads: 31 | type: number 32 | average number of reads: 33 | type: number 34 | median number of downloads: 35 | type: number 36 | median number of reads: 37 | type: number 38 | normalized paper count: 39 | type: number 40 | number of papers: 41 | type: integer 42 | recent number of downloads: 43 | type: integer 44 | recent number of reads: 45 | type: integer 46 | total number of downloads: 47 | type: integer 48 | total number of reads: 49 | type: integer 50 | citation stats: 51 | type: object 52 | properties: 53 | average number of citations: 54 | type: number 55 | average number of refereed citations: 56 | type: number 57 | median number of citations: 58 | type: number 59 | median number of refereed citations: 60 | type: number 61 | normalized number of citations: 62 | type: number 63 | normalized number of refereed citations: 64 | type: number 65 | number of citing papers: 66 | type: integer 67 | number of self-citations: 68 | type: integer 69 | self-citations: 70 | type: array 71 | items: 72 | type: string 73 | total number of citations: 74 | type: integer 75 | total number of refereed citations: 76 | type: integer 77 | citation stats refereed: 78 | type: object 79 | properties: 80 | average number of citations: 81 | type: number 82 | average number of refereed citations: 83 | type: number 84 | median number of citations: 85 | type: number 86 | median number of refereed citations: 87 | type: number 88 | normalized number of citations: 89 | type: number 90 | normalized number of refereed citations: 91 | type: number 92 | number of citing papers: 93 | type: integer 94 | number of self-citations: 95 | type: integer 96 | self-citations: 97 | type: array 98 | items: 99 | type: string 100 | total number of citations: 101 | type: integer 102 | total number of refereed citations: 103 | type: integer 104 | histograms: 105 | type: object 106 | properties: 107 | citations: 108 | type: object 109 | properties: 110 | nonrefereed to nonrefereed: 111 | type: object 112 | properties: 113 | year: 114 | type: integer 115 | nonrefereed to nonrefereed normalized: 116 | type: object 117 | properties: 118 | year: 119 | type: number 120 | nonrefereed to refereed: 121 | type: object 122 | properties: 123 | year: 124 | type: integer 125 | nonrefereed to refereed normalized: 126 | type: object 127 | properties: 128 | year: 129 | type: number 130 | refereed to nonrefereed: 131 | type: object 132 | properties: 133 | year: 134 | type: integer 135 | refereed to nonrefereed normalized: 136 | type: object 137 | properties: 138 | year: 139 | type: number 140 | refereed to refereed: 141 | type: object 142 | properties: 143 | year: 144 | type: integer 145 | refereed to refereed normalized: 146 | type: object 147 | properties: 148 | year: 149 | type: number 150 | reads: 151 | type: object 152 | properties: 153 | all reads: 154 | type: object 155 | properties: 156 | year: 157 | type: integer 158 | all reads normalized: 159 | type: object 160 | properties: 161 | year: 162 | type: number 163 | refereed reads: 164 | type: object 165 | properties: 166 | year: 167 | type: integer 168 | refereed reads normalized: 169 | type: object 170 | properties: 171 | year: 172 | type: number 173 | skipped bibcodes: 174 | type: array 175 | items: 176 | type: string 177 | bibcodeObject: 178 | type: object 179 | required: 180 | - bibcode 181 | properties: 182 | bibcode: 183 | type: array 184 | description: > 185 | Input list of one or more bibcodes 186 | items: 187 | type: string 188 | bibcodesObject: 189 | type: object 190 | required: 191 | - bibcodes 192 | properties: 193 | bibcodes: 194 | type: array 195 | description: > 196 | Input list of one or more bibcodes 197 | items: 198 | type: string 199 | doc: 200 | type: object 201 | required: 202 | - id 203 | properties: 204 | id: 205 | type: string 206 | bibcode: 207 | type: string 208 | title: 209 | type: string 210 | libraryResponse: 211 | type: object 212 | properties: 213 | count: 214 | type: integer 215 | description: Number of libraries in collection depending on access_type selected 216 | libraries: 217 | type: array 218 | description: List of all libraries with their metadata 219 | items: 220 | $ref: 'schemas.yaml#/libraryMetadata' 221 | libraryNote: 222 | type: object 223 | description: > 224 | Object that contains the notes' properties 225 | properties: 226 | id: 227 | type: string 228 | description: Note id 229 | content: 230 | type: string 231 | description: Note content 232 | library_id: 233 | type: string 234 | description: Note library id 235 | date_created: 236 | type: string 237 | description: Date note was created 238 | date_last_modified: 239 | type: string 240 | description: Date note was last modified 241 | libraryMetadata: 242 | type: object 243 | properties: 244 | owner: 245 | type: string 246 | description: User who created the library 247 | num_documents: 248 | type: integer 249 | description: Number of bibcodes in the library 250 | public: 251 | type: boolean 252 | description: True means it is public 253 | num_users: 254 | type: integer 255 | description: Number of users with permissions to this library 256 | date_created: 257 | type: string 258 | description: Date library was created 259 | name: 260 | type: string 261 | description: Name of library 262 | description: 263 | type: string 264 | description: Description of library 265 | permission: 266 | type: string 267 | description: Permission type, can be 'read', 'write', 'admin', or 'owner' 268 | id: 269 | type: string 270 | description: Library ID 271 | date_last_modified: 272 | type: string 273 | description: Date library was last modified 274 | myADSsetupResponse: 275 | type: array 276 | items: 277 | type: object 278 | properties: 279 | id: 280 | type: string 281 | name: 282 | type: string 283 | type: 284 | type: string 285 | active: 286 | type: boolean 287 | stateful: 288 | type: boolean 289 | frequency: 290 | type: string 291 | template: 292 | type: string 293 | classes: 294 | type: array 295 | items: 296 | type: string 297 | data: 298 | type: string 299 | created: 300 | type: string 301 | updated: 302 | type: string 303 | qid: 304 | type: string 305 | query: 306 | type: string 307 | myADSdetailResponse: 308 | type: object 309 | properties: 310 | qid: 311 | type: string 312 | stateful: 313 | type: boolean 314 | classes: 315 | type: array 316 | items: 317 | type: string 318 | myADSsummaryResponse: 319 | type: object 320 | properties: 321 | active: 322 | type: boolean 323 | created: 324 | type: string 325 | data: 326 | type: string 327 | frequency: 328 | type: string 329 | enum: 330 | - daily 331 | - weekly 332 | id: 333 | type: integer 334 | name: 335 | type: string 336 | template: 337 | type: string 338 | enum: 339 | - arxiv 340 | - authors 341 | - citations 342 | - keyword 343 | type: 344 | type: string 345 | enum: 346 | - template 347 | - query 348 | updated: 349 | type: string 350 | orcid-preferences: 351 | type: object 352 | properties: 353 | authorizedUser: 354 | type: boolean 355 | currentAffiliation: 356 | type: string 357 | nameVariations: 358 | type: array 359 | items: 360 | type: string 361 | orcid-work-from: 362 | description: > 363 | JSON from the ORCID API, describing a single record 364 | allOf: 365 | - $ref: 'schemas.yaml#/orcid-work-to' 366 | - type: object 367 | properties: 368 | created-date: 369 | type: object 370 | properties: 371 | value: 372 | description: ms since epoch 373 | type: integer 374 | last-modified-date: 375 | type: object 376 | properties: 377 | value: 378 | description: ms since epoch 379 | type: integer 380 | source: 381 | type: object 382 | properties: 383 | source-orcid: 384 | type: object 385 | properties: 386 | value: 387 | type: string 388 | source-name: 389 | type: object 390 | properties: 391 | value: 392 | type: string 393 | source-client-id: 394 | type: object 395 | properties: 396 | uri: 397 | type: string 398 | path: 399 | type: string 400 | host: 401 | type: string 402 | path: 403 | type: string 404 | url: 405 | type: string 406 | language-code: 407 | type: string 408 | country: 409 | type: string 410 | visibility: 411 | type: string 412 | orcid-work-to: 413 | description: > 414 | JSON to send to ORCID API, describing a single record 415 | type: object 416 | properties: 417 | put-code: 418 | type: integer 419 | title: 420 | type: object 421 | properties: 422 | title: 423 | type: object 424 | properties: 425 | value: 426 | type: string 427 | subtitle: 428 | type: object 429 | properties: 430 | value: 431 | type: string 432 | translated-title: 433 | type: object 434 | properties: 435 | value: 436 | type: string 437 | journal-title: 438 | type: object 439 | properties: 440 | value: 441 | type: string 442 | short-description: 443 | type: string 444 | type: 445 | type: string 446 | publication-date: 447 | type: object 448 | properties: 449 | year: 450 | type: object 451 | properties: 452 | value: 453 | type: string 454 | month: 455 | type: object 456 | properties: 457 | value: 458 | type: string 459 | day: 460 | type: object 461 | properties: 462 | value: 463 | type: string 464 | external-ids: 465 | type: object 466 | properties: 467 | external-id: 468 | type: array 469 | items: 470 | type: object 471 | properties: 472 | external-id-type: 473 | type: string 474 | external-id-value: 475 | type: string 476 | external-id-url: 477 | type: string 478 | external-id-relationship: 479 | type: string 480 | contributors: 481 | type: object 482 | properties: 483 | contributor: 484 | type: array 485 | items: 486 | type: object 487 | properties: 488 | contributor-orcid: 489 | type: string 490 | credit-name: 491 | type: object 492 | properties: 493 | value: 494 | type: string 495 | contributor-email: 496 | type: string 497 | contributor-attributes: 498 | type: object 499 | properties: 500 | contributor-sequence: 501 | type: string 502 | contributor-role: 503 | type: string 504 | qtree: 505 | type: object 506 | properties: 507 | responseHeader: 508 | $ref: 'schemas.yaml#/responseHeader' 509 | qtree: 510 | type: string 511 | description: serialized JSON 512 | responseHeader: 513 | type: object 514 | properties: 515 | status: 516 | description: Status code as returned by the search engine 517 | type: integer 518 | QTime: 519 | type: integer 520 | description: >- 521 | search time in millisecs (only search, without faceting, latency and 522 | all other steps) 523 | parameters: 524 | description: Input search parameters 525 | type: object 526 | properties: 527 | q: 528 | type: string 529 | fl: 530 | type: string 531 | start: 532 | type: string 533 | rows: 534 | type: string 535 | results: 536 | type: object 537 | properties: 538 | responseHeader: 539 | $ref: 'schemas.yaml#/responseHeader' 540 | numFound: 541 | type: integer 542 | start: 543 | type: integer 544 | docs: 545 | type: array 546 | items: 547 | $ref: 'schemas.yaml#/doc' 548 | vaultObject: 549 | type: object 550 | properties: 551 | q: 552 | type: string 553 | description: >- 554 | Query string; for detailed documentation go to 555 | https://ui.adsabs.harvard.edu/help/search/search-syntax 556 | fl: 557 | type: string 558 | description: Comma delimited set of fields to return; default is 'id' 559 | example: "bibcode,author,title" 560 | start: 561 | type: integer 562 | description: For pagination, offset of the first returned result (default=0) 563 | rows: 564 | description: How many records to return for this request (default=10, maximum=2000) 565 | type: integer 566 | default: 10 567 | maximum: 2000 568 | sort: 569 | description: > 570 | The format is 'field' + 'direction' where direction is one of 'asc' or 571 | 'desc' and field is any of the valid indexes. The default sorting is by 572 | relevance (computed by our search engine). Example\: 573 | 'sort=read_count+desc' Some useful fields to sort by may be date, 574 | citation_count, or read_count. 575 | type: 576 | string 577 | fq: 578 | type: string 579 | description: > 580 | must be set to `'{!bitset}'` 581 | bigquery: 582 | type: string 583 | description: > 584 | new line separated list of bibcodes, the first line is the name of 585 | the index that will be searched, right now we only support search 586 | in `bibcode` index 587 | summary: 588 | type: object 589 | properties: 590 | master: 591 | type: object 592 | properties: 593 | bibstem: 594 | type: string 595 | journal_name: 596 | type: string 597 | primary_language: 598 | type: string 599 | multilingual: 600 | type: boolean 601 | defunct: 602 | type: boolean 603 | pubtype: 604 | type: string 605 | refereed: 606 | type: string 607 | collection: 608 | type: string 609 | notes: 610 | type: string 611 | not_indexed: 612 | type: boolean 613 | idents: 614 | type: array 615 | items: 616 | type: object 617 | properties: 618 | id_type: 619 | type: string 620 | id_value: 621 | type: string 622 | abbrev: 623 | type: array 624 | items: 625 | type: string 626 | pubhist: 627 | type: array 628 | items: 629 | type: object 630 | properties: 631 | publisher: 632 | type: string 633 | title: 634 | type: object 635 | properties: 636 | year_start: 637 | type: integer 638 | year_end: 639 | type: integer 640 | vol_start: 641 | type: string 642 | vol_end: 643 | type: string 644 | complete: 645 | type: string 646 | successor_masterid: 647 | type: integer 648 | notes: 649 | type: string 650 | names: 651 | type: object 652 | properties: 653 | name_english_translated: 654 | type: string 655 | title_language: 656 | type: string 657 | name_native_language: 658 | type: string 659 | name_normalized: 660 | type: string 661 | journal: 662 | type: object 663 | properties: 664 | journal: 665 | type: array 666 | items: 667 | type: object 668 | properties: 669 | bibstem: 670 | type: string 671 | name: 672 | type: string 673 | holdings: 674 | type: object 675 | properties: 676 | bibstem: 677 | type: string 678 | volume: 679 | type: string 680 | numFound: 681 | type: integer 682 | holdings: 683 | type: array 684 | items: 685 | properties: 686 | esources: 687 | type: array 688 | items: 689 | type: string 690 | page: 691 | type: string 692 | refsource: 693 | type: object 694 | properties: 695 | refsource: 696 | type: object 697 | properties: 698 | bibstem: 699 | type: string 700 | volumes: 701 | type: array 702 | items: 703 | properties: 704 | volume: 705 | type: string 706 | year: 707 | type: string 708 | refsources: 709 | type: object 710 | properties: 711 | AUTHOR: 712 | type: integer 713 | OTHER: 714 | type: integer 715 | ISI: 716 | type: integer 717 | CROSSREF: 718 | type: integer 719 | OCR: 720 | type: integer 721 | PUBLISHER: 722 | type: integer 723 | issn: 724 | type: object 725 | properties: 726 | issn: 727 | type: object 728 | properties: 729 | ISSN: 730 | type: string 731 | ISSN_type: 732 | type: string 733 | bibstem: 734 | type: string 735 | journal_name: 736 | type: string 737 | browse: 738 | type: object 739 | properties: 740 | browse: 741 | type: object 742 | properties: 743 | canonical_abbreviation: 744 | type: string 745 | canonical_name: 746 | type: string 747 | classic_bibstem: 748 | type: string 749 | completeness_estimate: 750 | type: string 751 | external_identifiers: 752 | type: array 753 | items: 754 | properties: 755 | id_type: 756 | type: string 757 | id_value: 758 | type: string 759 | native_language_title: 760 | type: string 761 | primary_language: 762 | type: string 763 | publication_history: 764 | type: array 765 | items: 766 | properties: 767 | publisher: 768 | type: string 769 | start_volume: 770 | type: string 771 | start_year: 772 | type: string 773 | title_language: 774 | type: string 775 | -------------------------------------------------------------------------------- /openapi/services/vault.yaml: -------------------------------------------------------------------------------- 1 | vault-configuration: 2 | get: 3 | summary: (internal) Fetch data from VAULT_BUMBLEBEE_OPTIONS 4 | description: > 5 | Fetch data from VAULT_BUMBLEBEE_OPTIONS, default key. 6 | tags: 7 | - vault 8 | security: 9 | - ApiKeySecurity: [] 10 | responses: 11 | '200': 12 | description: Vault configuration 13 | content: 14 | application/json: 15 | schema: 16 | type: object 17 | properties: 18 | default_key: 19 | description: > 20 | Default vault Bumblebee options key, as defined in config 21 | type: string 22 | '404': 23 | description: No default key setup in config 24 | '500': 25 | description: Default key misconfigured 26 | vault-configuration-key: 27 | get: 28 | summary: (internal) Fetch data from VAULT_BUMBLEBEE_OPTIONS 29 | description: > 30 | Fetch data from VAULT_BUMBLEBEE_OPTIONS from the key specified 31 | tags: 32 | - vault 33 | parameters: 34 | - $ref: '../parameters.yaml#/key' 35 | security: 36 | - ApiKeySecurity: [] 37 | responses: 38 | '200': 39 | description: Library link servers or other vault config info 40 | '404': 41 | description: Unknown key 42 | '500': 43 | description: Server misconfiguration 44 | vault-execute_query: 45 | get: 46 | summary: Search using a stored query 47 | description: > 48 | Search using the stored query and return the same data as Search API 49 | endpoint. 50 | 51 | 52 | ## Example response 53 | 54 | 55 | ```JSON 56 | { 57 | "response": { 58 | "docs": [ 59 | { 60 | "id": "10690723" 61 | }, 62 | { 63 | "id": "11057363" 64 | }, 65 | { 66 | "id": "10564749" 67 | }, 68 | { 69 | "id": "10796089" 70 | }, 71 | { 72 | "id": "10867252" 73 | }, 74 | { 75 | "id": "10867221" 76 | }, 77 | { 78 | "id": "10867251" 79 | }, 80 | { 81 | "id": "10867277" 82 | }, 83 | { 84 | "id": "11057812" 85 | } 86 | ], 87 | "numFound": 9, 88 | "start": 0 89 | }, 90 | "responseHeader": { 91 | "QTime": 6, 92 | "params": { 93 | "fl": "id", 94 | "fq": "{!bitset}", 95 | "q": "*:*", 96 | "wt": "json" 97 | }, 98 | "status": 0 99 | } 100 | } 101 | ``` 102 | parameters: 103 | - $ref: '../parameters.yaml#/queryId' 104 | - name: jsonobj 105 | description: >- 106 | You can submit query parameters that override parts of the saved 107 | query. 108 | required: false 109 | in: header 110 | schema: 111 | $ref: '../schemas.yaml#/vaultObject' 112 | tags: 113 | - stored search 114 | security: 115 | - ApiKeySecurity: [] 116 | responses: 117 | '200': 118 | $ref: '../responses.yaml#/SearchResults' 119 | '404': 120 | description: QID object not found 121 | vault-get-myads-user_id: 122 | get: 123 | summary: (pipeline) Fetch myADS profile for a given user 124 | description: > 125 | Fetch a myADS profile, with the notification setups, for a given 126 | user. Used by the myADS pipeline. 127 | tags: 128 | - notifications 129 | security: 130 | - ApiKeySecurity: [] 131 | parameters: 132 | - $ref: '../parameters.yaml#/user_id' 133 | responses: 134 | '200': 135 | description: > 136 | Metadata and constructed queries for all active notification 137 | setups for the user. 138 | content: 139 | application/json: 140 | schema: 141 | $ref: '../schemas.yaml#/myADSsetupResponse' 142 | '404': 143 | description: No notifications found for the given user. 144 | vault-get-myads-user_id-iso_datestring: 145 | get: 146 | summary: (pipeline) Fetch myADS profile for a given user 147 | description: > 148 | Fetch a myADS profile, with the notification setups, for a given 149 | user, using the provided query start date. Used by the myADS pipeline. 150 | tags: 151 | - notifications 152 | security: 153 | - ApiKeySecurity: [] 154 | parameters: 155 | - $ref: '../parameters.yaml#/user_id' 156 | - $ref: '../parameters.yaml#/iso_datestring' 157 | responses: 158 | '200': 159 | description: > 160 | Metadata and constructed queries for all active notification 161 | setups for the user. The start date of the queries will be that 162 | provided as a parameter. 163 | content: 164 | application/json: 165 | schema: 166 | $ref: '../schemas.yaml#/myADSsetupResponse' 167 | '404': 168 | description: No notifications found for the given user. 169 | vault-myads-import: 170 | get: 171 | summary: (internal) Import myADS settings from Classic 172 | description: > 173 | Import myADS settings from Classic for the current user. Fetches 174 | setups from Classic and performs an upsert with the current 175 | myADS settings. 176 | tags: 177 | - notifications 178 | security: 179 | - ApiKeySecurity: [] 180 | responses: 181 | '200': 182 | description: myADS metadata 183 | content: 184 | application/json: 185 | schema: 186 | type: object 187 | properties: 188 | existing: 189 | description: Metadata of existing myADS setups. 190 | type: array 191 | items: 192 | type: object 193 | properties: 194 | id: 195 | type: integer 196 | frequency: 197 | type: string 198 | name: 199 | type: string 200 | template: 201 | type: string 202 | new: 203 | description: Metadata of imported myADS setup. 204 | type: array 205 | items: 206 | type: object 207 | properties: 208 | id: 209 | type: integer 210 | frequency: 211 | type: string 212 | name: 213 | type: string 214 | template: 215 | type: string 216 | '400': 217 | description: Unauthorized 218 | vault-myads-users: 219 | get: 220 | summary: (pipeline) Fetch users updated after the given date/time 221 | description: > 222 | Fetch all myADS users who have updated their profiles after a given 223 | date/time. Used by the myADS pipeline. 224 | tags: 225 | - notifications 226 | security: 227 | - ApiKeySecurity: [] 228 | parameters: 229 | - $ref: '../parameters.yaml#/iso_datestring' 230 | responses: 231 | '200': 232 | description: Recently updated myADS users 233 | content: 234 | application/json: 235 | schema: 236 | type: object 237 | properties: 238 | users: 239 | type: array 240 | items: 241 | type: string 242 | vault-notification_query: 243 | get: 244 | summary: Return a constructed myADS query 245 | description: > 246 | Given a myADS ID for a single notification setup, use the inputed data 247 | to build the full query(ies), ready for execution. 248 | tags: 249 | - notifications 250 | security: 251 | - ApiKeySecurity: [] 252 | parameters: 253 | - $ref: '../parameters.yaml#/myadsId' 254 | responses: 255 | '200': 256 | description: > 257 | Constructed query and sort parameter. For the keyword and arxiv template-type queries, 258 | more than one query and sort parameter will be returned. 259 | content: 260 | application/json: 261 | schema: 262 | type: array 263 | items: 264 | type: object 265 | properties: 266 | q: 267 | type: string 268 | sort: 269 | type: string 270 | '400': 271 | description: Malformed request 272 | '404': 273 | description: Notification not found 274 | vault-notifications: 275 | get: 276 | summary: View all myADS notifications set up for the current user 277 | description: > 278 | View all myADS notifications set up for the current user, associated 279 | with the given API token 280 | tags: 281 | - notifications 282 | security: 283 | - ApiKeySecurity: [] 284 | responses: 285 | '200': 286 | description: Details of notifications set up for the current user 287 | content: 288 | application/json: 289 | schema: 290 | type: array 291 | items: 292 | $ref: '../schemas.yaml#/myADSsummaryResponse' 293 | '400': 294 | description: Malformed request 295 | '404': 296 | description: No notifications found for the given user 297 | post: 298 | summary: Create a myADS notification 299 | description: > 300 | Create a myADS notification for the current user 301 | tags: 302 | - notifications 303 | security: 304 | - ApiKeySecurity: [] 305 | requestBody: 306 | description: > 307 | JSON containing the notifications setup. There are two types of notifications: 308 | 309 | 310 | * template-type notifications: Notify the user about new papers that match a templated query. 311 | The following keywords are required: 312 | 313 | * template: The template to use to construct the query. The options are: 314 | 315 | * arxiv: Meant for daily frequency; notifies of new arXiv papers. Requires the data and classes keywords: 316 | 317 | * classes: (required) Array of arXiv categories and sub-categories to include in notifications 318 | 319 | * data: (optional) Formatted search terms to search for within designated classes. If included, 320 | notifications will include all papers that match the given categories, and papers that match 321 | the search terms in this data keyword will be highlighted. 322 | 323 | * authors: Meant for weekly frequency; notify the user of up to 5 new papers about given authors. 324 | Requires the data keyword: 325 | 326 | * data: (required) Must be formatted as `author:\"Last, First\"` or `orcid:\"ORCID-ID\"`. Can 327 | combine multiple author queries using `OR` 328 | 329 | * citations: Meant for weekly frequency; notify the user of new citations to papers by a given author. 330 | Requires the data keyword: 331 | 332 | * data: (required) Must be formatted as `author:\"Last, First\"` or `orcid:\"ORCID-ID\"` 333 | 334 | * keyword: Meant for weekly frequency; notify the user of new papers matching a given set of 335 | keywords. Three queries are constructed for the given set of search terms: recent papers, 336 | trending papers, and useful papers. Requires the data keyword: 337 | 338 | * data: (required) Formatted search terms or keywords 339 | 340 | * query-type notifications: These notify the user about new papers that match a given query. 341 | The following keywords are required: 342 | 343 | * name: Name to call the notification 344 | 345 | * qid: Query ID returned from the `/vault/query` endpoint, pointing to the stored query 346 | 347 | * frequency: Daily or weekly notification frequency 348 | 349 | * stateful: Set to true to only be notified of new papers; set to false to be notified of 350 | the top matches to a query, whether or not you've seen them before 351 | 352 | content: 353 | application/json: 354 | schema: 355 | type: object 356 | required: 357 | - type 358 | properties: 359 | type: 360 | type: string 361 | enum: 362 | - template 363 | - query 364 | name: 365 | description: Optional for type=template; required for type=query 366 | type: string 367 | qid: 368 | description: Only used for type=query 369 | type: string 370 | active: 371 | description: Set to true to receive this notification 372 | type: boolean 373 | stateful: 374 | description: Only used for type=query 375 | type: boolean 376 | frequency: 377 | type: string 378 | enum: 379 | - daily 380 | - weekly 381 | template: 382 | description: Only used for type=template 383 | type: string 384 | enum: 385 | - arxiv 386 | - authors 387 | - citations 388 | - keyword 389 | classes: 390 | description: Only used for type=template and template=arxiv 391 | type: array 392 | items: 393 | type: string 394 | data: 395 | type: string 396 | responses: 397 | '200': 398 | description: Returns notification setup details 399 | content: 400 | application/json: 401 | schema: 402 | allOf: 403 | - $ref: '../schemas.yaml#/myADSsummaryResponse' 404 | - $ref: '../schemas.yaml#/myADSdetailResponse' 405 | '400': 406 | description: Malformed request 407 | '404': 408 | description: Query associated with give QID does not exist 409 | '500': 410 | description: User does not exist or other error 411 | vault-notifications-myads_id: 412 | get: 413 | summary: View the details for one myADS notification 414 | description: > 415 | View the details for one myADS notification set up for the current user, associated 416 | with the given API token 417 | tags: 418 | - notifications 419 | security: 420 | - ApiKeySecurity: [] 421 | parameters: 422 | - $ref: '../parameters.yaml#/myadsId' 423 | responses: 424 | '200': 425 | description: Details of none otification set up for the current user 426 | content: 427 | application/json: 428 | schema: 429 | allOf: 430 | - $ref: '../schemas.yaml#/myADSsummaryResponse' 431 | - $ref: '../schemas.yaml#/myADSdetailResponse' 432 | '400': 433 | description: Malformed request 434 | '404': 435 | description: Notification not found 436 | put: 437 | summary: Edit the details for one myADS notification 438 | description: > 439 | Edit the details for one myADS notification set up for the current user, associated 440 | with the given API token 441 | tags: 442 | - notifications 443 | security: 444 | - ApiKeySecurity: [] 445 | parameters: 446 | - $ref: '../parameters.yaml#/myadsId' 447 | requestBody: 448 | description: > 449 | JSON containing metadata of notification to edit. 450 | 451 | 452 | Note: only need to include information that needs to be changed. 453 | content: 454 | application/json: 455 | schema: 456 | type: object 457 | properties: 458 | data: 459 | type: string 460 | name: 461 | type: string 462 | classes: 463 | type: array 464 | items: 465 | type: string 466 | active: 467 | type: boolean 468 | stateful: 469 | type: boolean 470 | frequency: 471 | type: string 472 | enum: 473 | - daily 474 | - weekly 475 | responses: 476 | '200': 477 | description: Details of none otification set up for the current user 478 | content: 479 | application/json: 480 | schema: 481 | allOf: 482 | - $ref: '../schemas.yaml#/myADSsummaryResponse' 483 | - $ref: '../schemas.yaml#/myADSdetailResponse' 484 | '400': 485 | description: Malformed request 486 | '404': 487 | description: Notification not found 488 | '500': 489 | description: User does not exist or other error 490 | delete: 491 | summary: Delete one myADS notification 492 | description: > 493 | Delete one myADS notification set up for the current user, associated 494 | with the given API token 495 | tags: 496 | - notifications 497 | security: 498 | - ApiKeySecurity: [] 499 | parameters: 500 | - $ref: '../parameters.yaml#/myadsId' 501 | responses: 502 | '204': 503 | description: Successfully deleted the notification 504 | '404': 505 | description: Notification not found 506 | '500': 507 | description: Error during request 508 | vault-query: 509 | post: 510 | summary: Save a query 511 | description: | 512 | Save a query for later execution. Can be either a regular query or a bigquery. 513 | 514 | ## Example request 515 | 516 | ```bash 517 | $ curl 'https://api.adsabs.harvard.edu/v1/vault/query' -H 'Authorization: Bearer TOKEN' \ 518 | -X POST -d $'{"q":"*:*", "bigquery": "bibcode\\n2015IAUGA..2257982A\\n2015IAUGA..2257768A\\n2015IAUGA..2257639R", "fq": "{!bitset}"}' \ 519 | -H 'Content-Type: application/json' 520 | 521 | > {"qid": "00b39fe4274760f5d8b348815a661ee2", "numFound": 3} 522 | ``` 523 | requestBody: 524 | description: > 525 | JSON object holding the values to submit. 526 | 527 | 528 | Note: to correctly format the POST payload if running a bigquery, 529 | including the newline (\n) characters, in a bash curl request, 530 | use ANSI-C quoting (e.g. `$'...'`) as shown in the examples. 531 | content: 532 | application/json: 533 | schema: 534 | $ref: '../schemas.yaml#/vaultObject' 535 | tags: 536 | - stored search 537 | security: 538 | - ApiKeySecurity: [] 539 | responses: 540 | '200': 541 | $ref: '../responses.yaml#/VaultResponse' 542 | '404': 543 | description: QID object not found 544 | vault-query-queryId: 545 | get: 546 | summary: Retrieve information about a stored query 547 | description: | 548 | Retrive information about the previously stored query. 549 | 550 | ## Example output 551 | 552 | ```JSON 553 | { 554 | "numfound": 9, 555 | "qid": "dcd173130bbbbb957eafd866baf38b2c", 556 | "query": "{\"query\": \"fq=%7B%21bitset%7D&q=%2A%3A%2A\", \"bigquery\": \"bibcode\\n15ASPC..495..40015IAUGA..2257982A\\n2015IAUGA..2257768A\\n2015IAUGA..2257639R\\n2015ASPC..492..208G\\n2015ASPC..492..204F\\n2015ASPC..492..189A\\n2015ASPC..492..150T\\n2015ASPC..492...85E\\n2015ASPC..492...80H\\n2015AAS...22533656H\"}" 557 | } 558 | ``` 559 | parameters: 560 | - $ref: '../parameters.yaml#/queryId' 561 | tags: 562 | - stored search 563 | security: 564 | - ApiKeySecurity: [] 565 | responses: 566 | '200': 567 | $ref: '../responses.yaml#/VaultResponse' 568 | '404': 569 | description: QID object not found 570 | vault-query2svg: 571 | get: 572 | summary: Return an SVG for a stored query 573 | description: > 574 | Returns an SVG for a stored query. The image shows the number of 575 | results returned by the stored query. 576 | tags: 577 | - stored search 578 | security: 579 | - ApiKeySecurity: [] 580 | parameters: 581 | - $ref: '../parameters.yaml#/queryId' 582 | responses: 583 | '200': 584 | description: Code of the SVG image 585 | content: 586 | image/svg+xml: 587 | schema: 588 | type: string 589 | xml: 590 | name: svg 591 | vault-user-data: 592 | get: 593 | summary: (internal) Retrieve user preferences 594 | description: > 595 | Retrieve preferences for the current user. 596 | tags: 597 | - vault 598 | security: 599 | - ApiKeySecurity: [] 600 | responses: 601 | '200': 602 | description: User preferences 603 | content: 604 | application/json: 605 | schema: 606 | type: object 607 | '400': 608 | description: Error with authentication 609 | post: 610 | summary: (internal) Store user preferences 611 | description: > 612 | Store preferences for the current user. 613 | tags: 614 | - vault 615 | security: 616 | - ApiKeySecurity: [] 617 | requestBody: 618 | description: JSON containing only keys/values to update/add. 619 | content: 620 | application/json: 621 | schema: 622 | type: object 623 | responses: 624 | '200': 625 | description: Update successful, all user settings returned 626 | '400': 627 | description: > 628 | Error with authentication; payload error; too many keys stored; 629 | too much data stored 630 | '500': 631 | description: Database error 632 | --------------------------------------------------------------------------------