summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS.md3
-rw-r--r--README.md40
-rw-r--r--TODO24
-rw-r--r--fatcat-openapi2.yml3
-rw-r--r--guide/TODO10
-rw-r--r--notes/test_works.txt11
-rw-r--r--python/README.md41
-rw-r--r--python/TODO6
-rwxr-xr-xpython/codegen_python_client.sh5
-rw-r--r--python/fatcat/templates/base.html1
-rw-r--r--python/fatcat/templates/release_view.html2
-rw-r--r--python/fatcat_client/api/default_api.py20
-rw-r--r--python/tests/grobid_metadata_importer.py8
-rw-r--r--rust/fatcat-api-spec/README.md2
-rw-r--r--rust/fatcat-api-spec/api.yaml207
-rw-r--r--rust/fatcat-api-spec/api/swagger.yaml22
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.
diff --git a/README.md b/README.md
index 3ef66edf..4873af8d 100644
--- a/README.md
+++ b/README.md
@@ -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
diff --git a/TODO b/TODO
index 506c2d2a..c09764d3 100644
--- a/TODO
+++ b/TODO
@@ -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 }}">&nbsp;<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: "{:?}"