swagger: '2.0' info: title: fatcat auth containers API version: 0.5.0 description: 'Fatcat is a scalable, versioned, API-oriented catalog of bibliographic entities and file metadata. These API reference documents, along with client software libraries, are generated automatically from an OpenAPI 2.0 ("Swagger") definition file. ## Introduction A higher-level introduction to the API, as well as a description of the fatcat data model, are available in ["The Fatcat Guide"](https://guide.fatcat.wiki/). The guide also includes a [Cookbook](https://guide.fatcat.wiki/cookbook.html) section demonstrating end-to-end tasks like creating entities as part of editgroups, or safely merging duplicate entities. ### Expectations and Best Practices A test/staging QA API instance of fatcat is available at . The database backing this instance is separate from the production interface, and is periodically rebuilt from snapshots of the full production database, meaning that edits on the QA server will *NOT* persist, and that semantics like the changelog index monotonically increasing *MAY* be broken. Developers are expexcted to test their scripts and tools against the QA instance before running against production. NOTE: as of Spring 2021, the QA server is temporarily unavailable. Fatcat is made available as a gratis (no cost) and libre (freedom preserving) service to the public, with limited funding and resources. We welcome new and unforeseen uses and contributions, but may need to impose restrictions (like rate-limits) to keep the service functional for other users, and in extreme cases reserve the option to block accounts and IP ranges if necessary to keep the service operational. The Internet Archive owns and operates it''s own server equipment and data centers, and operations are optimized for low-cost, not high-availability. Users and partners should expect some downtime on the fatcat API, on the order of hours a month. Periodic metadata exports are available for batch processing, and database snapshots can be used to create locally-hosted mirrors of the service for more intensive and reliable querying. ### Other Nitty Gritties Cross-origin requests are allowed for the API service, to enable third parties to build in-browser applications. A metadata search service is available at . The API is currently the raw elasticsearch API, with only GET (read) requests allowed. This public service is experimental and may be removed or limited in the future. ## Authentication The API allows basic read-only "GET" HTTP requests with no authentication. Proposing changes to the metadata, or other mutating requests ("PUT", "POST", "DELETE") all require authentication, and some operations require additional account permissions. End-user account creation and login happens through the web interface. From a logged-in editor profile page, you can generate a API token. Tokens are "macaroons", similar to JWT tokens, and are used for all API authentication. The web interface includes macaroons in browser cookies and passes them through to the API to authenticate editor actions. ' termsOfService: https://guide.fatcat.wiki/policies.html contact: name: Internet Archive Web Group email: webservices@archive.org url: https://fatcat.wiki x-logo: url: https://fatcat.wiki/static/paper_man_confused.gif altText: Confused Papers Man (Logo) backgroundColor: '#FFFFFF' host: api.fatcat.wiki basePath: /v0 schemes: - https consumes: - application/json produces: - application/json tags: - name: containers x-displayName: Containers description: '**Container** entities represent publication venues like journals, # TAGLINE conference proceedings, book series, or blogs. They group publications # TAGLINE ("releases"). # TAGLINE See the "Catalog Style Guide" section of the guide for details and # TAGLINE semantics of what should be included in specific entity fields. # TAGLINE Specifically, the # TAGLINE [Container Entity Reference](https://guide.fatcat.wiki/entity_container.html). # TAGLINE ' paths: /editgroup/{editgroup_id}/container: parameters: - name: editgroup_id in: path type: string required: true post: operationId: create_container tags: - containers description: 'Create a single Container entity as part of an existing editgroup. Editgroup must be mutable (aka, not accepted) and editor must have permission (aka, have created the editgroup or have `admin` role). ' parameters: - name: entity in: body required: true schema: $ref: '#/definitions/container_entity' security: - Bearer: [] responses: 400: description: Bad Request schema: $ref: '#/definitions/error_response' 404: description: Not Found schema: $ref: '#/definitions/error_response' 500: description: Generic Error schema: $ref: '#/definitions/error_response' 401: description: Not Authorized schema: $ref: '#/definitions/error_response' headers: WWW_Authenticate: type: string 403: description: Forbidden schema: $ref: '#/definitions/error_response' 201: description: Created Entity schema: $ref: '#/definitions/entity_edit' /editgroup/auto/container/batch: post: operationId: create_container_auto_batch tags: - containers description: 'Create a set of Container entities as part of a new editgroup, and accept that editgroup in the same atomic request. This method is mostly useful for bulk import of new entities by carefully written bots. This method is more efficient than creating an editgroup, several entities, then accepting the editgroup, both in terms of API requests required and database load. Requires `admin` role. ' parameters: - name: auto_batch in: body required: true schema: $ref: '#/definitions/container_auto_batch' security: - Bearer: [] responses: 400: description: Bad Request schema: $ref: '#/definitions/error_response' 404: description: Not Found schema: $ref: '#/definitions/error_response' 500: description: Generic Error schema: $ref: '#/definitions/error_response' 401: description: Not Authorized schema: $ref: '#/definitions/error_response' headers: WWW_Authenticate: type: string 403: description: Forbidden schema: $ref: '#/definitions/error_response' 201: description: Created Editgroup schema: $ref: '#/definitions/editgroup' /container/{ident}: parameters: - name: ident in: path type: string required: true get: operationId: get_container tags: - containers description: 'Fetches a single container entity from the catalog. ' parameters: - name: expand in: query type: string required: false description: List of sub-entities to expand in response. For containers, none accepted (yet). - name: hide in: query type: string required: false description: List of entity fields to elide in response. For containers, none accepted (yet). responses: 400: description: Bad Request schema: $ref: '#/definitions/error_response' 404: description: Not Found schema: $ref: '#/definitions/error_response' 500: description: Generic Error schema: $ref: '#/definitions/error_response' 200: description: Found Entity schema: $ref: '#/definitions/container_entity' /editgroup/{editgroup_id}/container/{ident}: parameters: - name: editgroup_id in: path type: string required: true - name: ident in: path type: string required: true put: operationId: update_container tags: - containers description: 'Updates an existing entity as part of a specific (existing) editgroup. The editgroup must be open for updates (aka, not accepted/merged), and the editor making the request must have permissions (aka, must have created the editgroup or have `admin` role). This method can also be used to update an existing entity edit as part of an editgroup. For example, if an entity was created in this editgroup, an editor could make changes to the new entity''s metadata before merging. ' parameters: - name: entity in: body required: true schema: $ref: '#/definitions/container_entity' security: - Bearer: [] responses: 400: description: Bad Request schema: $ref: '#/definitions/error_response' 404: description: Not Found schema: $ref: '#/definitions/error_response' 500: description: Generic Error schema: $ref: '#/definitions/error_response' 401: description: Not Authorized schema: $ref: '#/definitions/error_response' headers: WWW_Authenticate: type: string 403: description: Forbidden schema: $ref: '#/definitions/error_response' 200: description: Updated Entity schema: $ref: '#/definitions/entity_edit' delete: operationId: delete_container tags: - containers description: 'Creates a new "deletion" edit for a specific entity as part of an existing editgroup. This is not the method to use to remove an edit from an editgroup; for that use `delete_container_edit`. ' security: - Bearer: [] responses: 400: description: Bad Request schema: $ref: '#/definitions/error_response' 404: description: Not Found schema: $ref: '#/definitions/error_response' 500: description: Generic Error schema: $ref: '#/definitions/error_response' 401: description: Not Authorized schema: $ref: '#/definitions/error_response' headers: WWW_Authenticate: type: string 403: description: Forbidden schema: $ref: '#/definitions/error_response' 200: description: Deleted Entity schema: $ref: '#/definitions/entity_edit' /container/rev/{rev_id}: parameters: - type: string pattern: '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' minLength: 36 maxLength: 36 description: UUID (lower-case, dash-separated, hex-encoded 128-bit) name: rev_id in: path required: true get: operationId: get_container_revision tags: - containers description: 'Fetches a specific entity revision. Note that the returned revision will not be associated with any particular fatcat identifier (even if one or more identifiers do currently point to this revision). The revision may even be part of an un-merged editgroup. Revisions are immutable and can not be deleted or updated. ' parameters: - name: expand in: query type: string required: false description: List of sub-entities to expand in response. See `get_container`. - name: hide in: query type: string required: false description: List of entity fields to elide in response. See `get_container`. responses: 400: description: Bad Request schema: $ref: '#/definitions/error_response' 404: description: Not Found schema: $ref: '#/definitions/error_response' 500: description: Generic Error schema: $ref: '#/definitions/error_response' 200: description: Found Entity Revision schema: $ref: '#/definitions/container_entity' /container/{ident}/history: parameters: - name: ident in: path type: string required: true - name: limit in: query type: integer format: int64 required: false description: Maximum number of changelog entries to return get: tags: - containers description: 'Fetches the history of accepted edits (changelog entries) for a specific entity fatcat identifier. ' operationId: get_container_history responses: 400: description: Bad Request schema: $ref: '#/definitions/error_response' 404: description: Not Found schema: $ref: '#/definitions/error_response' 500: description: Generic Error schema: $ref: '#/definitions/error_response' 200: description: Found Entity History schema: type: array items: $ref: '#/definitions/entity_history_entry' /container/{ident}/redirects: parameters: - name: ident in: path type: string required: true get: operationId: get_container_redirects tags: - containers description: 'Returns the set of entity identifiers which currently redirect to this identifier. ' responses: 400: description: Bad Request schema: $ref: '#/definitions/error_response' 404: description: Not Found schema: $ref: '#/definitions/error_response' 500: description: Generic Error schema: $ref: '#/definitions/error_response' 200: description: Found Entity Redirects schema: type: array items: type: string pattern: '[a-zA-Z2-7]{26}' minLength: 26 maxLength: 26 description: base32-encoded unique identifier /container/lookup: get: operationId: lookup_container tags: - containers description: 'Looks for an active entity with the given external identifier. If any such entity is found, returns a single complete entity. If multiple entities have the same external identifier, this is considered a soft catalog error, and the behavior of which entity is returned is undefined. One (and only one) external identifier should be specified per request. ' parameters: - type: string pattern: \d{4}-\d{3}[0-9X] minLength: 9 maxLength: 9 name: issnl in: query required: false description: Linking ISSN (ISSN-L); will be one of either ISSN-E or ISSN-P - type: string pattern: \d{4}-\d{3}[0-9X] minLength: 9 maxLength: 9 name: issne in: query required: false description: Electronic ISSN (ISSN-L) - type: string pattern: \d{4}-\d{3}[0-9X] minLength: 9 maxLength: 9 name: issnp in: query required: false description: Print ISSN (ISSN-P) - type: string pattern: \d{4}-\d{3}[0-9X] minLength: 9 maxLength: 9 name: issn in: query required: false description: Any of ISSN-L, ISSN-E, or ISSN-P - name: wikidata_qid in: query type: string required: false - name: expand in: query type: string required: false description: List of sub-entities to expand in response. See `get_container`. - name: hide in: query type: string required: false description: List of entity fields to elide in response. See `get_container`. responses: 400: description: Bad Request schema: $ref: '#/definitions/error_response' 404: description: Not Found schema: $ref: '#/definitions/error_response' 500: description: Generic Error schema: $ref: '#/definitions/error_response' 200: description: Found Entity schema: $ref: '#/definitions/container_entity' /container/edit/{edit_id}: get: operationId: get_container_edit tags: - containers description: 'Returns the entity edit object with the given identifier. This method is expected to be used rarely. ' parameters: - type: string pattern: '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' minLength: 36 maxLength: 36 description: UUID (lower-case, dash-separated, hex-encoded 128-bit) name: edit_id in: path required: true responses: 400: description: Bad Request schema: $ref: '#/definitions/error_response' 404: description: Not Found schema: $ref: '#/definitions/error_response' 500: description: Generic Error schema: $ref: '#/definitions/error_response' 200: description: Found Edit schema: $ref: '#/definitions/entity_edit' /editgroup/{editgroup_id}/container/edit/{edit_id}: parameters: - name: editgroup_id in: path required: true type: string - type: string pattern: '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' minLength: 36 maxLength: 36 description: UUID (lower-case, dash-separated, hex-encoded 128-bit) name: edit_id in: path required: true delete: operationId: delete_container_edit tags: - containers description: 'Removes a single edit from the specified editgroup. The editgroup must be mutable (aka, not accepted/merged), and the editor making this request must have permission (aka, have created the editgroup or hold the `admin` role). Not to be confused with the `delete_container` method, which *creates* a new edit in the given editgroup. ' security: - Bearer: [] responses: 400: description: Bad Request schema: $ref: '#/definitions/error_response' 404: description: Not Found schema: $ref: '#/definitions/error_response' 500: description: Generic Error schema: $ref: '#/definitions/error_response' 401: description: Not Authorized schema: $ref: '#/definitions/error_response' headers: WWW_Authenticate: type: string 403: description: Forbidden schema: $ref: '#/definitions/error_response' 200: description: Deleted Edit schema: $ref: '#/definitions/success' definitions: changelog_entry: type: object required: - index - editgroup_id - timestamp properties: index: type: integer format: int64 description: 'Monotonically increasing sequence number of this changelog entry. ' editgroup_id: type: string example: q3nouwy3nnbsvo3h5klxsx4a7y description: 'Identifier of editgroup accepted/merged in this changelog entry. ' timestamp: type: string format: date-time description: 'Date and time when the editgroup was accpeted. ' editgroup: $ref: '#/definitions/editgroup' container_auto_batch: type: object required: - editgroup - entity_list properties: editgroup: $ref: '#/definitions/editgroup' entity_list: type: array items: $ref: '#/definitions/container_entity' entity_edit: type: object required: - edit_id - ident - editgroup_id properties: edit_id: type: string pattern: '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' minLength: 36 maxLength: 36 description: 'Unique UUID for this specific edit object. ' example: 86daea5b-1b6b-432a-bb67-ea97795f80fe ident: type: string pattern: '[a-zA-Z2-7]{26}' minLength: 26 maxLength: 26 description: 'Fatcat identifier of the entity this edit is mutating. ' example: q3nouwy3nnbsvo3h5klxsx4a7y revision: type: string pattern: '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' minLength: 36 maxLength: 36 description: 'Entity revision that this edit will set the entity to. May be `null` in the case of deletions. ' example: 86daea5b-1b6b-432a-bb67-ea97795f80fe prev_revision: type: string pattern: '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' minLength: 36 maxLength: 36 description: 'Revision of entity just before this edit. May be used in the future to prevent edit race conditions. ' example: 86daea5b-1b6b-432a-bb67-ea97795f80fe redirect_ident: type: string pattern: '[a-zA-Z2-7]{26}' minLength: 26 maxLength: 26 description: 'When an edit is to merge entities (redirect one to another), this is the entity fatcat identifier for the target entity. ' example: q3nouwy3nnbsvo3h5klxsx4a7y editgroup_id: type: string pattern: '[a-zA-Z2-7]{26}' minLength: 26 maxLength: 26 description: 'Editgroup identifier that this edit is part of. ' example: q3nouwy3nnbsvo3h5klxsx4a7y extra: type: object additionalProperties: {} error_response: type: object required: - success - error - message properties: success: type: boolean example: false error: type: string example: unexpected-thing message: type: string example: A really confusing, totally unexpected thing happened container_entity: type: object properties: state: type: string enum: - wip - active - redirect - deleted example: active ident: type: string pattern: '[a-zA-Z2-7]{26}' minLength: 26 maxLength: 26 description: base32-encoded unique identifier example: q3nouwy3nnbsvo3h5klxsx4a7y revision: type: string pattern: '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' minLength: 36 maxLength: 36 description: UUID (lower-case, dash-separated, hex-encoded 128-bit) example: 86daea5b-1b6b-432a-bb67-ea97795f80fe redirect: type: string pattern: '[a-zA-Z2-7]{26}' minLength: 26 maxLength: 26 description: base32-encoded unique identifier example: q3nouwy3nnbsvo3h5klxsx4a7y extra: type: object description: 'Free-form JSON metadata that will be stored with the other entity metadata. See guide for (unenforced) schema conventions. ' additionalProperties: {} edit_extra: type: object description: 'Free-form JSON metadata that will be stored with specific entity edits (eg, creation/update/delete). ' additionalProperties: {} name: type: string description: Name of the container (eg, Journal title). Required for entity creation. example: Journal of Important Results container_type: type: string description: Type of container, eg 'journal' or 'proceedings'. See Guide for list of valid types. example: journal publication_status: type: string description: Whether the container is active, discontinued, etc example: active publisher: type: string description: 'Name of the organization or entity responsible for publication. Not the complete imprint/brand. ' example: Society of Curious Students issnl: type: string pattern: \d{4}-\d{3}[0-9X] minLength: 9 maxLength: 9 example: 1234-5678 description: Linking ISSN number (ISSN-L). Should be valid and registered with issn.org issne: type: string pattern: \d{4}-\d{3}[0-9X] minLength: 9 maxLength: 9 example: 1234-5678 description: Electronic ISSN number (ISSN-E). Should be valid and registered with issn.org issnp: type: string pattern: \d{4}-\d{3}[0-9X] minLength: 9 maxLength: 9 example: 1234-5678 description: Print ISSN number (ISSN-P). Should be valid and registered with issn.org wikidata_qid: type: string example: Q42812 editgroup: type: object properties: editgroup_id: type: string pattern: '[a-zA-Z2-7]{26}' minLength: 26 maxLength: 26 description: 'Fatcat identifier for this editgroup. Assigned on creation. ' example: q3nouwy3nnbsvo3h5klxsx4a7y editor_id: type: string pattern: '[a-zA-Z2-7]{26}' minLength: 26 maxLength: 26 description: 'Fatcat identifier of editor that created this editgroup. ' example: q3nouwy3nnbsvo3h5klxsx4a7y editor: $ref: '#/definitions/editor' description: 'Complete editor object identified by `container_id` field. Only included in GET responses. ' changelog_index: type: integer example: 1048576 format: int64 description: 'For accepted/merged editgroups, the changelog index that the accept occurred at. WARNING: not populated in all contexts that an editgroup could be included in a response. ' created: type: string format: date-time description: 'Timestamp when this editgroup was first created. ' submitted: type: string format: date-time description: 'Timestamp when this editgroup was most recently submitted for review. If withdrawn, or never submitted, will be `null`. ' description: type: string description: 'Comment describing the changes in this editgroup. Can be updated with PUT request. ' extra: type: object additionalProperties: {} description: 'Free-form JSON metadata attached to this editgroup. Eg, metadata provenance, or script user-agent details. See guide for (unenforced) schema norms. ' annotations: type: array items: $ref: '#/definitions/editgroup_annotation' description: 'Only included in GET responses, and not in all contexts. Do not include this field in PUT or POST requests. ' edits: type: object description: 'Only included in GET responses, and not in all contexts. Do not include this field in PUT or POST requests. ' properties: containers: type: array items: $ref: '#/definitions/entity_edit' creators: type: array items: $ref: '#/definitions/entity_edit' files: type: array items: $ref: '#/definitions/entity_edit' filesets: type: array items: $ref: '#/definitions/entity_edit' webcaptures: type: array items: $ref: '#/definitions/entity_edit' releases: type: array items: $ref: '#/definitions/entity_edit' works: type: array items: $ref: '#/definitions/entity_edit' entity_history_entry: type: object required: - edit - editgroup - changelog_entry properties: edit: $ref: '#/definitions/entity_edit' editgroup: $ref: '#/definitions/editgroup' changelog_entry: $ref: '#/definitions/changelog_entry' success: type: object required: - success - message properties: success: type: boolean example: true message: type: string example: The computers did the thing successfully! editgroup_annotation: type: object properties: annotation_id: type: string pattern: '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' minLength: 36 maxLength: 36 description: UUID (lower-case, dash-separated, hex-encoded 128-bit) example: 86daea5b-1b6b-432a-bb67-ea97795f80fe editgroup_id: type: string pattern: '[a-zA-Z2-7]{26}' minLength: 26 maxLength: 26 description: 'Editgroup that this annotation applies to. Set automatically in creations based on URL parameter. ' example: q3nouwy3nnbsvo3h5klxsx4a7y editor_id: type: string pattern: '[a-zA-Z2-7]{26}' minLength: 26 maxLength: 26 description: 'Defaults to editor created the annotation via POST request. ' example: q3nouwy3nnbsvo3h5klxsx4a7y editor: $ref: '#/definitions/editor' description: 'Only included in GET responses; ignored in PUT or POST requests. ' created: type: string format: date-time description: 'Timestamp when annotation was first created. ' comment_markdown: type: string extra: type: object additionalProperties: {} description: 'Additional free-form JSON metadata that can be included as part of the annotation (or even as the primary annotation itself). See guide for details. ' editor: type: object required: - username properties: editor_id: type: string pattern: '[a-zA-Z2-7]{26}' minLength: 26 maxLength: 26 description: 'Fatcat identifier for the editor. Can not be changed. ' example: q3nouwy3nnbsvo3h5klxsx4a7y username: type: string example: zerocool93 description: 'Username/handle (short slug-like string) to identify this editor. May be changed at any time by the editor; use the `editor_id` as a persistend identifier. ' is_admin: type: boolean example: false description: 'Whether this editor has the `admin` role. ' is_bot: type: boolean example: false description: 'Whether this editor is a bot (as opposed to a human making manual edits) ' is_active: type: boolean example: true description: 'Whether this editor''s account is enabled (if not API tokens and web logins will not work). ' securityDefinitions: Bearer: type: apiKey name: Authorization in: header description: "The only current API authentication mechanism is HTTP bearer\nauthentication using the `Authorization` HTTP header. The header should\nbe formatted as the string \"Bearer\", then a space, then API token (in the\nusual base64 string encoding).\n\nAn example HTTP request would look on the wire like:\n\n GET /v0/auth/check HTTP/1.1\n Accept: */*\n Accept-Encoding: gzip, deflate\n Authorization: Bearer AgEPZGV2LmZhdGNhdC53aWtpAhYyMDE5MDEwMS1kZXYtZHVtbXkta2V5AAImZWRpdG9yX2lkID0gYWFhYWFhYWFhYWFhYmt2a2FhYWFhYWFhYWkAAht0aW1lID4gMjAxOS0wMS0wOVQwMDo1Nzo1MloAAAYgnroNha1hSftChtxHGTnLEmM/pY8MeQS/jBSV0UNvXug=\n Connection: keep-alive\n Host: api.qa.fatcat.wiki\n User-Agent: HTTPie/0.9.8\n\nHeaders can be passed on the command line using `http` (HTTPie) like:\n\n http get https://api.qa.fatcat.wiki/v0/auth/check Authorization:\"Bearer AgEPZGV2LmZhdGNhdC53aWtpAhYyMDE5MDEwMS1kZXYtZHVtbXkta2V5AAImZWRpdG9yX2lkID0gYWFhYWFhYWFhYWFhYmt2a2FhYWFhYWFhYWkAAht0aW1lID4gMjAxOS0wMS0wOVQwMDo1Nzo1MloAAAYgnroNha1hSftChtxHGTnLEmM/pY8MeQS/jBSV0UNvXug=\"\n\nOr with `curl`:\n\n curl -H \"Authorization: Bearer AgEPZGV2LmZhdGNhdC53aWtpAhYyMDE5MDEwMS1kZXYtZHVtbXkta2V5AAImZWRpdG9yX2lkID0gYWFhYWFhYWFhYWFhYmt2a2FhYWFhYWFhYWkAAht0aW1lID4gMjAxOS0wMS0wOVQwMDo1Nzo1MloAAAYgnroNha1hSftChtxHGTnLEmM/pY8MeQS/jBSV0UNvXug=\" https://qa.fatcat.wiki/v0/auth/check\n" x-servers: - url: https://api.fatcat.wiki/v0 description: Production Server - url: https://api.qa.fatcat.wiki/v0 description: QA Server x-tagGroups: - name: Entities tags: - containers - creators - files - filesets - webcaptures - releases - works - name: Editing tags: - editors - editgroups - changelog - name: Other tags: - auth x-fatcat-ident: type: string pattern: '[a-zA-Z2-7]{26}' minLength: 26 maxLength: 26 description: base32-encoded unique identifier x-fatcat-ident-example: example: q3nouwy3nnbsvo3h5klxsx4a7y x-fatcat-uuid: type: string pattern: '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' minLength: 36 maxLength: 36 description: UUID (lower-case, dash-separated, hex-encoded 128-bit) x-fatcat-uuid-example: example: 86daea5b-1b6b-432a-bb67-ea97795f80fe x-issn: type: string pattern: \d{4}-\d{3}[0-9X] minLength: 9 maxLength: 9 x-issn-example: example: 1234-5678 x-orcid: type: string pattern: \d{4}-\d{4}-\d{4}-\d{3}[\dX] minLength: 19 maxLength: 19 description: ORCiD (https://orcid.org) identifier x-orcid-example: example: 0000-0002-1825-0097 x-md5: type: string pattern: '[a-f0-9]{32}' minLength: 32 maxLength: 32 description: MD5 hash of data, in hex encoding x-md5-example: example: 1b39813549077b2347c0f370c3864b40 x-sha1: type: string pattern: '[a-f0-9]{40}' minLength: 40 maxLength: 40 description: SHA-1 hash of data, in hex encoding x-sha1-example: example: e9dd75237c94b209dc3ccd52722de6931a310ba3 x-sha256: type: string pattern: '[a-f0-9]{64}' minLength: 64 maxLength: 64 description: SHA-256 hash of data, in hex encoding x-sha256-example: example: cb1c378f464d5935ddaa8de28446d82638396c61f042295d7fb85e3cccc9e452 x-entity-props: state: type: string enum: - wip - active - redirect - deleted example: active ident: type: string pattern: '[a-zA-Z2-7]{26}' minLength: 26 maxLength: 26 description: base32-encoded unique identifier example: q3nouwy3nnbsvo3h5klxsx4a7y revision: type: string pattern: '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' minLength: 36 maxLength: 36 description: UUID (lower-case, dash-separated, hex-encoded 128-bit) example: 86daea5b-1b6b-432a-bb67-ea97795f80fe redirect: type: string pattern: '[a-zA-Z2-7]{26}' minLength: 26 maxLength: 26 description: base32-encoded unique identifier example: q3nouwy3nnbsvo3h5klxsx4a7y extra: type: object description: 'Free-form JSON metadata that will be stored with the other entity metadata. See guide for (unenforced) schema conventions. ' additionalProperties: {} edit_extra: type: object description: 'Free-form JSON metadata that will be stored with specific entity edits (eg, creation/update/delete). ' additionalProperties: {} x-auth-responses: 401: description: Not Authorized schema: $ref: '#/definitions/error_response' headers: WWW_Authenticate: type: string 403: description: Forbidden schema: $ref: '#/definitions/error_response' x-entity-responses: 400: description: Bad Request schema: $ref: '#/definitions/error_response' 404: description: Not Found schema: $ref: '#/definitions/error_response' 500: description: Generic Error schema: $ref: '#/definitions/error_response'