diff options
-rw-r--r-- | CONTRIBUTORS.md | 3 | ||||
-rw-r--r-- | README.md | 40 | ||||
-rw-r--r-- | TODO | 24 | ||||
-rw-r--r-- | fatcat-openapi2.yml | 3 | ||||
-rw-r--r-- | guide/TODO | 10 | ||||
-rw-r--r-- | notes/test_works.txt | 11 | ||||
-rw-r--r-- | python/README.md | 41 | ||||
-rw-r--r-- | python/TODO | 6 | ||||
-rwxr-xr-x | python/codegen_python_client.sh | 5 | ||||
-rw-r--r-- | python/fatcat/templates/base.html | 1 | ||||
-rw-r--r-- | python/fatcat/templates/release_view.html | 2 | ||||
-rw-r--r-- | python/fatcat_client/api/default_api.py | 20 | ||||
-rw-r--r-- | python/tests/grobid_metadata_importer.py | 8 | ||||
-rw-r--r-- | rust/fatcat-api-spec/README.md | 2 | ||||
-rw-r--r-- | rust/fatcat-api-spec/api.yaml | 207 | ||||
-rw-r--r-- | rust/fatcat-api-spec/api/swagger.yaml | 22 |
16 files changed, 226 insertions, 179 deletions
diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md new file mode 100644 index 00000000..414d1a96 --- /dev/null +++ b/CONTRIBUTORS.md @@ -0,0 +1,3 @@ + +Special Thanks to Asheesh Laroia, who reviewed and gave excellent feedback on +the fatcat schemas, structure, and python library in November, 2018. @@ -8,50 +8,54 @@ ... catalog all the things! +This repository contains source code for 'fatcat', an editable catalog of +published written works (mostly journal articles), with a focus on tracking +the location and status of full-text copies to ensure "perpetual access". + The [RFC](./fatcat-rfc.md) is the original design document, and the best place to start for background. There is a work-in-progress "guide" at <https://guide.fatcat.wiki>; the canonical public location of this repository is <https://github.com/internetarchive/fatcat>. -There are four main components: - -- backend API server and database -- elasticsearch index -- API client libraries and bots (eg, ingesters) -- front-end web interface (built on API and library) +There are three main components: -The API server was prototyped in python. "Real" implementation started in -golang, but shifted to Rust, and is work-in-progress. The beginings of a client -library, web interface, and data ingesters exist in python. Elasticsearch index -is currently just a Crossref metadata dump and doesn't match entities in the -database/API (but is useful for paper lookups). +- backend API server and database (in Rust) +- API client libraries and bots (in Python) +- front-end web interface (in Python; built on API and library) See the LICENSE file for details permissions and licensing of both python and rust code. In short, the auto-generated client libraries are permissively released, while the API server and web interface are strong copyleft (AGPLv3). +## Building and Tests + +Automated integration tests run on Gitlab CI (see `.gitlab-ci.yml`) on the +Internet Archive's internal (not public) infrastructure. + ## Status -- HTTP API - - [x] base32 encoding of UUID identifiers - - [x] inverse many-to-many helpers (files-by-release, release-by-creator) -- SQL Schema +- SQL and HTTP API schemas - [x] Basic entities - [x] one-to-many and many-to-many entities - [x] JSON(B) "extra" metadata fields - [x] full rev1 schema for all entities - [ ] editgroup review: comments? actions? + - [ ] file sets and web captures +- HTTP API Server + - [x] base32 encoding of UUID identifiers + - [x] inverse many-to-many helpers (files-by-release, release-by-creator) + - [ ] Authentication (eg, accounts, OAuth2, JWT) + - [ ] Authorization (aka, roles) - Web Interface - [x] Migrate Python codebase - [ ] Creation and editing of all entities - Other + - [x] Elasticsearch schema - [x] Basic logging - [x] Swagger-UI + - [x] Bulk metadata exports - [ ] Sentry (error reporting) - [ ] Metrics - - [ ] Authentication (eg, accounts, OAuth2, JWT) - - [ ] Authorization (aka, roles) - - [ ] bot vs. editor ## Identifiers @@ -2,28 +2,24 @@ ## Next Up - basic webface creation, editing, merging, editgroup approval -- elastic schema/transform for releases; bulk and continuous scripts -## QA Blockers +## Production blockers - refactors and correctness in rust/TODO - importers have editor accounts and include editgroup metadata - -## Production blockers - - enforce single-ident-edit-per-editgroup => entity_edit: entity_ident/entity_editgroup should be UNIQ index => UPDATE/REPLACE edits? - crossref importer sets release_type as "stub" when appropriate - re-implement old python tests -- real auth +- real authentication and authorization - metrics, jwt, config, sentry ## Metadata Import - manifest: multiple URLs per SHA1 - crossref: relations ("is-preprint-of") -- crossref: two phse: no citations, then matched citations (via DOI table) +- crossref: two phase: no citations, then matched citations (via DOI table) - container import (extra?): lang, region, subject - crossref: filter works => content-type whitelist @@ -35,8 +31,10 @@ new importers: - pubmed (medline) (filtered) => and/or, use pubmed ID lookups on crossref import +- arxiv.org +- DOAJ - CORE (filtered) -- semantic scholar (up to 39 million; author de-dupe) +- semantic scholar (up to 39 million; includes author de-dupe) ## Entity/Edit Lifecycle @@ -50,7 +48,7 @@ new importers: ## Guide / Book / Style -- release_type, release_status, url.rel schemas (and enforce in API?) +- release_type, release_status, url.rel schemas (enforced in API) - more+better terms+policies: https://tosdr.org/index.html ## Fun Features @@ -67,12 +65,15 @@ new importers: ## Schema / Entity Fields +- FileSet and WebSnapshot entities - `doi` field for containers (at least for "journal" type; maybe for "series" as well?) - `retracted`, `translation`, and perhaps `corrected` as flags on releases, instead of release_status? +- 'part-of' relation for releases (release to release) and possibly containers +- `container-type` field for containers (journal, conference, book series, etc) -## Other +## Other / Backburner - refactor openapi schema to use shared response types - consider using "HTTP 202: Accepted" for entity-mutating calls @@ -84,8 +85,7 @@ new importers: => proof-of-concept, no tests - add_header Strict-Transport-Security "max-age=3600"; => 12 hours? 24? -- elastic pipeline -- kong or oauth2_proxy for auth, rate-limit, etc +- haproxy for rate-limiting - feature flags: consul? - secrets: vault? - "authn" microservice: https://keratin.tech/ diff --git a/fatcat-openapi2.yml b/fatcat-openapi2.yml index fe1cf3e2..4027ccf4 100644 --- a/fatcat-openapi2.yml +++ b/fatcat-openapi2.yml @@ -5,8 +5,7 @@ info: description: A scalable, versioned, API-oriented catalog of bibliographic entities and file metadata version: 0.1.0 -# Actually HTTPS in QA and production -schemes: [http] +schemes: [https] basePath: /v0 #host: api.fatcat.wiki consumes: diff --git a/guide/TODO b/guide/TODO deleted file mode 100644 index 1c9b7110..00000000 --- a/guide/TODO +++ /dev/null @@ -1,10 +0,0 @@ -- scope - -- quick passes: spellcheck, " I ", "would/will" - -TODO -- roadmap -- revise 'implementation' page with details (hosting costs, etc) - -DONE -- policies diff --git a/notes/test_works.txt b/notes/test_works.txt index 80a37f2f..9eb9af1a 100644 --- a/notes/test_works.txt +++ b/notes/test_works.txt @@ -53,3 +53,14 @@ We have fulltext via long-tail; only Google also has a copy: ## Missing "ACE: A Novel Software Platform to Ensure the Integrity [...]" + +"Periods of Twenty-five Variable Stars in the Small Magellanic Cloud" by +Leavitt, Henrietta +=> shows as a chapter, not the original paper +=> in google scholar as "Periods of 25 Variable Stars in the Small Magellanic Cloud.", as well as several other harvard.edu results + +"Browser history re:visited" +=> no DOI; conference proceeding +=> in google scholar +=> random un-published version at https://www.spinda.net/; "The copy of the + paper hosted here has been updated to reflect [...]" diff --git a/python/README.md b/python/README.md index 1369051a..9ba6b990 100644 --- a/python/README.md +++ b/python/README.md @@ -1,18 +1,47 @@ -## Python Web Interface and API Client Library +## Python Web Interface -Use `pipenv` (which you can install with `pip`). +This project uses `pipenv` to manage dependencies, and assumes Python 3.5 +(which pipenv may install if you are running a different local version). You +can can install `pipenv` with `pip`. You may want to set the +`PIPENV_VENV_IN_PROJECT` environment variable on your development machine (see +pipenv docs for details). +To just run the web interface (which will try to connect to a back-end API +server on the same machine by default), use: + + # will listen on http://localhost:9810 by default pipenv run fatcat_webface.py -Run tests: +## Python Client Library + +An auto-generated python client library for the fatcat API lives under +`./fatcat_client`. It includes entity model objects and functions to call all +API endpoints; see `./README_codegen.md` for details. + +To re-generate swagger-codegen python client library (requires docker installed +locally): + + ./codegen_python_client.sh + +## Running Tests + +Many (though not all) python tests depend on access to a local running API +server (the `fatcatd` rust daemon, code in `../rust/`), which itself depends on +a local PostgreSQL database server. Tests will fail if this endpoint isn't +found. See the README there to get that set up first. The CI integration tests +build and start this daemon automatically. + +To run the python tests (with `fatcatd` running locally on port 9411): pipenv install --dev pipenv run pytest - # for coverage: +To calculate code coverage (of python code): + pipenv run pytest --cov --cov-report html -Regeneate swagger-codegen python client library (requires docker): +To run 'lint' on the code base (note that this is pretty noisy and isn't +enforced by CI yet): - ./codegen_python_client.sh + pipenv run pylint --disable bad-continuation,arguments-differ,unidiomatic-typecheck fatcat diff --git a/python/TODO b/python/TODO index 54b63dd3..7a6eb10f 100644 --- a/python/TODO +++ b/python/TODO @@ -1,4 +1,10 @@ +Idea for new module structure: refactor 'fatcat_client' into 'fatcat' and have +that be the general purpose API client. create a new 'fatcat_services' for web +interface, importers, workers, etc, which depends on the other module. +potentially, move library module into subdirectory or another top-level folder +("python-fatcat"? "python-library"?). + - use dict counter type (in python collections) instead of currently janky counters - schema.org metadata for releases diff --git a/python/codegen_python_client.sh b/python/codegen_python_client.sh index 4cd30c44..3344c214 100755 --- a/python/codegen_python_client.sh +++ b/python/codegen_python_client.sh @@ -6,7 +6,7 @@ set -o pipefail OUTPUT=`pwd`/codegen-out mkdir -p $OUTPUT # Strip tags, so entire API is under a single class -cat ../fatcat-openapi2.yml | grep -v "TAGLINE$" > $OUTPUT/api.yml +cat ../fatcat-openapi2.yml | grep -v "TAGLINE$" | sed 's/\[https\]/\[http\]/g' > $OUTPUT/api.yml docker run \ -v $OUTPUT:/tmp/swagger/ \ @@ -23,4 +23,5 @@ mkdir -p tests/codegen_tests cp -r $OUTPUT/fatcat_client/* fatcat_client cp -r $OUTPUT/test/* tests/codegen_tests cp $OUTPUT/README.md README_codegen.md -#rm -rf $OUTPUT +# safer than 'rm -rf $OUTPUT' +mv $OUTPUT /tmp diff --git a/python/fatcat/templates/base.html b/python/fatcat/templates/base.html index 670d854f..856a6e03 100644 --- a/python/fatcat/templates/base.html +++ b/python/fatcat/templates/base.html @@ -5,6 +5,7 @@ <meta name="viewport" content="width=device-width"> <title>{% block title %}fatcat!{% endblock %}</title> + <meta name="referrer" content="origin-when-cross-origin"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/semantic-ui@2.3.2/dist/semantic.min.css"> <script diff --git a/python/fatcat/templates/release_view.html b/python/fatcat/templates/release_view.html index 3c05653b..39dcf8fd 100644 --- a/python/fatcat/templates/release_view.html +++ b/python/fatcat/templates/release_view.html @@ -22,7 +22,7 @@ <div class="one wide column"></div> <div class="ten wide column" style="font-size: 16px;"> -{% if release.release_date != None %}<p><b>Date (published):</b> {{ release.release_date[:10] }}{% endif %} +{% if release.release_date != None %}<p><b>Date (published):</b> {{ release.release_date }}{% endif %} {% if release.pmid != None %} <br><b>PubMed:</b> <a href="https://www.ncbi.nlm.nih.gov/pubmed/{{ release.pmid }}"> <code>{{ release.pmid }}</code></a> {% endif %} diff --git a/python/fatcat_client/api/default_api.py b/python/fatcat_client/api/default_api.py index a5971279..d3ce3cee 100644 --- a/python/fatcat_client/api/default_api.py +++ b/python/fatcat_client/api/default_api.py @@ -1970,7 +1970,7 @@ class DefaultApi(object): :param async bool :param str id: (required) - :param str expand: List of sub-entities to expand in response. For now, only 'all' accepted. + :param str expand: List of sub-entities to expand in response. For containers, none accepted (yet). :return: ContainerEntity If the method is called asynchronously, returns the request thread. @@ -1992,7 +1992,7 @@ class DefaultApi(object): :param async bool :param str id: (required) - :param str expand: List of sub-entities to expand in response. For now, only 'all' accepted. + :param str expand: List of sub-entities to expand in response. For containers, none accepted (yet). :return: ContainerEntity If the method is called asynchronously, returns the request thread. @@ -2172,7 +2172,7 @@ class DefaultApi(object): :param async bool :param str id: (required) - :param str expand: List of sub-entities to expand in response. For now, only 'all' accepted. + :param str expand: List of sub-entities to expand in response. For creators, none accepted (yet). :return: CreatorEntity If the method is called asynchronously, returns the request thread. @@ -2194,7 +2194,7 @@ class DefaultApi(object): :param async bool :param str id: (required) - :param str expand: List of sub-entities to expand in response. For now, only 'all' accepted. + :param str expand: List of sub-entities to expand in response. For creators, none accepted (yet). :return: CreatorEntity If the method is called asynchronously, returns the request thread. @@ -2770,7 +2770,7 @@ class DefaultApi(object): :param async bool :param str id: (required) - :param str expand: List of sub-entities to expand in response. For now, only 'all' accepted. + :param str expand: List of sub-entities to expand in response. For files, none accepted (yet). :return: FileEntity If the method is called asynchronously, returns the request thread. @@ -2792,7 +2792,7 @@ class DefaultApi(object): :param async bool :param str id: (required) - :param str expand: List of sub-entities to expand in response. For now, only 'all' accepted. + :param str expand: List of sub-entities to expand in response. For files, none accepted (yet). :return: FileEntity If the method is called asynchronously, returns the request thread. @@ -2972,7 +2972,7 @@ class DefaultApi(object): :param async bool :param str id: (required) - :param str expand: List of sub-entities to expand in response. For now, only 'all' accepted. + :param str expand: List of sub-entities to expand in response. For releases, 'files' and 'container' are valid. :return: ReleaseEntity If the method is called asynchronously, returns the request thread. @@ -2994,7 +2994,7 @@ class DefaultApi(object): :param async bool :param str id: (required) - :param str expand: List of sub-entities to expand in response. For now, only 'all' accepted. + :param str expand: List of sub-entities to expand in response. For releases, 'files' and 'container' are valid. :return: ReleaseEntity If the method is called asynchronously, returns the request thread. @@ -3364,7 +3364,7 @@ class DefaultApi(object): :param async bool :param str id: (required) - :param str expand: List of sub-entities to expand in response. For now, only 'all' accepted. + :param str expand: List of sub-entities to expand in response. For works, none accepted (yet). :return: WorkEntity If the method is called asynchronously, returns the request thread. @@ -3386,7 +3386,7 @@ class DefaultApi(object): :param async bool :param str id: (required) - :param str expand: List of sub-entities to expand in response. For now, only 'all' accepted. + :param str expand: List of sub-entities to expand in response. For works, none accepted (yet). :return: WorkEntity If the method is called asynchronously, returns the request thread. diff --git a/python/tests/grobid_metadata_importer.py b/python/tests/grobid_metadata_importer.py index 7bbabb39..2c8565aa 100644 --- a/python/tests/grobid_metadata_importer.py +++ b/python/tests/grobid_metadata_importer.py @@ -1,5 +1,7 @@ +import os import json +import base64 import pytest from fatcat.grobid_metadata_importer import FatcatGrobidMetadataImporter @@ -34,10 +36,12 @@ def test_file_metadata_parse(grobid_metadata_importer): with open('tests/files/example_grobid_metadata_lines.tsv', 'r') as f: f.readline() raw = f.readline().split('\t') + # randomize sha1 so tests are repeatable + random_sha1 = "sha1:{}".format(base64.b32encode(os.urandom(20)).decode('utf-8').upper()) fe = grobid_metadata_importer.parse_file_metadata( - raw[0], json.loads(raw[1]), raw[2], int(raw[3])) + random_sha1, json.loads(raw[1]), raw[2], int(raw[3])) assert fe - assert fe.sha1 == "d4a841744719518bf8bdd5d91576ccedc55efbb5" # "sha1:2SUEC5CHDFIYX6F52XMRK5WM5XCV565V" + #assert fe.sha1 == "d4a841744719518bf8bdd5d91576ccedc55efbb5" # "sha1:2SUEC5CHDFIYX6F52XMRK5WM5XCV565V" assert fe.md5 == None assert fe.mimetype == "application/pdf" assert fe.size == 142710 diff --git a/rust/fatcat-api-spec/README.md b/rust/fatcat-api-spec/README.md index 7f98de30..1a8125d5 100644 --- a/rust/fatcat-api-spec/README.md +++ b/rust/fatcat-api-spec/README.md @@ -13,7 +13,7 @@ To see how to make this your own, look here: [README](https://github.com/swagger-api/swagger-codegen/blob/master/README.md) - API version: 0.1.0 -- Build date: 2018-09-23T00:19:26.675Z +- Build date: 2018-11-13T06:41:46.913Z This autogenerated project defines an API crate `fatcat` which contains: * An `Api` trait defining the API in Rust. diff --git a/rust/fatcat-api-spec/api.yaml b/rust/fatcat-api-spec/api.yaml index f8d16f5b..4027ccf4 100644 --- a/rust/fatcat-api-spec/api.yaml +++ b/rust/fatcat-api-spec/api.yaml @@ -5,8 +5,7 @@ info: description: A scalable, versioned, API-oriented catalog of bibliographic entities and file metadata version: 0.1.0 -# Actually HTTPS in QA and production -schemes: [http] +schemes: [https] basePath: /v0 #host: api.fatcat.wiki consumes: @@ -14,19 +13,19 @@ consumes: produces: - application/json -tags: - - name: containers - descriptions: "Container entities: such as journals, conferences, book series" - - name: creators - descriptions: "Creator entities: such as authors" - - name: files - descriptions: "File entities" - - name: releases - descriptions: "Release entities: individual articles, pre-prints, books" - - name: works - descriptions: "Work entities: grouping releases which are variants of the same work" - - name: edit-lifecycle - descriptions: "Endpoints relating to global edit submission and history" +tags: # TAGLINE + - name: containers # TAGLINE + descriptions: "Container entities: such as journals, conferences, book series" # TAGLINE + - name: creators # TAGLINE + descriptions: "Creator entities: such as authors" # TAGLINE + - name: files # TAGLINE + descriptions: "File entities" # TAGLINE + - name: releases # TAGLINE + descriptions: "Release entities: individual articles, pre-prints, books" # TAGLINE + - name: works # TAGLINE + descriptions: "Work entities: grouping releases which are variants of the same work" # TAGLINE + - name: edit-lifecycle # TAGLINE + descriptions: "Endpoints relating to global edit submission and history" # TAGLINE # don't want these to be rust types (at least for now) x-fatcat-ident: &FATCATIDENT @@ -438,8 +437,8 @@ paths: /container: post: operationId: "create_container" - tags: - - containers + tags: # TAGLINE + - containers # TAGLINE parameters: - name: entity in: body @@ -459,8 +458,8 @@ paths: /container/batch: post: operationId: "create_container_batch" - tags: - - containers + tags: # TAGLINE + - containers # TAGLINE parameters: - name: autoaccept in: query @@ -495,14 +494,14 @@ paths: required: true get: operationId: "get_container" - tags: - - containers + tags: # TAGLINE + - containers # TAGLINE parameters: - name: expand in: query type: string required: false - description: "List of sub-entities to expand in response. For now, only 'all' accepted." + description: "List of sub-entities to expand in response. For containers, none accepted (yet)." responses: 200: description: Found Entity @@ -511,8 +510,8 @@ paths: <<: *ENTITYRESPONSES put: operationId: "update_container" - tags: - - containers + tags: # TAGLINE + - containers # TAGLINE parameters: - name: entity in: body @@ -531,8 +530,8 @@ paths: <<: *ENTITYRESPONSES delete: operationId: "delete_container" - tags: - - containers + tags: # TAGLINE + - containers # TAGLINE parameters: - name: editgroup in: query @@ -556,8 +555,8 @@ paths: format: int64 required: false get: - tags: - - containers + tags: # TAGLINE + - containers # TAGLINE operationId: "get_container_history" responses: 200: @@ -570,8 +569,8 @@ paths: /container/lookup: get: operationId: "lookup_container" - tags: - - containers + tags: # TAGLINE + - containers # TAGLINE parameters: - name: issnl in: query @@ -586,8 +585,8 @@ paths: /creator: post: operationId: "create_creator" - tags: - - creators + tags: # TAGLINE + - creators # TAGLINE parameters: - name: entity in: body @@ -607,8 +606,8 @@ paths: /creator/batch: post: operationId: "create_creator_batch" - tags: - - creators + tags: # TAGLINE + - creators # TAGLINE parameters: - name: autoaccept in: query @@ -643,14 +642,14 @@ paths: required: true get: operationId: "get_creator" - tags: - - creators + tags: # TAGLINE + - creators # TAGLINE parameters: - name: expand in: query type: string required: false - description: "List of sub-entities to expand in response. For now, only 'all' accepted." + description: "List of sub-entities to expand in response. For creators, none accepted (yet)." responses: 200: description: Found Entity @@ -659,8 +658,8 @@ paths: <<: *ENTITYRESPONSES put: operationId: "update_creator" - tags: - - creators + tags: # TAGLINE + - creators # TAGLINE parameters: - name: entity in: body @@ -679,8 +678,8 @@ paths: <<: *ENTITYRESPONSES delete: operationId: "delete_creator" - tags: - - creators + tags: # TAGLINE + - creators # TAGLINE parameters: - name: editgroup in: query @@ -705,8 +704,8 @@ paths: required: false get: operationId: "get_creator_history" - tags: - - creators + tags: # TAGLINE + - creators # TAGLINE responses: 200: description: Found Entity History @@ -723,8 +722,8 @@ paths: required: true get: operationId: "get_creator_releases" - tags: - - creators + tags: # TAGLINE + - creators # TAGLINE responses: 200: description: Found @@ -736,8 +735,8 @@ paths: /creator/lookup: get: operationId: "lookup_creator" - tags: - - creators + tags: # TAGLINE + - creators # TAGLINE parameters: - name: orcid in: query @@ -752,8 +751,8 @@ paths: /file: post: operationId: "create_file" - tags: - - files + tags: # TAGLINE + - files # TAGLINE parameters: - name: entity in: body @@ -773,8 +772,8 @@ paths: /file/batch: post: operationId: "create_file_batch" - tags: - - files + tags: # TAGLINE + - files # TAGLINE parameters: - name: autoaccept in: query @@ -809,14 +808,14 @@ paths: required: true get: operationId: "get_file" - tags: - - files + tags: # TAGLINE + - files # TAGLINE parameters: - name: expand in: query type: string required: false - description: "List of sub-entities to expand in response. For now, only 'all' accepted." + description: "List of sub-entities to expand in response. For files, none accepted (yet)." responses: 200: description: Found Entity @@ -825,8 +824,8 @@ paths: <<: *ENTITYRESPONSES put: operationId: "update_file" - tags: - - files + tags: # TAGLINE + - files # TAGLINE parameters: - name: entity in: body @@ -845,8 +844,8 @@ paths: <<: *ENTITYRESPONSES delete: operationId: "delete_file" - tags: - - files + tags: # TAGLINE + - files # TAGLINE parameters: - name: editgroup in: query @@ -871,8 +870,8 @@ paths: required: false get: operationId: "get_file_history" - tags: - - files + tags: # TAGLINE + - files # TAGLINE responses: 200: description: Found Entity History @@ -884,8 +883,8 @@ paths: /file/lookup: get: operationId: "lookup_file" - tags: - - files + tags: # TAGLINE + - files # TAGLINE parameters: - name: sha1 in: query @@ -900,8 +899,8 @@ paths: /release: post: operationId: "create_release" - tags: - - releases + tags: # TAGLINE + - releases # TAGLINE parameters: - name: entity in: body @@ -921,8 +920,8 @@ paths: /release/batch: post: operationId: "create_release_batch" - tags: - - releases + tags: # TAGLINE + - releases # TAGLINE parameters: - name: autoaccept in: query @@ -957,14 +956,14 @@ paths: required: true get: operationId: "get_release" - tags: - - releases + tags: # TAGLINE + - releases # TAGLINE parameters: - name: expand in: query type: string required: false - description: "List of sub-entities to expand in response. For now, only 'all' accepted." + description: "List of sub-entities to expand in response. For releases, 'files' and 'container' are valid." responses: 200: description: Found Entity @@ -973,8 +972,8 @@ paths: <<: *ENTITYRESPONSES put: operationId: "update_release" - tags: - - releases + tags: # TAGLINE + - releases # TAGLINE parameters: - name: entity in: body @@ -993,8 +992,8 @@ paths: <<: *ENTITYRESPONSES delete: operationId: "delete_release" - tags: - - releases + tags: # TAGLINE + - releases # TAGLINE parameters: - name: editgroup in: query @@ -1019,8 +1018,8 @@ paths: required: false get: operationId: "get_release_history" - tags: - - releases + tags: # TAGLINE + - releases # TAGLINE responses: 200: description: Found Entity History @@ -1037,8 +1036,8 @@ paths: required: true get: operationId: "get_release_files" - tags: - - releases + tags: # TAGLINE + - releases # TAGLINE responses: 200: description: Found @@ -1050,8 +1049,8 @@ paths: /release/lookup: get: operationId: "lookup_release" - tags: - - releases + tags: # TAGLINE + - releases # TAGLINE parameters: - name: doi in: query @@ -1066,8 +1065,8 @@ paths: /work: post: operationId: "create_work" - tags: - - releases + tags: # TAGLINE + - releases # TAGLINE parameters: - name: entity in: body @@ -1087,8 +1086,8 @@ paths: /work/batch: post: operationId: "create_work_batch" - tags: - - works + tags: # TAGLINE + - works # TAGLINE parameters: - name: autoaccept in: query @@ -1123,14 +1122,14 @@ paths: required: true get: operationId: "get_work" - tags: - - works + tags: # TAGLINE + - works # TAGLINE parameters: - name: expand in: query type: string required: false - description: "List of sub-entities to expand in response. For now, only 'all' accepted." + description: "List of sub-entities to expand in response. For works, none accepted (yet)." responses: 200: description: Found Entity @@ -1139,8 +1138,8 @@ paths: <<: *ENTITYRESPONSES put: operationId: "update_work" - tags: - - works + tags: # TAGLINE + - works # TAGLINE parameters: - name: entity in: body @@ -1159,8 +1158,8 @@ paths: <<: *ENTITYRESPONSES delete: operationId: "delete_work" - tags: - - works + tags: # TAGLINE + - works # TAGLINE parameters: - name: editgroup in: query @@ -1185,8 +1184,8 @@ paths: required: false get: operationId: "get_work_history" - tags: - - works + tags: # TAGLINE + - works # TAGLINE responses: 200: description: Found Entity History @@ -1203,8 +1202,8 @@ paths: required: true get: operationId: "get_work_releases" - tags: - - works + tags: # TAGLINE + - works # TAGLINE responses: 200: description: Found @@ -1268,8 +1267,8 @@ paths: /editgroup: post: operationId: "create_editgroup" - tags: - - edit-lifecycle + tags: # TAGLINE + - edit-lifecycle # TAGLINE parameters: - name: editgroup in: body @@ -1297,8 +1296,8 @@ paths: <<: *FATCATIDENT get: operationId: "get_editgroup" - tags: - - edit-lifecycle + tags: # TAGLINE + - edit-lifecycle # TAGLINE responses: 200: description: Found @@ -1324,8 +1323,8 @@ paths: <<: *FATCATIDENT post: operationId: "accept_editgroup" - tags: - - edit-lifecycle + tags: # TAGLINE + - edit-lifecycle # TAGLINE responses: 200: description: Merged Successfully @@ -1356,8 +1355,8 @@ paths: required: false get: operationId: "get_changelog" - tags: - - edit-lifecycle + tags: # TAGLINE + - edit-lifecycle # TAGLINE responses: 200: description: Success @@ -1378,8 +1377,8 @@ paths: required: true get: operationId: "get_changelog_entry" - tags: - - edit-lifecycle + tags: # TAGLINE + - edit-lifecycle # TAGLINE responses: 200: description: Found Changelog Entry diff --git a/rust/fatcat-api-spec/api/swagger.yaml b/rust/fatcat-api-spec/api/swagger.yaml index f0f4cf05..71d7fa78 100644 --- a/rust/fatcat-api-spec/api/swagger.yaml +++ b/rust/fatcat-api-spec/api/swagger.yaml @@ -14,7 +14,7 @@ tags: - name: "works" - name: "edit-lifecycle" schemes: -- "http" +- "https" consumes: - "application/json" produces: @@ -179,8 +179,8 @@ paths: example: "\"id_example\".to_string()" - name: "expand" in: "query" - description: "List of sub-entities to expand in response. For now, only 'all'\ - \ accepted." + description: "List of sub-entities to expand in response. For containers,\ + \ none accepted (yet)." required: false type: "string" formatString: "{:?}" @@ -637,8 +637,8 @@ paths: example: "\"id_example\".to_string()" - name: "expand" in: "query" - description: "List of sub-entities to expand in response. For now, only 'all'\ - \ accepted." + description: "List of sub-entities to expand in response. For creators, none\ + \ accepted (yet)." required: false type: "string" formatString: "{:?}" @@ -1151,8 +1151,8 @@ paths: example: "\"id_example\".to_string()" - name: "expand" in: "query" - description: "List of sub-entities to expand in response. For now, only 'all'\ - \ accepted." + description: "List of sub-entities to expand in response. For files, none\ + \ accepted (yet)." required: false type: "string" formatString: "{:?}" @@ -1606,8 +1606,8 @@ paths: example: "\"id_example\".to_string()" - name: "expand" in: "query" - description: "List of sub-entities to expand in response. For now, only 'all'\ - \ accepted." + description: "List of sub-entities to expand in response. For releases, 'files'\ + \ and 'container' are valid." required: false type: "string" formatString: "{:?}" @@ -2117,8 +2117,8 @@ paths: example: "\"id_example\".to_string()" - name: "expand" in: "query" - description: "List of sub-entities to expand in response. For now, only 'all'\ - \ accepted." + description: "List of sub-entities to expand in response. For works, none\ + \ accepted (yet)." required: false type: "string" formatString: "{:?}" |