---
swagger: "2.0"
info:
  description: "A scalable, versioned, API-oriented catalog of bibliographic entities\
    \ and file metadata"
  version: "0.2.0"
  title: "fatcat"
host: "api.fatcat.wiki"
basePath: "/v0"
tags:
- name: "containers"
- name: "creators"
- name: "files"
- name: "filesets"
- name: "webcaptures"
- name: "releases"
- name: "works"
- name: "edit-lifecycle"
schemes:
- "https"
consumes:
- "application/json"
produces:
- "application/json"
paths:
  /container:
    post:
      tags:
      - "containers"
      operationId: "create_container"
      parameters:
      - in: "body"
        name: "entity"
        required: true
        schema:
          $ref: "#/definitions/container_entity"
        uppercase_data_type: "CONTAINERENTITY"
        refName: "container_entity"
        formatString: "{:?}"
        example: "???"
        model_key: "editgroup_edits"
        uppercase_operation_id: "CREATE_CONTAINER"
        consumesJson: true
      - name: "editgroup_id"
        in: "query"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"editgroup_id_example\".to_string()"
      responses:
        201:
          description: "Created Entity"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "CreatedEntity"
          x-uppercaseResponseId: "CREATED_ENTITY"
          uppercase_operation_id: "CREATE_CONTAINER"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "CREATE_CONTAINER"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "CREATE_CONTAINER"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "CREATE_CONTAINER"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "CREATE_CONTAINER"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "CREATE_CONTAINER"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "create_container"
      uppercase_operation_id: "CREATE_CONTAINER"
      path: "/container"
      HttpMethod: "Post"
      httpmethod: "post"
      noClientExample: true
  /container/batch:
    post:
      tags:
      - "containers"
      operationId: "create_container_batch"
      parameters:
      - name: "autoaccept"
        in: "query"
        description: "If true, and editor is authorized, batch is accepted all at\
          \ once"
        required: false
        type: "boolean"
        formatString: "{:?}"
        example: "Some(true)"
      - name: "editgroup_id"
        in: "query"
        description: "Editgroup to auto-accept and apply to all entities (required\
          \ if 'autoaccept' is True)"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"editgroup_id_example\".to_string())"
      - name: "description"
        in: "query"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"description_example\".to_string())"
      - name: "extra"
        in: "query"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"extra_example\".to_string())"
      - in: "body"
        name: "entity_list"
        required: true
        schema:
          type: "array"
          items:
            $ref: "#/definitions/container_entity"
        formatString: "{:?}"
        example: "&Vec::new()"
        model_key: "editgroup_edits"
        uppercase_operation_id: "CREATE_CONTAINER_BATCH"
        consumesJson: true
      responses:
        201:
          description: "Created Entities"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/entity_edit"
          x-responseId: "CreatedEntities"
          x-uppercaseResponseId: "CREATED_ENTITIES"
          uppercase_operation_id: "CREATE_CONTAINER_BATCH"
          uppercase_data_type: "VEC<ENTITYEDIT>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "CREATE_CONTAINER_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "CREATE_CONTAINER_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "CREATE_CONTAINER_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "CREATE_CONTAINER_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "CREATE_CONTAINER_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "create_container_batch"
      uppercase_operation_id: "CREATE_CONTAINER_BATCH"
      path: "/container/batch"
      HttpMethod: "Post"
      httpmethod: "post"
  /container/{ident}:
    get:
      tags:
      - "containers"
      operationId: "get_container"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - name: "expand"
        in: "query"
        description: "List of sub-entities to expand in response. For containers,\
          \ none accepted (yet)."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"expand_example\".to_string())"
      - name: "hide"
        in: "query"
        description: "List of entity fields to elide in response. For containers,\
          \ none accepted (yet)."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"hide_example\".to_string())"
      responses:
        200:
          description: "Found Entity"
          schema:
            $ref: "#/definitions/container_entity"
          x-responseId: "FoundEntity"
          x-uppercaseResponseId: "FOUND_ENTITY"
          uppercase_operation_id: "GET_CONTAINER"
          uppercase_data_type: "CONTAINERENTITY"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_CONTAINER"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_CONTAINER"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_CONTAINER"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_container"
      uppercase_operation_id: "GET_CONTAINER"
      path: "/container/:ident"
      HttpMethod: "Get"
      httpmethod: "get"
    put:
      tags:
      - "containers"
      operationId: "update_container"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - in: "body"
        name: "entity"
        required: true
        schema:
          $ref: "#/definitions/container_entity"
        uppercase_data_type: "CONTAINERENTITY"
        refName: "container_entity"
        formatString: "{:?}"
        example: "???"
        model_key: "editgroup_edits"
        uppercase_operation_id: "UPDATE_CONTAINER"
        consumesJson: true
      - name: "editgroup_id"
        in: "query"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"editgroup_id_example\".to_string()"
      responses:
        200:
          description: "Updated Entity"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "UpdatedEntity"
          x-uppercaseResponseId: "UPDATED_ENTITY"
          uppercase_operation_id: "UPDATE_CONTAINER"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "UPDATE_CONTAINER"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "UPDATE_CONTAINER"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "UPDATE_CONTAINER"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "UPDATE_CONTAINER"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "UPDATE_CONTAINER"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "update_container"
      uppercase_operation_id: "UPDATE_CONTAINER"
      path: "/container/:ident"
      HttpMethod: "Put"
      httpmethod: "put"
      noClientExample: true
    delete:
      tags:
      - "containers"
      operationId: "delete_container"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - name: "editgroup_id"
        in: "query"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"editgroup_id_example\".to_string()"
      responses:
        200:
          description: "Deleted Entity"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "DeletedEntity"
          x-uppercaseResponseId: "DELETED_ENTITY"
          uppercase_operation_id: "DELETE_CONTAINER"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "DELETE_CONTAINER"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "DELETE_CONTAINER"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "DELETE_CONTAINER"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "DELETE_CONTAINER"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "DELETE_CONTAINER"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "delete_container"
      uppercase_operation_id: "DELETE_CONTAINER"
      path: "/container/:ident"
      HttpMethod: "Delete"
      httpmethod: "delete"
  /container/rev/{rev_id}:
    get:
      tags:
      - "containers"
      operationId: "get_container_revision"
      parameters:
      - name: "rev_id"
        in: "path"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        required: true
        type: "string"
        maxLength: 36
        minLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
        formatString: "\\\"{}\\\""
        example: "\"rev_id_example\".to_string()"
      - name: "expand"
        in: "query"
        description: "List of sub-entities to expand in response. For containers,\
          \ none accepted (yet)."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"expand_example\".to_string())"
      - name: "hide"
        in: "query"
        description: "List of entity fields to elide in response. For containers,\
          \ none accepted (yet)."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"hide_example\".to_string())"
      responses:
        200:
          description: "Found Entity Revision"
          schema:
            $ref: "#/definitions/container_entity"
          x-responseId: "FoundEntityRevision"
          x-uppercaseResponseId: "FOUND_ENTITY_REVISION"
          uppercase_operation_id: "GET_CONTAINER_REVISION"
          uppercase_data_type: "CONTAINERENTITY"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_CONTAINER_REVISION"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_CONTAINER_REVISION"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_CONTAINER_REVISION"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_container_revision"
      uppercase_operation_id: "GET_CONTAINER_REVISION"
      path: "/container/rev/:rev_id"
      HttpMethod: "Get"
      httpmethod: "get"
  /container/{ident}/history:
    get:
      tags:
      - "containers"
      operationId: "get_container_history"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - name: "limit"
        in: "query"
        required: false
        type: "integer"
        format: "int64"
        formatString: "{:?}"
        example: "Some(789)"
      responses:
        200:
          description: "Found Entity History"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/entity_history_entry"
          x-responseId: "FoundEntityHistory"
          x-uppercaseResponseId: "FOUND_ENTITY_HISTORY"
          uppercase_operation_id: "GET_CONTAINER_HISTORY"
          uppercase_data_type: "VEC<ENTITYHISTORYENTRY>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_CONTAINER_HISTORY"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_CONTAINER_HISTORY"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_CONTAINER_HISTORY"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_container_history"
      uppercase_operation_id: "GET_CONTAINER_HISTORY"
      path: "/container/:ident/history"
      HttpMethod: "Get"
      httpmethod: "get"
  /container/{ident}/redirects:
    get:
      tags:
      - "containers"
      operationId: "get_container_redirects"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      responses:
        200:
          description: "Found Entity Redirects"
          schema:
            type: "array"
            items:
              type: "string"
              example: "q3nouwy3nnbsvo3h5klxsx4a7y"
              description: "base32-encoded unique identifier"
              minLength: 26
              maxLength: 26
              pattern: "[a-zA-Z2-7]{26}"
          x-responseId: "FoundEntityRedirects"
          x-uppercaseResponseId: "FOUND_ENTITY_REDIRECTS"
          uppercase_operation_id: "GET_CONTAINER_REDIRECTS"
          uppercase_data_type: "VEC<STRING>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_CONTAINER_REDIRECTS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_CONTAINER_REDIRECTS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_CONTAINER_REDIRECTS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_container_redirects"
      uppercase_operation_id: "GET_CONTAINER_REDIRECTS"
      path: "/container/:ident/redirects"
      HttpMethod: "Get"
      httpmethod: "get"
  /container/lookup:
    get:
      tags:
      - "containers"
      operationId: "lookup_container"
      parameters:
      - name: "issnl"
        in: "query"
        required: false
        type: "string"
        maxLength: 9
        minLength: 9
        pattern: "\\d{4}-\\d{3}[0-9X]"
        formatString: "{:?}"
        example: "Some(\"issnl_example\".to_string())"
      - name: "wikidata_qid"
        in: "query"
        required: false
        formatString: "{:?}"
        example: "Some(\"wikidata_qid_example\".to_string())"
      - name: "expand"
        in: "query"
        description: "List of sub-entities to expand in response."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"expand_example\".to_string())"
      - name: "hide"
        in: "query"
        description: "List of entity fields to elide in response. For container, none\
          \ accepted (yet)."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"hide_example\".to_string())"
      responses:
        200:
          description: "Found Entity"
          schema:
            $ref: "#/definitions/container_entity"
          x-responseId: "FoundEntity"
          x-uppercaseResponseId: "FOUND_ENTITY"
          uppercase_operation_id: "LOOKUP_CONTAINER"
          uppercase_data_type: "CONTAINERENTITY"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "LOOKUP_CONTAINER"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "LOOKUP_CONTAINER"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "LOOKUP_CONTAINER"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "lookup_container"
      uppercase_operation_id: "LOOKUP_CONTAINER"
      path: "/container/lookup"
      HttpMethod: "Get"
      httpmethod: "get"
  /container/edit/{edit_id}:
    get:
      tags:
      - "containers"
      operationId: "get_container_edit"
      parameters:
      - name: "edit_id"
        in: "path"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        required: true
        type: "string"
        maxLength: 36
        minLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
        formatString: "\\\"{}\\\""
        example: "\"edit_id_example\".to_string()"
      responses:
        200:
          description: "Found Edit"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "FoundEdit"
          x-uppercaseResponseId: "FOUND_EDIT"
          uppercase_operation_id: "GET_CONTAINER_EDIT"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_CONTAINER_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_CONTAINER_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_CONTAINER_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_container_edit"
      uppercase_operation_id: "GET_CONTAINER_EDIT"
      path: "/container/edit/:edit_id"
      HttpMethod: "Get"
      httpmethod: "get"
    delete:
      tags:
      - "containers"
      operationId: "delete_container_edit"
      parameters:
      - name: "edit_id"
        in: "path"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        required: true
        type: "string"
        maxLength: 36
        minLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
        formatString: "\\\"{}\\\""
        example: "\"edit_id_example\".to_string()"
      responses:
        200:
          description: "Deleted Edit"
          schema:
            $ref: "#/definitions/success"
          x-responseId: "DeletedEdit"
          x-uppercaseResponseId: "DELETED_EDIT"
          uppercase_operation_id: "DELETE_CONTAINER_EDIT"
          uppercase_data_type: "SUCCESS"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "DELETE_CONTAINER_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "DELETE_CONTAINER_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "DELETE_CONTAINER_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "DELETE_CONTAINER_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "DELETE_CONTAINER_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "delete_container_edit"
      uppercase_operation_id: "DELETE_CONTAINER_EDIT"
      path: "/container/edit/:edit_id"
      HttpMethod: "Delete"
      httpmethod: "delete"
  /creator:
    post:
      tags:
      - "creators"
      operationId: "create_creator"
      parameters:
      - in: "body"
        name: "entity"
        required: true
        schema:
          $ref: "#/definitions/creator_entity"
        uppercase_data_type: "CREATORENTITY"
        refName: "creator_entity"
        formatString: "{:?}"
        example: "???"
        model_key: "editgroup_edits"
        uppercase_operation_id: "CREATE_CREATOR"
        consumesJson: true
      - name: "editgroup_id"
        in: "query"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"editgroup_id_example\".to_string()"
      responses:
        201:
          description: "Created Entity"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "CreatedEntity"
          x-uppercaseResponseId: "CREATED_ENTITY"
          uppercase_operation_id: "CREATE_CREATOR"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "CREATE_CREATOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "CREATE_CREATOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "CREATE_CREATOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "CREATE_CREATOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "CREATE_CREATOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "create_creator"
      uppercase_operation_id: "CREATE_CREATOR"
      path: "/creator"
      HttpMethod: "Post"
      httpmethod: "post"
      noClientExample: true
  /creator/batch:
    post:
      tags:
      - "creators"
      operationId: "create_creator_batch"
      parameters:
      - name: "autoaccept"
        in: "query"
        description: "If true, and editor is authorized, batch is accepted all at\
          \ once"
        required: false
        type: "boolean"
        formatString: "{:?}"
        example: "Some(true)"
      - name: "editgroup_id"
        in: "query"
        description: "Editgroup to auto-accept and apply to all entities (required\
          \ if 'autoaccept' is True)"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"editgroup_id_example\".to_string())"
      - name: "description"
        in: "query"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"description_example\".to_string())"
      - name: "extra"
        in: "query"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"extra_example\".to_string())"
      - in: "body"
        name: "entity_list"
        required: true
        schema:
          type: "array"
          items:
            $ref: "#/definitions/creator_entity"
        formatString: "{:?}"
        example: "&Vec::new()"
        model_key: "editgroup_edits"
        uppercase_operation_id: "CREATE_CREATOR_BATCH"
        consumesJson: true
      responses:
        201:
          description: "Created Entities"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/entity_edit"
          x-responseId: "CreatedEntities"
          x-uppercaseResponseId: "CREATED_ENTITIES"
          uppercase_operation_id: "CREATE_CREATOR_BATCH"
          uppercase_data_type: "VEC<ENTITYEDIT>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "CREATE_CREATOR_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "CREATE_CREATOR_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "CREATE_CREATOR_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "CREATE_CREATOR_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "CREATE_CREATOR_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "create_creator_batch"
      uppercase_operation_id: "CREATE_CREATOR_BATCH"
      path: "/creator/batch"
      HttpMethod: "Post"
      httpmethod: "post"
  /creator/{ident}:
    get:
      tags:
      - "creators"
      operationId: "get_creator"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - name: "expand"
        in: "query"
        description: "List of sub-entities to expand in response. For creators, none\
          \ accepted (yet)."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"expand_example\".to_string())"
      - name: "hide"
        in: "query"
        description: "List of entity fields to elide in response. For containers,\
          \ none accepted (yet)."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"hide_example\".to_string())"
      responses:
        200:
          description: "Found Entity"
          schema:
            $ref: "#/definitions/creator_entity"
          x-responseId: "FoundEntity"
          x-uppercaseResponseId: "FOUND_ENTITY"
          uppercase_operation_id: "GET_CREATOR"
          uppercase_data_type: "CREATORENTITY"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_CREATOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_CREATOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_CREATOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_creator"
      uppercase_operation_id: "GET_CREATOR"
      path: "/creator/:ident"
      HttpMethod: "Get"
      httpmethod: "get"
    put:
      tags:
      - "creators"
      operationId: "update_creator"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - in: "body"
        name: "entity"
        required: true
        schema:
          $ref: "#/definitions/creator_entity"
        uppercase_data_type: "CREATORENTITY"
        refName: "creator_entity"
        formatString: "{:?}"
        example: "???"
        model_key: "editgroup_edits"
        uppercase_operation_id: "UPDATE_CREATOR"
        consumesJson: true
      - name: "editgroup_id"
        in: "query"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"editgroup_id_example\".to_string()"
      responses:
        200:
          description: "Updated Entity"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "UpdatedEntity"
          x-uppercaseResponseId: "UPDATED_ENTITY"
          uppercase_operation_id: "UPDATE_CREATOR"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "UPDATE_CREATOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "UPDATE_CREATOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "UPDATE_CREATOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "UPDATE_CREATOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "UPDATE_CREATOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "update_creator"
      uppercase_operation_id: "UPDATE_CREATOR"
      path: "/creator/:ident"
      HttpMethod: "Put"
      httpmethod: "put"
      noClientExample: true
    delete:
      tags:
      - "creators"
      operationId: "delete_creator"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - name: "editgroup_id"
        in: "query"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"editgroup_id_example\".to_string()"
      responses:
        200:
          description: "Deleted Entity"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "DeletedEntity"
          x-uppercaseResponseId: "DELETED_ENTITY"
          uppercase_operation_id: "DELETE_CREATOR"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "DELETE_CREATOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "DELETE_CREATOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "DELETE_CREATOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "DELETE_CREATOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "DELETE_CREATOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "delete_creator"
      uppercase_operation_id: "DELETE_CREATOR"
      path: "/creator/:ident"
      HttpMethod: "Delete"
      httpmethod: "delete"
  /creator/rev/{rev_id}:
    get:
      tags:
      - "creators"
      operationId: "get_creator_revision"
      parameters:
      - name: "rev_id"
        in: "path"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        required: true
        type: "string"
        maxLength: 36
        minLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
        formatString: "\\\"{}\\\""
        example: "\"rev_id_example\".to_string()"
      - name: "expand"
        in: "query"
        description: "List of sub-entities to expand in response. For creators, none\
          \ accepted (yet)."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"expand_example\".to_string())"
      - name: "hide"
        in: "query"
        description: "List of entity fields to elide in response. For creators, none\
          \ accepted (yet)."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"hide_example\".to_string())"
      responses:
        200:
          description: "Found Entity Revision"
          schema:
            $ref: "#/definitions/creator_entity"
          x-responseId: "FoundEntityRevision"
          x-uppercaseResponseId: "FOUND_ENTITY_REVISION"
          uppercase_operation_id: "GET_CREATOR_REVISION"
          uppercase_data_type: "CREATORENTITY"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_CREATOR_REVISION"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_CREATOR_REVISION"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_CREATOR_REVISION"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_creator_revision"
      uppercase_operation_id: "GET_CREATOR_REVISION"
      path: "/creator/rev/:rev_id"
      HttpMethod: "Get"
      httpmethod: "get"
  /creator/{ident}/history:
    get:
      tags:
      - "creators"
      operationId: "get_creator_history"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - name: "limit"
        in: "query"
        required: false
        type: "integer"
        format: "int64"
        formatString: "{:?}"
        example: "Some(789)"
      responses:
        200:
          description: "Found Entity History"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/entity_history_entry"
          x-responseId: "FoundEntityHistory"
          x-uppercaseResponseId: "FOUND_ENTITY_HISTORY"
          uppercase_operation_id: "GET_CREATOR_HISTORY"
          uppercase_data_type: "VEC<ENTITYHISTORYENTRY>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_CREATOR_HISTORY"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_CREATOR_HISTORY"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_CREATOR_HISTORY"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_creator_history"
      uppercase_operation_id: "GET_CREATOR_HISTORY"
      path: "/creator/:ident/history"
      HttpMethod: "Get"
      httpmethod: "get"
  /creator/{ident}/releases:
    get:
      tags:
      - "creators"
      operationId: "get_creator_releases"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - name: "hide"
        in: "query"
        description: "List of entity fields to elide in response. For creators, none\
          \ implemented yet."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"hide_example\".to_string())"
      responses:
        200:
          description: "Found"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/release_entity"
          x-responseId: "Found"
          x-uppercaseResponseId: "FOUND"
          uppercase_operation_id: "GET_CREATOR_RELEASES"
          uppercase_data_type: "VEC<RELEASEENTITY>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_CREATOR_RELEASES"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_CREATOR_RELEASES"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_CREATOR_RELEASES"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_creator_releases"
      uppercase_operation_id: "GET_CREATOR_RELEASES"
      path: "/creator/:ident/releases"
      HttpMethod: "Get"
      httpmethod: "get"
  /creator/{ident}/redirects:
    get:
      tags:
      - "creators"
      operationId: "get_creator_redirects"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      responses:
        200:
          description: "Found Entity Redirects"
          schema:
            type: "array"
            items:
              type: "string"
              example: "q3nouwy3nnbsvo3h5klxsx4a7y"
              description: "base32-encoded unique identifier"
              minLength: 26
              maxLength: 26
              pattern: "[a-zA-Z2-7]{26}"
          x-responseId: "FoundEntityRedirects"
          x-uppercaseResponseId: "FOUND_ENTITY_REDIRECTS"
          uppercase_operation_id: "GET_CREATOR_REDIRECTS"
          uppercase_data_type: "VEC<STRING>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_CREATOR_REDIRECTS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_CREATOR_REDIRECTS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_CREATOR_REDIRECTS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_creator_redirects"
      uppercase_operation_id: "GET_CREATOR_REDIRECTS"
      path: "/creator/:ident/redirects"
      HttpMethod: "Get"
      httpmethod: "get"
  /creator/lookup:
    get:
      tags:
      - "creators"
      operationId: "lookup_creator"
      parameters:
      - name: "orcid"
        in: "query"
        required: false
        type: "string"
        maxLength: 19
        minLength: 19
        pattern: "\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]"
        formatString: "{:?}"
        example: "Some(\"orcid_example\".to_string())"
      - name: "wikidata_qid"
        in: "query"
        required: false
        formatString: "{:?}"
        example: "Some(\"wikidata_qid_example\".to_string())"
      - name: "expand"
        in: "query"
        description: "List of sub-entities to expand in response."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"expand_example\".to_string())"
      - name: "hide"
        in: "query"
        description: "List of entity fields to elide in response. For creator, none\
          \ accepted (yet)."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"hide_example\".to_string())"
      responses:
        200:
          description: "Found Entity"
          schema:
            $ref: "#/definitions/creator_entity"
          x-responseId: "FoundEntity"
          x-uppercaseResponseId: "FOUND_ENTITY"
          uppercase_operation_id: "LOOKUP_CREATOR"
          uppercase_data_type: "CREATORENTITY"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "LOOKUP_CREATOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "LOOKUP_CREATOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "LOOKUP_CREATOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "lookup_creator"
      uppercase_operation_id: "LOOKUP_CREATOR"
      path: "/creator/lookup"
      HttpMethod: "Get"
      httpmethod: "get"
  /creator/edit/{edit_id}:
    get:
      tags:
      - "creators"
      operationId: "get_creator_edit"
      parameters:
      - name: "edit_id"
        in: "path"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        required: true
        type: "string"
        maxLength: 36
        minLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
        formatString: "\\\"{}\\\""
        example: "\"edit_id_example\".to_string()"
      responses:
        200:
          description: "Found Edit"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "FoundEdit"
          x-uppercaseResponseId: "FOUND_EDIT"
          uppercase_operation_id: "GET_CREATOR_EDIT"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_CREATOR_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_CREATOR_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_CREATOR_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_creator_edit"
      uppercase_operation_id: "GET_CREATOR_EDIT"
      path: "/creator/edit/:edit_id"
      HttpMethod: "Get"
      httpmethod: "get"
    delete:
      tags:
      - "creators"
      operationId: "delete_creator_edit"
      parameters:
      - name: "edit_id"
        in: "path"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        required: true
        type: "string"
        maxLength: 36
        minLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
        formatString: "\\\"{}\\\""
        example: "\"edit_id_example\".to_string()"
      responses:
        200:
          description: "Deleted Edit"
          schema:
            $ref: "#/definitions/success"
          x-responseId: "DeletedEdit"
          x-uppercaseResponseId: "DELETED_EDIT"
          uppercase_operation_id: "DELETE_CREATOR_EDIT"
          uppercase_data_type: "SUCCESS"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "DELETE_CREATOR_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "DELETE_CREATOR_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "DELETE_CREATOR_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "DELETE_CREATOR_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "DELETE_CREATOR_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "delete_creator_edit"
      uppercase_operation_id: "DELETE_CREATOR_EDIT"
      path: "/creator/edit/:edit_id"
      HttpMethod: "Delete"
      httpmethod: "delete"
  /file:
    post:
      tags:
      - "files"
      operationId: "create_file"
      parameters:
      - in: "body"
        name: "entity"
        required: true
        schema:
          $ref: "#/definitions/file_entity"
        uppercase_data_type: "FILEENTITY"
        refName: "file_entity"
        formatString: "{:?}"
        example: "???"
        model_key: "editgroup_edits"
        uppercase_operation_id: "CREATE_FILE"
        consumesJson: true
      - name: "editgroup_id"
        in: "query"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"editgroup_id_example\".to_string()"
      responses:
        201:
          description: "Created Entity"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "CreatedEntity"
          x-uppercaseResponseId: "CREATED_ENTITY"
          uppercase_operation_id: "CREATE_FILE"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "CREATE_FILE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "CREATE_FILE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "CREATE_FILE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "CREATE_FILE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "CREATE_FILE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "create_file"
      uppercase_operation_id: "CREATE_FILE"
      path: "/file"
      HttpMethod: "Post"
      httpmethod: "post"
      noClientExample: true
  /file/batch:
    post:
      tags:
      - "files"
      operationId: "create_file_batch"
      parameters:
      - name: "autoaccept"
        in: "query"
        description: "If true, and editor is authorized, batch is accepted all at\
          \ once"
        required: false
        type: "boolean"
        formatString: "{:?}"
        example: "Some(true)"
      - name: "editgroup_id"
        in: "query"
        description: "Editgroup to auto-accept and apply to all entities (required\
          \ if 'autoaccept' is True)"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"editgroup_id_example\".to_string())"
      - name: "description"
        in: "query"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"description_example\".to_string())"
      - name: "extra"
        in: "query"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"extra_example\".to_string())"
      - in: "body"
        name: "entity_list"
        required: true
        schema:
          type: "array"
          items:
            $ref: "#/definitions/file_entity"
        formatString: "{:?}"
        example: "&Vec::new()"
        model_key: "editgroup_edits"
        uppercase_operation_id: "CREATE_FILE_BATCH"
        consumesJson: true
      responses:
        201:
          description: "Created Entities"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/entity_edit"
          x-responseId: "CreatedEntities"
          x-uppercaseResponseId: "CREATED_ENTITIES"
          uppercase_operation_id: "CREATE_FILE_BATCH"
          uppercase_data_type: "VEC<ENTITYEDIT>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "CREATE_FILE_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "CREATE_FILE_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "CREATE_FILE_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "CREATE_FILE_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "CREATE_FILE_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "create_file_batch"
      uppercase_operation_id: "CREATE_FILE_BATCH"
      path: "/file/batch"
      HttpMethod: "Post"
      httpmethod: "post"
  /file/{ident}:
    get:
      tags:
      - "files"
      operationId: "get_file"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - name: "expand"
        in: "query"
        description: "List of sub-entities to expand in response. For files, none\
          \ accepted (yet)."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"expand_example\".to_string())"
      - name: "hide"
        in: "query"
        description: "List of entity fields to elide in response. For files, none\
          \ accepted (yet)."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"hide_example\".to_string())"
      responses:
        200:
          description: "Found Entity"
          schema:
            $ref: "#/definitions/file_entity"
          x-responseId: "FoundEntity"
          x-uppercaseResponseId: "FOUND_ENTITY"
          uppercase_operation_id: "GET_FILE"
          uppercase_data_type: "FILEENTITY"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_FILE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_FILE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_FILE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_file"
      uppercase_operation_id: "GET_FILE"
      path: "/file/:ident"
      HttpMethod: "Get"
      httpmethod: "get"
    put:
      tags:
      - "files"
      operationId: "update_file"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - in: "body"
        name: "entity"
        required: true
        schema:
          $ref: "#/definitions/file_entity"
        uppercase_data_type: "FILEENTITY"
        refName: "file_entity"
        formatString: "{:?}"
        example: "???"
        model_key: "editgroup_edits"
        uppercase_operation_id: "UPDATE_FILE"
        consumesJson: true
      - name: "editgroup_id"
        in: "query"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"editgroup_id_example\".to_string()"
      responses:
        200:
          description: "Updated Entity"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "UpdatedEntity"
          x-uppercaseResponseId: "UPDATED_ENTITY"
          uppercase_operation_id: "UPDATE_FILE"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "UPDATE_FILE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "UPDATE_FILE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "UPDATE_FILE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "UPDATE_FILE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "UPDATE_FILE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "update_file"
      uppercase_operation_id: "UPDATE_FILE"
      path: "/file/:ident"
      HttpMethod: "Put"
      httpmethod: "put"
      noClientExample: true
    delete:
      tags:
      - "files"
      operationId: "delete_file"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - name: "editgroup_id"
        in: "query"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"editgroup_id_example\".to_string()"
      responses:
        200:
          description: "Deleted Entity"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "DeletedEntity"
          x-uppercaseResponseId: "DELETED_ENTITY"
          uppercase_operation_id: "DELETE_FILE"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "DELETE_FILE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "DELETE_FILE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "DELETE_FILE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "DELETE_FILE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "DELETE_FILE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "delete_file"
      uppercase_operation_id: "DELETE_FILE"
      path: "/file/:ident"
      HttpMethod: "Delete"
      httpmethod: "delete"
  /file/rev/{rev_id}:
    get:
      tags:
      - "files"
      operationId: "get_file_revision"
      parameters:
      - name: "rev_id"
        in: "path"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        required: true
        type: "string"
        maxLength: 36
        minLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
        formatString: "\\\"{}\\\""
        example: "\"rev_id_example\".to_string()"
      - name: "expand"
        in: "query"
        description: "List of sub-entities to expand in response. For files, none\
          \ accepted (yet)."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"expand_example\".to_string())"
      - name: "hide"
        in: "query"
        description: "List of entity fields to elide in response. For files, none\
          \ accepted (yet)."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"hide_example\".to_string())"
      responses:
        200:
          description: "Found Entity Revision"
          schema:
            $ref: "#/definitions/file_entity"
          x-responseId: "FoundEntityRevision"
          x-uppercaseResponseId: "FOUND_ENTITY_REVISION"
          uppercase_operation_id: "GET_FILE_REVISION"
          uppercase_data_type: "FILEENTITY"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_FILE_REVISION"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_FILE_REVISION"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_FILE_REVISION"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_file_revision"
      uppercase_operation_id: "GET_FILE_REVISION"
      path: "/file/rev/:rev_id"
      HttpMethod: "Get"
      httpmethod: "get"
  /file/{ident}/history:
    get:
      tags:
      - "files"
      operationId: "get_file_history"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - name: "limit"
        in: "query"
        required: false
        type: "integer"
        format: "int64"
        formatString: "{:?}"
        example: "Some(789)"
      responses:
        200:
          description: "Found Entity History"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/entity_history_entry"
          x-responseId: "FoundEntityHistory"
          x-uppercaseResponseId: "FOUND_ENTITY_HISTORY"
          uppercase_operation_id: "GET_FILE_HISTORY"
          uppercase_data_type: "VEC<ENTITYHISTORYENTRY>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_FILE_HISTORY"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_FILE_HISTORY"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_FILE_HISTORY"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_file_history"
      uppercase_operation_id: "GET_FILE_HISTORY"
      path: "/file/:ident/history"
      HttpMethod: "Get"
      httpmethod: "get"
  /file/{ident}/redirects:
    get:
      tags:
      - "files"
      operationId: "get_file_redirects"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      responses:
        200:
          description: "Found Entity Redirects"
          schema:
            type: "array"
            items:
              type: "string"
              example: "q3nouwy3nnbsvo3h5klxsx4a7y"
              description: "base32-encoded unique identifier"
              minLength: 26
              maxLength: 26
              pattern: "[a-zA-Z2-7]{26}"
          x-responseId: "FoundEntityRedirects"
          x-uppercaseResponseId: "FOUND_ENTITY_REDIRECTS"
          uppercase_operation_id: "GET_FILE_REDIRECTS"
          uppercase_data_type: "VEC<STRING>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_FILE_REDIRECTS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_FILE_REDIRECTS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_FILE_REDIRECTS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_file_redirects"
      uppercase_operation_id: "GET_FILE_REDIRECTS"
      path: "/file/:ident/redirects"
      HttpMethod: "Get"
      httpmethod: "get"
  /file/lookup:
    get:
      tags:
      - "files"
      operationId: "lookup_file"
      parameters:
      - name: "md5"
        in: "query"
        required: false
        type: "string"
        maxLength: 32
        minLength: 32
        pattern: "[a-f0-9]{32}"
        formatString: "{:?}"
        example: "Some(\"md5_example\".to_string())"
      - name: "sha1"
        in: "query"
        required: false
        type: "string"
        maxLength: 40
        minLength: 40
        pattern: "[a-f0-9]{40}"
        formatString: "{:?}"
        example: "Some(\"sha1_example\".to_string())"
      - name: "sha256"
        in: "query"
        required: false
        type: "string"
        maxLength: 64
        minLength: 64
        pattern: "[a-f0-9]{64}"
        formatString: "{:?}"
        example: "Some(\"sha256_example\".to_string())"
      - name: "expand"
        in: "query"
        description: "List of sub-entities to expand in response."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"expand_example\".to_string())"
      - name: "hide"
        in: "query"
        description: "List of entity fields to elide in response. For files, none\
          \ accepted (yet)."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"hide_example\".to_string())"
      responses:
        200:
          description: "Found Entity"
          schema:
            $ref: "#/definitions/file_entity"
          x-responseId: "FoundEntity"
          x-uppercaseResponseId: "FOUND_ENTITY"
          uppercase_operation_id: "LOOKUP_FILE"
          uppercase_data_type: "FILEENTITY"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "LOOKUP_FILE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "LOOKUP_FILE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "LOOKUP_FILE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "lookup_file"
      uppercase_operation_id: "LOOKUP_FILE"
      path: "/file/lookup"
      HttpMethod: "Get"
      httpmethod: "get"
  /file/edit/{edit_id}:
    get:
      tags:
      - "files"
      operationId: "get_file_edit"
      parameters:
      - name: "edit_id"
        in: "path"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        required: true
        type: "string"
        maxLength: 36
        minLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
        formatString: "\\\"{}\\\""
        example: "\"edit_id_example\".to_string()"
      responses:
        200:
          description: "Found Edit"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "FoundEdit"
          x-uppercaseResponseId: "FOUND_EDIT"
          uppercase_operation_id: "GET_FILE_EDIT"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_FILE_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_FILE_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_FILE_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_file_edit"
      uppercase_operation_id: "GET_FILE_EDIT"
      path: "/file/edit/:edit_id"
      HttpMethod: "Get"
      httpmethod: "get"
    delete:
      tags:
      - "files"
      operationId: "delete_file_edit"
      parameters:
      - name: "edit_id"
        in: "path"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        required: true
        type: "string"
        maxLength: 36
        minLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
        formatString: "\\\"{}\\\""
        example: "\"edit_id_example\".to_string()"
      responses:
        200:
          description: "Deleted Edit"
          schema:
            $ref: "#/definitions/success"
          x-responseId: "DeletedEdit"
          x-uppercaseResponseId: "DELETED_EDIT"
          uppercase_operation_id: "DELETE_FILE_EDIT"
          uppercase_data_type: "SUCCESS"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "DELETE_FILE_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "DELETE_FILE_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "DELETE_FILE_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "DELETE_FILE_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "DELETE_FILE_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "delete_file_edit"
      uppercase_operation_id: "DELETE_FILE_EDIT"
      path: "/file/edit/:edit_id"
      HttpMethod: "Delete"
      httpmethod: "delete"
  /fileset:
    post:
      tags:
      - "filesets"
      operationId: "create_fileset"
      parameters:
      - in: "body"
        name: "entity"
        required: true
        schema:
          $ref: "#/definitions/fileset_entity"
        uppercase_data_type: "FILESETENTITY"
        refName: "fileset_entity"
        formatString: "{:?}"
        example: "???"
        model_key: "editgroup_edits"
        uppercase_operation_id: "CREATE_FILESET"
        consumesJson: true
      - name: "editgroup_id"
        in: "query"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"editgroup_id_example\".to_string()"
      responses:
        201:
          description: "Created Entity"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "CreatedEntity"
          x-uppercaseResponseId: "CREATED_ENTITY"
          uppercase_operation_id: "CREATE_FILESET"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "CREATE_FILESET"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "CREATE_FILESET"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "CREATE_FILESET"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "CREATE_FILESET"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "CREATE_FILESET"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "create_fileset"
      uppercase_operation_id: "CREATE_FILESET"
      path: "/fileset"
      HttpMethod: "Post"
      httpmethod: "post"
      noClientExample: true
  /fileset/batch:
    post:
      tags:
      - "filesets"
      operationId: "create_fileset_batch"
      parameters:
      - name: "autoaccept"
        in: "query"
        description: "If true, and editor is authorized, batch is accepted all at\
          \ once"
        required: false
        type: "boolean"
        formatString: "{:?}"
        example: "Some(true)"
      - name: "editgroup_id"
        in: "query"
        description: "Editgroup to auto-accept and apply to all entities (required\
          \ if 'autoaccept' is True)"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"editgroup_id_example\".to_string())"
      - name: "description"
        in: "query"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"description_example\".to_string())"
      - name: "extra"
        in: "query"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"extra_example\".to_string())"
      - in: "body"
        name: "entity_list"
        required: true
        schema:
          type: "array"
          items:
            $ref: "#/definitions/fileset_entity"
        formatString: "{:?}"
        example: "&Vec::new()"
        model_key: "editgroup_edits"
        uppercase_operation_id: "CREATE_FILESET_BATCH"
        consumesJson: true
      responses:
        201:
          description: "Created Entities"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/entity_edit"
          x-responseId: "CreatedEntities"
          x-uppercaseResponseId: "CREATED_ENTITIES"
          uppercase_operation_id: "CREATE_FILESET_BATCH"
          uppercase_data_type: "VEC<ENTITYEDIT>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "CREATE_FILESET_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "CREATE_FILESET_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "CREATE_FILESET_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "CREATE_FILESET_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "CREATE_FILESET_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "create_fileset_batch"
      uppercase_operation_id: "CREATE_FILESET_BATCH"
      path: "/fileset/batch"
      HttpMethod: "Post"
      httpmethod: "post"
  /fileset/{ident}:
    get:
      tags:
      - "filesets"
      operationId: "get_fileset"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - name: "expand"
        in: "query"
        description: "List of sub-entities to expand in response. For filesets, none\
          \ accepted (yet)."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"expand_example\".to_string())"
      - name: "hide"
        in: "query"
        description: "List of entity fields to elide in response. For filesets, 'manifest'\
          \ is accepted."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"hide_example\".to_string())"
      responses:
        200:
          description: "Found Entity"
          schema:
            $ref: "#/definitions/fileset_entity"
          x-responseId: "FoundEntity"
          x-uppercaseResponseId: "FOUND_ENTITY"
          uppercase_operation_id: "GET_FILESET"
          uppercase_data_type: "FILESETENTITY"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_FILESET"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_FILESET"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_FILESET"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_fileset"
      uppercase_operation_id: "GET_FILESET"
      path: "/fileset/:ident"
      HttpMethod: "Get"
      httpmethod: "get"
    put:
      tags:
      - "filesets"
      operationId: "update_fileset"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - in: "body"
        name: "entity"
        required: true
        schema:
          $ref: "#/definitions/fileset_entity"
        uppercase_data_type: "FILESETENTITY"
        refName: "fileset_entity"
        formatString: "{:?}"
        example: "???"
        model_key: "editgroup_edits"
        uppercase_operation_id: "UPDATE_FILESET"
        consumesJson: true
      - name: "editgroup_id"
        in: "query"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"editgroup_id_example\".to_string()"
      responses:
        200:
          description: "Updated Entity"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "UpdatedEntity"
          x-uppercaseResponseId: "UPDATED_ENTITY"
          uppercase_operation_id: "UPDATE_FILESET"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "UPDATE_FILESET"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "UPDATE_FILESET"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "UPDATE_FILESET"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "UPDATE_FILESET"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "UPDATE_FILESET"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "update_fileset"
      uppercase_operation_id: "UPDATE_FILESET"
      path: "/fileset/:ident"
      HttpMethod: "Put"
      httpmethod: "put"
      noClientExample: true
    delete:
      tags:
      - "filesets"
      operationId: "delete_fileset"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - name: "editgroup_id"
        in: "query"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"editgroup_id_example\".to_string()"
      responses:
        200:
          description: "Deleted Entity"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "DeletedEntity"
          x-uppercaseResponseId: "DELETED_ENTITY"
          uppercase_operation_id: "DELETE_FILESET"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "DELETE_FILESET"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "DELETE_FILESET"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "DELETE_FILESET"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "DELETE_FILESET"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "DELETE_FILESET"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "delete_fileset"
      uppercase_operation_id: "DELETE_FILESET"
      path: "/fileset/:ident"
      HttpMethod: "Delete"
      httpmethod: "delete"
  /fileset/rev/{rev_id}:
    get:
      tags:
      - "filesets"
      operationId: "get_fileset_revision"
      parameters:
      - name: "rev_id"
        in: "path"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        required: true
        type: "string"
        maxLength: 36
        minLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
        formatString: "\\\"{}\\\""
        example: "\"rev_id_example\".to_string()"
      - name: "expand"
        in: "query"
        description: "List of sub-entities to expand in response. For filesets, none\
          \ accepted (yet)."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"expand_example\".to_string())"
      - name: "hide"
        in: "query"
        description: "List of entity fields to elide in response. For filesets, 'manifest'\
          \ is accepted."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"hide_example\".to_string())"
      responses:
        200:
          description: "Found Entity Revision"
          schema:
            $ref: "#/definitions/fileset_entity"
          x-responseId: "FoundEntityRevision"
          x-uppercaseResponseId: "FOUND_ENTITY_REVISION"
          uppercase_operation_id: "GET_FILESET_REVISION"
          uppercase_data_type: "FILESETENTITY"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_FILESET_REVISION"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_FILESET_REVISION"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_FILESET_REVISION"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_fileset_revision"
      uppercase_operation_id: "GET_FILESET_REVISION"
      path: "/fileset/rev/:rev_id"
      HttpMethod: "Get"
      httpmethod: "get"
  /fileset/{ident}/history:
    get:
      tags:
      - "filesets"
      operationId: "get_fileset_history"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - name: "limit"
        in: "query"
        required: false
        type: "integer"
        format: "int64"
        formatString: "{:?}"
        example: "Some(789)"
      responses:
        200:
          description: "Found Entity History"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/entity_history_entry"
          x-responseId: "FoundEntityHistory"
          x-uppercaseResponseId: "FOUND_ENTITY_HISTORY"
          uppercase_operation_id: "GET_FILESET_HISTORY"
          uppercase_data_type: "VEC<ENTITYHISTORYENTRY>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_FILESET_HISTORY"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_FILESET_HISTORY"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_FILESET_HISTORY"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_fileset_history"
      uppercase_operation_id: "GET_FILESET_HISTORY"
      path: "/fileset/:ident/history"
      HttpMethod: "Get"
      httpmethod: "get"
  /fileset/{ident}/redirects:
    get:
      tags:
      - "filesets"
      operationId: "get_fileset_redirects"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      responses:
        200:
          description: "Found Entity Redirects"
          schema:
            type: "array"
            items:
              type: "string"
              example: "q3nouwy3nnbsvo3h5klxsx4a7y"
              description: "base32-encoded unique identifier"
              minLength: 26
              maxLength: 26
              pattern: "[a-zA-Z2-7]{26}"
          x-responseId: "FoundEntityRedirects"
          x-uppercaseResponseId: "FOUND_ENTITY_REDIRECTS"
          uppercase_operation_id: "GET_FILESET_REDIRECTS"
          uppercase_data_type: "VEC<STRING>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_FILESET_REDIRECTS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_FILESET_REDIRECTS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_FILESET_REDIRECTS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_fileset_redirects"
      uppercase_operation_id: "GET_FILESET_REDIRECTS"
      path: "/fileset/:ident/redirects"
      HttpMethod: "Get"
      httpmethod: "get"
  /fileset/edit/{edit_id}:
    get:
      tags:
      - "filesets"
      operationId: "get_fileset_edit"
      parameters:
      - name: "edit_id"
        in: "path"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        required: true
        type: "string"
        maxLength: 36
        minLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
        formatString: "\\\"{}\\\""
        example: "\"edit_id_example\".to_string()"
      responses:
        200:
          description: "Found Edit"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "FoundEdit"
          x-uppercaseResponseId: "FOUND_EDIT"
          uppercase_operation_id: "GET_FILESET_EDIT"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_FILESET_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_FILESET_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_FILESET_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_fileset_edit"
      uppercase_operation_id: "GET_FILESET_EDIT"
      path: "/fileset/edit/:edit_id"
      HttpMethod: "Get"
      httpmethod: "get"
    delete:
      tags:
      - "filesets"
      operationId: "delete_fileset_edit"
      parameters:
      - name: "edit_id"
        in: "path"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        required: true
        type: "string"
        maxLength: 36
        minLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
        formatString: "\\\"{}\\\""
        example: "\"edit_id_example\".to_string()"
      responses:
        200:
          description: "Deleted Edit"
          schema:
            $ref: "#/definitions/success"
          x-responseId: "DeletedEdit"
          x-uppercaseResponseId: "DELETED_EDIT"
          uppercase_operation_id: "DELETE_FILESET_EDIT"
          uppercase_data_type: "SUCCESS"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "DELETE_FILESET_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "DELETE_FILESET_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "DELETE_FILESET_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "DELETE_FILESET_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "DELETE_FILESET_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "delete_fileset_edit"
      uppercase_operation_id: "DELETE_FILESET_EDIT"
      path: "/fileset/edit/:edit_id"
      HttpMethod: "Delete"
      httpmethod: "delete"
  /webcapture:
    post:
      tags:
      - "webcaptures"
      operationId: "create_webcapture"
      parameters:
      - in: "body"
        name: "entity"
        required: true
        schema:
          $ref: "#/definitions/webcapture_entity"
        uppercase_data_type: "WEBCAPTUREENTITY"
        refName: "webcapture_entity"
        formatString: "{:?}"
        example: "???"
        model_key: "editgroup_edits"
        uppercase_operation_id: "CREATE_WEBCAPTURE"
        consumesJson: true
      - name: "editgroup_id"
        in: "query"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"editgroup_id_example\".to_string()"
      responses:
        201:
          description: "Created Entity"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "CreatedEntity"
          x-uppercaseResponseId: "CREATED_ENTITY"
          uppercase_operation_id: "CREATE_WEBCAPTURE"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "CREATE_WEBCAPTURE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "CREATE_WEBCAPTURE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "CREATE_WEBCAPTURE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "CREATE_WEBCAPTURE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "CREATE_WEBCAPTURE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "create_webcapture"
      uppercase_operation_id: "CREATE_WEBCAPTURE"
      path: "/webcapture"
      HttpMethod: "Post"
      httpmethod: "post"
      noClientExample: true
  /webcapture/batch:
    post:
      tags:
      - "webcaptures"
      operationId: "create_webcapture_batch"
      parameters:
      - name: "autoaccept"
        in: "query"
        description: "If true, and editor is authorized, batch is accepted all at\
          \ once"
        required: false
        type: "boolean"
        formatString: "{:?}"
        example: "Some(true)"
      - name: "editgroup_id"
        in: "query"
        description: "Editgroup to auto-accept and apply to all entities (required\
          \ if 'autoaccept' is True)"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"editgroup_id_example\".to_string())"
      - name: "description"
        in: "query"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"description_example\".to_string())"
      - name: "extra"
        in: "query"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"extra_example\".to_string())"
      - in: "body"
        name: "entity_list"
        required: true
        schema:
          type: "array"
          items:
            $ref: "#/definitions/webcapture_entity"
        formatString: "{:?}"
        example: "&Vec::new()"
        model_key: "editgroup_edits"
        uppercase_operation_id: "CREATE_WEBCAPTURE_BATCH"
        consumesJson: true
      responses:
        201:
          description: "Created Entities"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/entity_edit"
          x-responseId: "CreatedEntities"
          x-uppercaseResponseId: "CREATED_ENTITIES"
          uppercase_operation_id: "CREATE_WEBCAPTURE_BATCH"
          uppercase_data_type: "VEC<ENTITYEDIT>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "CREATE_WEBCAPTURE_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "CREATE_WEBCAPTURE_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "CREATE_WEBCAPTURE_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "CREATE_WEBCAPTURE_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "CREATE_WEBCAPTURE_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "create_webcapture_batch"
      uppercase_operation_id: "CREATE_WEBCAPTURE_BATCH"
      path: "/webcapture/batch"
      HttpMethod: "Post"
      httpmethod: "post"
  /webcapture/{ident}:
    get:
      tags:
      - "webcaptures"
      operationId: "get_webcapture"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - name: "expand"
        in: "query"
        description: "List of sub-entities to expand in response. For webcaptures,\
          \ none accepted (yet)."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"expand_example\".to_string())"
      - name: "hide"
        in: "query"
        description: "List of entity fields to elide in response. For webcaptures,\
          \ 'cdx' is accepted."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"hide_example\".to_string())"
      responses:
        200:
          description: "Found Entity"
          schema:
            $ref: "#/definitions/webcapture_entity"
          x-responseId: "FoundEntity"
          x-uppercaseResponseId: "FOUND_ENTITY"
          uppercase_operation_id: "GET_WEBCAPTURE"
          uppercase_data_type: "WEBCAPTUREENTITY"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_WEBCAPTURE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_WEBCAPTURE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_WEBCAPTURE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_webcapture"
      uppercase_operation_id: "GET_WEBCAPTURE"
      path: "/webcapture/:ident"
      HttpMethod: "Get"
      httpmethod: "get"
    put:
      tags:
      - "webcaptures"
      operationId: "update_webcapture"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - in: "body"
        name: "entity"
        required: true
        schema:
          $ref: "#/definitions/webcapture_entity"
        uppercase_data_type: "WEBCAPTUREENTITY"
        refName: "webcapture_entity"
        formatString: "{:?}"
        example: "???"
        model_key: "editgroup_edits"
        uppercase_operation_id: "UPDATE_WEBCAPTURE"
        consumesJson: true
      - name: "editgroup_id"
        in: "query"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"editgroup_id_example\".to_string()"
      responses:
        200:
          description: "Updated Entity"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "UpdatedEntity"
          x-uppercaseResponseId: "UPDATED_ENTITY"
          uppercase_operation_id: "UPDATE_WEBCAPTURE"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "UPDATE_WEBCAPTURE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "UPDATE_WEBCAPTURE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "UPDATE_WEBCAPTURE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "UPDATE_WEBCAPTURE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "UPDATE_WEBCAPTURE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "update_webcapture"
      uppercase_operation_id: "UPDATE_WEBCAPTURE"
      path: "/webcapture/:ident"
      HttpMethod: "Put"
      httpmethod: "put"
      noClientExample: true
    delete:
      tags:
      - "webcaptures"
      operationId: "delete_webcapture"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - name: "editgroup_id"
        in: "query"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"editgroup_id_example\".to_string()"
      responses:
        200:
          description: "Deleted Entity"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "DeletedEntity"
          x-uppercaseResponseId: "DELETED_ENTITY"
          uppercase_operation_id: "DELETE_WEBCAPTURE"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "DELETE_WEBCAPTURE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "DELETE_WEBCAPTURE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "DELETE_WEBCAPTURE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "DELETE_WEBCAPTURE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "DELETE_WEBCAPTURE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "delete_webcapture"
      uppercase_operation_id: "DELETE_WEBCAPTURE"
      path: "/webcapture/:ident"
      HttpMethod: "Delete"
      httpmethod: "delete"
  /webcapture/rev/{rev_id}:
    get:
      tags:
      - "webcaptures"
      operationId: "get_webcapture_revision"
      parameters:
      - name: "rev_id"
        in: "path"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        required: true
        type: "string"
        maxLength: 36
        minLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
        formatString: "\\\"{}\\\""
        example: "\"rev_id_example\".to_string()"
      - name: "expand"
        in: "query"
        description: "List of sub-entities to expand in response. For webcaptures,\
          \ none accepted (yet)."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"expand_example\".to_string())"
      - name: "hide"
        in: "query"
        description: "List of entity fields to elide in response. For webcaptures,\
          \ 'cdx' is accepted."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"hide_example\".to_string())"
      responses:
        200:
          description: "Found Entity Revision"
          schema:
            $ref: "#/definitions/webcapture_entity"
          x-responseId: "FoundEntityRevision"
          x-uppercaseResponseId: "FOUND_ENTITY_REVISION"
          uppercase_operation_id: "GET_WEBCAPTURE_REVISION"
          uppercase_data_type: "WEBCAPTUREENTITY"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_WEBCAPTURE_REVISION"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_WEBCAPTURE_REVISION"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_WEBCAPTURE_REVISION"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_webcapture_revision"
      uppercase_operation_id: "GET_WEBCAPTURE_REVISION"
      path: "/webcapture/rev/:rev_id"
      HttpMethod: "Get"
      httpmethod: "get"
  /webcapture/{ident}/history:
    get:
      tags:
      - "webcaptures"
      operationId: "get_webcapture_history"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - name: "limit"
        in: "query"
        required: false
        type: "integer"
        format: "int64"
        formatString: "{:?}"
        example: "Some(789)"
      responses:
        200:
          description: "Found Entity History"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/entity_history_entry"
          x-responseId: "FoundEntityHistory"
          x-uppercaseResponseId: "FOUND_ENTITY_HISTORY"
          uppercase_operation_id: "GET_WEBCAPTURE_HISTORY"
          uppercase_data_type: "VEC<ENTITYHISTORYENTRY>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_WEBCAPTURE_HISTORY"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_WEBCAPTURE_HISTORY"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_WEBCAPTURE_HISTORY"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_webcapture_history"
      uppercase_operation_id: "GET_WEBCAPTURE_HISTORY"
      path: "/webcapture/:ident/history"
      HttpMethod: "Get"
      httpmethod: "get"
  /webcapture/{ident}/redirects:
    get:
      tags:
      - "webcaptures"
      operationId: "get_webcapture_redirects"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      responses:
        200:
          description: "Found Entity Redirects"
          schema:
            type: "array"
            items:
              type: "string"
              example: "q3nouwy3nnbsvo3h5klxsx4a7y"
              description: "base32-encoded unique identifier"
              minLength: 26
              maxLength: 26
              pattern: "[a-zA-Z2-7]{26}"
          x-responseId: "FoundEntityRedirects"
          x-uppercaseResponseId: "FOUND_ENTITY_REDIRECTS"
          uppercase_operation_id: "GET_WEBCAPTURE_REDIRECTS"
          uppercase_data_type: "VEC<STRING>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_WEBCAPTURE_REDIRECTS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_WEBCAPTURE_REDIRECTS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_WEBCAPTURE_REDIRECTS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_webcapture_redirects"
      uppercase_operation_id: "GET_WEBCAPTURE_REDIRECTS"
      path: "/webcapture/:ident/redirects"
      HttpMethod: "Get"
      httpmethod: "get"
  /webcapture/edit/{edit_id}:
    get:
      tags:
      - "webcaptures"
      operationId: "get_webcapture_edit"
      parameters:
      - name: "edit_id"
        in: "path"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        required: true
        type: "string"
        maxLength: 36
        minLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
        formatString: "\\\"{}\\\""
        example: "\"edit_id_example\".to_string()"
      responses:
        200:
          description: "Found Edit"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "FoundEdit"
          x-uppercaseResponseId: "FOUND_EDIT"
          uppercase_operation_id: "GET_WEBCAPTURE_EDIT"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_WEBCAPTURE_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_WEBCAPTURE_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_WEBCAPTURE_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_webcapture_edit"
      uppercase_operation_id: "GET_WEBCAPTURE_EDIT"
      path: "/webcapture/edit/:edit_id"
      HttpMethod: "Get"
      httpmethod: "get"
    delete:
      tags:
      - "webcaptures"
      operationId: "delete_webcapture_edit"
      parameters:
      - name: "edit_id"
        in: "path"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        required: true
        type: "string"
        maxLength: 36
        minLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
        formatString: "\\\"{}\\\""
        example: "\"edit_id_example\".to_string()"
      responses:
        200:
          description: "Deleted Edit"
          schema:
            $ref: "#/definitions/success"
          x-responseId: "DeletedEdit"
          x-uppercaseResponseId: "DELETED_EDIT"
          uppercase_operation_id: "DELETE_WEBCAPTURE_EDIT"
          uppercase_data_type: "SUCCESS"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "DELETE_WEBCAPTURE_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "DELETE_WEBCAPTURE_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "DELETE_WEBCAPTURE_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "DELETE_WEBCAPTURE_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "DELETE_WEBCAPTURE_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "delete_webcapture_edit"
      uppercase_operation_id: "DELETE_WEBCAPTURE_EDIT"
      path: "/webcapture/edit/:edit_id"
      HttpMethod: "Delete"
      httpmethod: "delete"
  /release:
    post:
      tags:
      - "releases"
      operationId: "create_release"
      parameters:
      - in: "body"
        name: "entity"
        required: true
        schema:
          $ref: "#/definitions/release_entity"
        uppercase_data_type: "RELEASEENTITY"
        refName: "release_entity"
        formatString: "{:?}"
        example: "???"
        model_key: "editgroup_edits"
        uppercase_operation_id: "CREATE_RELEASE"
        consumesJson: true
      - name: "editgroup_id"
        in: "query"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"editgroup_id_example\".to_string()"
      responses:
        201:
          description: "Created Entity"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "CreatedEntity"
          x-uppercaseResponseId: "CREATED_ENTITY"
          uppercase_operation_id: "CREATE_RELEASE"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "CREATE_RELEASE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "CREATE_RELEASE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "CREATE_RELEASE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "CREATE_RELEASE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "CREATE_RELEASE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "create_release"
      uppercase_operation_id: "CREATE_RELEASE"
      path: "/release"
      HttpMethod: "Post"
      httpmethod: "post"
      noClientExample: true
  /release/batch:
    post:
      tags:
      - "releases"
      operationId: "create_release_batch"
      parameters:
      - name: "autoaccept"
        in: "query"
        description: "If true, and editor is authorized, batch is accepted all at\
          \ once"
        required: false
        type: "boolean"
        formatString: "{:?}"
        example: "Some(true)"
      - name: "editgroup_id"
        in: "query"
        description: "Editgroup to auto-accept and apply to all entities (required\
          \ if 'autoaccept' is True)"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"editgroup_id_example\".to_string())"
      - name: "description"
        in: "query"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"description_example\".to_string())"
      - name: "extra"
        in: "query"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"extra_example\".to_string())"
      - in: "body"
        name: "entity_list"
        required: true
        schema:
          type: "array"
          items:
            $ref: "#/definitions/release_entity"
        formatString: "{:?}"
        example: "&Vec::new()"
        model_key: "editgroup_edits"
        uppercase_operation_id: "CREATE_RELEASE_BATCH"
        consumesJson: true
      responses:
        201:
          description: "Created Entities"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/entity_edit"
          x-responseId: "CreatedEntities"
          x-uppercaseResponseId: "CREATED_ENTITIES"
          uppercase_operation_id: "CREATE_RELEASE_BATCH"
          uppercase_data_type: "VEC<ENTITYEDIT>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "CREATE_RELEASE_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "CREATE_RELEASE_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "CREATE_RELEASE_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "CREATE_RELEASE_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "CREATE_RELEASE_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "create_release_batch"
      uppercase_operation_id: "CREATE_RELEASE_BATCH"
      path: "/release/batch"
      HttpMethod: "Post"
      httpmethod: "post"
  /release/{ident}:
    get:
      tags:
      - "releases"
      operationId: "get_release"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - name: "expand"
        in: "query"
        description: "List of sub-entities to expand in response. For releases, 'files',\
          \ 'filesets, 'webcaptures', 'container', and 'creators' are valid."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"expand_example\".to_string())"
      - name: "hide"
        in: "query"
        description: "List of entity fields to elide in response. For releases, 'abstracts',\
          \ 'refs', and 'contribs' are valid."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"hide_example\".to_string())"
      responses:
        200:
          description: "Found Entity"
          schema:
            $ref: "#/definitions/release_entity"
          x-responseId: "FoundEntity"
          x-uppercaseResponseId: "FOUND_ENTITY"
          uppercase_operation_id: "GET_RELEASE"
          uppercase_data_type: "RELEASEENTITY"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_RELEASE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_RELEASE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_RELEASE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_release"
      uppercase_operation_id: "GET_RELEASE"
      path: "/release/:ident"
      HttpMethod: "Get"
      httpmethod: "get"
    put:
      tags:
      - "releases"
      operationId: "update_release"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - in: "body"
        name: "entity"
        required: true
        schema:
          $ref: "#/definitions/release_entity"
        uppercase_data_type: "RELEASEENTITY"
        refName: "release_entity"
        formatString: "{:?}"
        example: "???"
        model_key: "editgroup_edits"
        uppercase_operation_id: "UPDATE_RELEASE"
        consumesJson: true
      - name: "editgroup_id"
        in: "query"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"editgroup_id_example\".to_string()"
      responses:
        200:
          description: "Updated Entity"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "UpdatedEntity"
          x-uppercaseResponseId: "UPDATED_ENTITY"
          uppercase_operation_id: "UPDATE_RELEASE"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "UPDATE_RELEASE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "UPDATE_RELEASE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "UPDATE_RELEASE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "UPDATE_RELEASE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "UPDATE_RELEASE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "update_release"
      uppercase_operation_id: "UPDATE_RELEASE"
      path: "/release/:ident"
      HttpMethod: "Put"
      httpmethod: "put"
      noClientExample: true
    delete:
      tags:
      - "releases"
      operationId: "delete_release"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - name: "editgroup_id"
        in: "query"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"editgroup_id_example\".to_string()"
      responses:
        200:
          description: "Deleted Entity"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "DeletedEntity"
          x-uppercaseResponseId: "DELETED_ENTITY"
          uppercase_operation_id: "DELETE_RELEASE"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "DELETE_RELEASE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "DELETE_RELEASE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "DELETE_RELEASE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "DELETE_RELEASE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "DELETE_RELEASE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "delete_release"
      uppercase_operation_id: "DELETE_RELEASE"
      path: "/release/:ident"
      HttpMethod: "Delete"
      httpmethod: "delete"
  /release/rev/{rev_id}:
    get:
      tags:
      - "releases"
      operationId: "get_release_revision"
      parameters:
      - name: "rev_id"
        in: "path"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        required: true
        type: "string"
        maxLength: 36
        minLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
        formatString: "\\\"{}\\\""
        example: "\"rev_id_example\".to_string()"
      - name: "expand"
        in: "query"
        description: "List of sub-entities to expand in response. For releases, none\
          \ accepted (yet)."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"expand_example\".to_string())"
      - name: "hide"
        in: "query"
        description: "List of entity fields to elide in response. For releases, none\
          \ accepted (yet)."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"hide_example\".to_string())"
      responses:
        200:
          description: "Found Entity Revision"
          schema:
            $ref: "#/definitions/release_entity"
          x-responseId: "FoundEntityRevision"
          x-uppercaseResponseId: "FOUND_ENTITY_REVISION"
          uppercase_operation_id: "GET_RELEASE_REVISION"
          uppercase_data_type: "RELEASEENTITY"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_RELEASE_REVISION"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_RELEASE_REVISION"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_RELEASE_REVISION"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_release_revision"
      uppercase_operation_id: "GET_RELEASE_REVISION"
      path: "/release/rev/:rev_id"
      HttpMethod: "Get"
      httpmethod: "get"
  /release/{ident}/history:
    get:
      tags:
      - "releases"
      operationId: "get_release_history"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - name: "limit"
        in: "query"
        required: false
        type: "integer"
        format: "int64"
        formatString: "{:?}"
        example: "Some(789)"
      responses:
        200:
          description: "Found Entity History"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/entity_history_entry"
          x-responseId: "FoundEntityHistory"
          x-uppercaseResponseId: "FOUND_ENTITY_HISTORY"
          uppercase_operation_id: "GET_RELEASE_HISTORY"
          uppercase_data_type: "VEC<ENTITYHISTORYENTRY>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_RELEASE_HISTORY"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_RELEASE_HISTORY"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_RELEASE_HISTORY"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_release_history"
      uppercase_operation_id: "GET_RELEASE_HISTORY"
      path: "/release/:ident/history"
      HttpMethod: "Get"
      httpmethod: "get"
  /release/{ident}/files:
    get:
      tags:
      - "releases"
      operationId: "get_release_files"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - name: "hide"
        in: "query"
        description: "List of entity fields to elide in response. For files, none\
          \ accepted (yet)."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"hide_example\".to_string())"
      responses:
        200:
          description: "Found"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/file_entity"
          x-responseId: "Found"
          x-uppercaseResponseId: "FOUND"
          uppercase_operation_id: "GET_RELEASE_FILES"
          uppercase_data_type: "VEC<FILEENTITY>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_RELEASE_FILES"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_RELEASE_FILES"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_RELEASE_FILES"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_release_files"
      uppercase_operation_id: "GET_RELEASE_FILES"
      path: "/release/:ident/files"
      HttpMethod: "Get"
      httpmethod: "get"
  /release/{ident}/filesets:
    get:
      tags:
      - "releases"
      operationId: "get_release_filesets"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - name: "hide"
        in: "query"
        description: "List of entity fields to elide in response. For filesets, 'manifest'\
          \ is valid."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"hide_example\".to_string())"
      responses:
        200:
          description: "Found"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/fileset_entity"
          x-responseId: "Found"
          x-uppercaseResponseId: "FOUND"
          uppercase_operation_id: "GET_RELEASE_FILESETS"
          uppercase_data_type: "VEC<FILESETENTITY>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_RELEASE_FILESETS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_RELEASE_FILESETS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_RELEASE_FILESETS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_release_filesets"
      uppercase_operation_id: "GET_RELEASE_FILESETS"
      path: "/release/:ident/filesets"
      HttpMethod: "Get"
      httpmethod: "get"
  /release/{ident}/webcaptures:
    get:
      tags:
      - "releases"
      operationId: "get_release_webcaptures"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - name: "hide"
        in: "query"
        description: "List of entity fields to elide in response. For webcaptures,\
          \ 'cdx' is valid."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"hide_example\".to_string())"
      responses:
        200:
          description: "Found"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/webcapture_entity"
          x-responseId: "Found"
          x-uppercaseResponseId: "FOUND"
          uppercase_operation_id: "GET_RELEASE_WEBCAPTURES"
          uppercase_data_type: "VEC<WEBCAPTUREENTITY>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_RELEASE_WEBCAPTURES"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_RELEASE_WEBCAPTURES"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_RELEASE_WEBCAPTURES"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_release_webcaptures"
      uppercase_operation_id: "GET_RELEASE_WEBCAPTURES"
      path: "/release/:ident/webcaptures"
      HttpMethod: "Get"
      httpmethod: "get"
  /release/{ident}/redirects:
    get:
      tags:
      - "releases"
      operationId: "get_release_redirects"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      responses:
        200:
          description: "Found Entity Redirects"
          schema:
            type: "array"
            items:
              type: "string"
              example: "q3nouwy3nnbsvo3h5klxsx4a7y"
              description: "base32-encoded unique identifier"
              minLength: 26
              maxLength: 26
              pattern: "[a-zA-Z2-7]{26}"
          x-responseId: "FoundEntityRedirects"
          x-uppercaseResponseId: "FOUND_ENTITY_REDIRECTS"
          uppercase_operation_id: "GET_RELEASE_REDIRECTS"
          uppercase_data_type: "VEC<STRING>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_RELEASE_REDIRECTS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_RELEASE_REDIRECTS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_RELEASE_REDIRECTS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_release_redirects"
      uppercase_operation_id: "GET_RELEASE_REDIRECTS"
      path: "/release/:ident/redirects"
      HttpMethod: "Get"
      httpmethod: "get"
  /release/lookup:
    get:
      tags:
      - "releases"
      operationId: "lookup_release"
      parameters:
      - name: "doi"
        in: "query"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"doi_example\".to_string())"
      - name: "wikidata_qid"
        in: "query"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"wikidata_qid_example\".to_string())"
      - name: "isbn13"
        in: "query"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"isbn13_example\".to_string())"
      - name: "pmid"
        in: "query"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"pmid_example\".to_string())"
      - name: "pmcid"
        in: "query"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"pmcid_example\".to_string())"
      - name: "core_id"
        in: "query"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"core_id_example\".to_string())"
      - name: "arxiv_id"
        in: "query"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"arxiv_id_example\".to_string())"
      - name: "jstor_id"
        in: "query"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"jstor_id_example\".to_string())"
      - name: "expand"
        in: "query"
        description: "List of sub-entities to expand in response."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"expand_example\".to_string())"
      - name: "hide"
        in: "query"
        description: "List of sub-entities to expand in response. For releases, 'files',\
          \ 'filesets, 'webcaptures', 'container', and 'creators' are valid."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"hide_example\".to_string())"
      responses:
        200:
          description: "Found Entity"
          schema:
            $ref: "#/definitions/release_entity"
          x-responseId: "FoundEntity"
          x-uppercaseResponseId: "FOUND_ENTITY"
          uppercase_operation_id: "LOOKUP_RELEASE"
          uppercase_data_type: "RELEASEENTITY"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "LOOKUP_RELEASE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "LOOKUP_RELEASE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "LOOKUP_RELEASE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "lookup_release"
      uppercase_operation_id: "LOOKUP_RELEASE"
      path: "/release/lookup"
      HttpMethod: "Get"
      httpmethod: "get"
  /release/edit/{edit_id}:
    get:
      tags:
      - "releases"
      operationId: "get_release_edit"
      parameters:
      - name: "edit_id"
        in: "path"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        required: true
        type: "string"
        maxLength: 36
        minLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
        formatString: "\\\"{}\\\""
        example: "\"edit_id_example\".to_string()"
      responses:
        200:
          description: "Found Edit"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "FoundEdit"
          x-uppercaseResponseId: "FOUND_EDIT"
          uppercase_operation_id: "GET_RELEASE_EDIT"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_RELEASE_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_RELEASE_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_RELEASE_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_release_edit"
      uppercase_operation_id: "GET_RELEASE_EDIT"
      path: "/release/edit/:edit_id"
      HttpMethod: "Get"
      httpmethod: "get"
    delete:
      tags:
      - "releases"
      operationId: "delete_release_edit"
      parameters:
      - name: "edit_id"
        in: "path"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        required: true
        type: "string"
        maxLength: 36
        minLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
        formatString: "\\\"{}\\\""
        example: "\"edit_id_example\".to_string()"
      responses:
        200:
          description: "Deleted Edit"
          schema:
            $ref: "#/definitions/success"
          x-responseId: "DeletedEdit"
          x-uppercaseResponseId: "DELETED_EDIT"
          uppercase_operation_id: "DELETE_RELEASE_EDIT"
          uppercase_data_type: "SUCCESS"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "DELETE_RELEASE_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "DELETE_RELEASE_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "DELETE_RELEASE_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "DELETE_RELEASE_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "DELETE_RELEASE_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "delete_release_edit"
      uppercase_operation_id: "DELETE_RELEASE_EDIT"
      path: "/release/edit/:edit_id"
      HttpMethod: "Delete"
      httpmethod: "delete"
  /work:
    post:
      tags:
      - "releases"
      operationId: "create_work"
      parameters:
      - in: "body"
        name: "entity"
        required: true
        schema:
          $ref: "#/definitions/work_entity"
        uppercase_data_type: "WORKENTITY"
        refName: "work_entity"
        formatString: "{:?}"
        example: "???"
        model_key: "editgroup_edits"
        uppercase_operation_id: "CREATE_WORK"
        consumesJson: true
      - name: "editgroup_id"
        in: "query"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"editgroup_id_example\".to_string()"
      responses:
        201:
          description: "Created Entity"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "CreatedEntity"
          x-uppercaseResponseId: "CREATED_ENTITY"
          uppercase_operation_id: "CREATE_WORK"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "CREATE_WORK"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "CREATE_WORK"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "CREATE_WORK"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "CREATE_WORK"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "CREATE_WORK"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "create_work"
      uppercase_operation_id: "CREATE_WORK"
      path: "/work"
      HttpMethod: "Post"
      httpmethod: "post"
      noClientExample: true
  /work/batch:
    post:
      tags:
      - "works"
      operationId: "create_work_batch"
      parameters:
      - name: "autoaccept"
        in: "query"
        description: "If true, and editor is authorized, batch is accepted all at\
          \ once"
        required: false
        type: "boolean"
        formatString: "{:?}"
        example: "Some(true)"
      - name: "editgroup_id"
        in: "query"
        description: "Editgroup to auto-accept and apply to all entities (required\
          \ if 'autoaccept' is True)"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"editgroup_id_example\".to_string())"
      - name: "description"
        in: "query"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"description_example\".to_string())"
      - name: "extra"
        in: "query"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"extra_example\".to_string())"
      - in: "body"
        name: "entity_list"
        required: true
        schema:
          type: "array"
          items:
            $ref: "#/definitions/work_entity"
        formatString: "{:?}"
        example: "&Vec::new()"
        model_key: "editgroup_edits"
        uppercase_operation_id: "CREATE_WORK_BATCH"
        consumesJson: true
      responses:
        201:
          description: "Created Entities"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/entity_edit"
          x-responseId: "CreatedEntities"
          x-uppercaseResponseId: "CREATED_ENTITIES"
          uppercase_operation_id: "CREATE_WORK_BATCH"
          uppercase_data_type: "VEC<ENTITYEDIT>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "CREATE_WORK_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "CREATE_WORK_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "CREATE_WORK_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "CREATE_WORK_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "CREATE_WORK_BATCH"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "create_work_batch"
      uppercase_operation_id: "CREATE_WORK_BATCH"
      path: "/work/batch"
      HttpMethod: "Post"
      httpmethod: "post"
  /work/{ident}:
    get:
      tags:
      - "works"
      operationId: "get_work"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - name: "expand"
        in: "query"
        description: "List of sub-entities to expand in response. For works, none\
          \ accepted (yet)."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"expand_example\".to_string())"
      - name: "hide"
        in: "query"
        description: "List of entity fields to elide in response. For works, none\
          \ accepted (yet)."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"hide_example\".to_string())"
      responses:
        200:
          description: "Found Entity"
          schema:
            $ref: "#/definitions/work_entity"
          x-responseId: "FoundEntity"
          x-uppercaseResponseId: "FOUND_ENTITY"
          uppercase_operation_id: "GET_WORK"
          uppercase_data_type: "WORKENTITY"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_WORK"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_WORK"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_WORK"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_work"
      uppercase_operation_id: "GET_WORK"
      path: "/work/:ident"
      HttpMethod: "Get"
      httpmethod: "get"
    put:
      tags:
      - "works"
      operationId: "update_work"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - in: "body"
        name: "entity"
        required: true
        schema:
          $ref: "#/definitions/work_entity"
        uppercase_data_type: "WORKENTITY"
        refName: "work_entity"
        formatString: "{:?}"
        example: "???"
        model_key: "editgroup_edits"
        uppercase_operation_id: "UPDATE_WORK"
        consumesJson: true
      - name: "editgroup_id"
        in: "query"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"editgroup_id_example\".to_string()"
      responses:
        200:
          description: "Updated Entity"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "UpdatedEntity"
          x-uppercaseResponseId: "UPDATED_ENTITY"
          uppercase_operation_id: "UPDATE_WORK"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "UPDATE_WORK"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "UPDATE_WORK"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "UPDATE_WORK"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "UPDATE_WORK"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "UPDATE_WORK"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "update_work"
      uppercase_operation_id: "UPDATE_WORK"
      path: "/work/:ident"
      HttpMethod: "Put"
      httpmethod: "put"
      noClientExample: true
    delete:
      tags:
      - "works"
      operationId: "delete_work"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - name: "editgroup_id"
        in: "query"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"editgroup_id_example\".to_string()"
      responses:
        200:
          description: "Deleted Entity"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "DeletedEntity"
          x-uppercaseResponseId: "DELETED_ENTITY"
          uppercase_operation_id: "DELETE_WORK"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "DELETE_WORK"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "DELETE_WORK"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "DELETE_WORK"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "DELETE_WORK"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "DELETE_WORK"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "delete_work"
      uppercase_operation_id: "DELETE_WORK"
      path: "/work/:ident"
      HttpMethod: "Delete"
      httpmethod: "delete"
  /work/rev/{rev_id}:
    get:
      tags:
      - "works"
      operationId: "get_work_revision"
      parameters:
      - name: "rev_id"
        in: "path"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        required: true
        type: "string"
        maxLength: 36
        minLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
        formatString: "\\\"{}\\\""
        example: "\"rev_id_example\".to_string()"
      - name: "expand"
        in: "query"
        description: "List of sub-entities to expand in response. For works, none\
          \ accepted (yet)."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"expand_example\".to_string())"
      - name: "hide"
        in: "query"
        description: "List of entity fields to elide in response. For works, none\
          \ accepted (yet)."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"hide_example\".to_string())"
      responses:
        200:
          description: "Found Entity Revision"
          schema:
            $ref: "#/definitions/work_entity"
          x-responseId: "FoundEntityRevision"
          x-uppercaseResponseId: "FOUND_ENTITY_REVISION"
          uppercase_operation_id: "GET_WORK_REVISION"
          uppercase_data_type: "WORKENTITY"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_WORK_REVISION"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_WORK_REVISION"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_WORK_REVISION"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_work_revision"
      uppercase_operation_id: "GET_WORK_REVISION"
      path: "/work/rev/:rev_id"
      HttpMethod: "Get"
      httpmethod: "get"
  /work/{ident}/history:
    get:
      tags:
      - "works"
      operationId: "get_work_history"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - name: "limit"
        in: "query"
        required: false
        type: "integer"
        format: "int64"
        formatString: "{:?}"
        example: "Some(789)"
      responses:
        200:
          description: "Found Entity History"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/entity_history_entry"
          x-responseId: "FoundEntityHistory"
          x-uppercaseResponseId: "FOUND_ENTITY_HISTORY"
          uppercase_operation_id: "GET_WORK_HISTORY"
          uppercase_data_type: "VEC<ENTITYHISTORYENTRY>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_WORK_HISTORY"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_WORK_HISTORY"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_WORK_HISTORY"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_work_history"
      uppercase_operation_id: "GET_WORK_HISTORY"
      path: "/work/:ident/history"
      HttpMethod: "Get"
      httpmethod: "get"
  /work/{ident}/redirects:
    get:
      tags:
      - "works"
      operationId: "get_work_redirects"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      responses:
        200:
          description: "Found Entity Redirects"
          schema:
            type: "array"
            items:
              type: "string"
              example: "q3nouwy3nnbsvo3h5klxsx4a7y"
              description: "base32-encoded unique identifier"
              minLength: 26
              maxLength: 26
              pattern: "[a-zA-Z2-7]{26}"
          x-responseId: "FoundEntityRedirects"
          x-uppercaseResponseId: "FOUND_ENTITY_REDIRECTS"
          uppercase_operation_id: "GET_WORK_REDIRECTS"
          uppercase_data_type: "VEC<STRING>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_WORK_REDIRECTS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_WORK_REDIRECTS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_WORK_REDIRECTS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_work_redirects"
      uppercase_operation_id: "GET_WORK_REDIRECTS"
      path: "/work/:ident/redirects"
      HttpMethod: "Get"
      httpmethod: "get"
  /work/{ident}/releases:
    get:
      tags:
      - "works"
      operationId: "get_work_releases"
      parameters:
      - name: "ident"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"ident_example\".to_string()"
      - name: "hide"
        in: "query"
        description: "List of entity fields to elide in response. For works, none\
          \ implemented yet."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"hide_example\".to_string())"
      responses:
        200:
          description: "Found"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/release_entity"
          x-responseId: "Found"
          x-uppercaseResponseId: "FOUND"
          uppercase_operation_id: "GET_WORK_RELEASES"
          uppercase_data_type: "VEC<RELEASEENTITY>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_WORK_RELEASES"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_WORK_RELEASES"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_WORK_RELEASES"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_work_releases"
      uppercase_operation_id: "GET_WORK_RELEASES"
      path: "/work/:ident/releases"
      HttpMethod: "Get"
      httpmethod: "get"
  /work/edit/{edit_id}:
    get:
      tags:
      - "works"
      operationId: "get_work_edit"
      parameters:
      - name: "edit_id"
        in: "path"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        required: true
        type: "string"
        maxLength: 36
        minLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
        formatString: "\\\"{}\\\""
        example: "\"edit_id_example\".to_string()"
      responses:
        200:
          description: "Found Edit"
          schema:
            $ref: "#/definitions/entity_edit"
          x-responseId: "FoundEdit"
          x-uppercaseResponseId: "FOUND_EDIT"
          uppercase_operation_id: "GET_WORK_EDIT"
          uppercase_data_type: "ENTITYEDIT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_WORK_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_WORK_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_WORK_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_work_edit"
      uppercase_operation_id: "GET_WORK_EDIT"
      path: "/work/edit/:edit_id"
      HttpMethod: "Get"
      httpmethod: "get"
    delete:
      tags:
      - "works"
      operationId: "delete_work_edit"
      parameters:
      - name: "edit_id"
        in: "path"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        required: true
        type: "string"
        maxLength: 36
        minLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
        formatString: "\\\"{}\\\""
        example: "\"edit_id_example\".to_string()"
      responses:
        200:
          description: "Deleted Edit"
          schema:
            $ref: "#/definitions/success"
          x-responseId: "DeletedEdit"
          x-uppercaseResponseId: "DELETED_EDIT"
          uppercase_operation_id: "DELETE_WORK_EDIT"
          uppercase_data_type: "SUCCESS"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "DELETE_WORK_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "DELETE_WORK_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "DELETE_WORK_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "DELETE_WORK_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "DELETE_WORK_EDIT"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "delete_work_edit"
      uppercase_operation_id: "DELETE_WORK_EDIT"
      path: "/work/edit/:edit_id"
      HttpMethod: "Delete"
      httpmethod: "delete"
  /editor/{editor_id}:
    get:
      operationId: "get_editor"
      parameters:
      - name: "editor_id"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"editor_id_example\".to_string()"
      responses:
        200:
          description: "Found"
          schema:
            $ref: "#/definitions/editor"
          x-responseId: "Found"
          x-uppercaseResponseId: "FOUND"
          uppercase_operation_id: "GET_EDITOR"
          uppercase_data_type: "EDITOR"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_EDITOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_EDITOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_EDITOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_editor"
      uppercase_operation_id: "GET_EDITOR"
      path: "/editor/:editor_id"
      HttpMethod: "Get"
      httpmethod: "get"
    put:
      operationId: "update_editor"
      parameters:
      - name: "editor_id"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"editor_id_example\".to_string()"
      - in: "body"
        name: "editor"
        required: true
        schema:
          $ref: "#/definitions/editor"
        uppercase_data_type: "EDITOR"
        refName: "editor"
        formatString: "{:?}"
        example: "???"
        model_key: "editgroup_edits"
        uppercase_operation_id: "UPDATE_EDITOR"
        consumesJson: true
      responses:
        200:
          description: "Updated Editor"
          schema:
            $ref: "#/definitions/editor"
          x-responseId: "UpdatedEditor"
          x-uppercaseResponseId: "UPDATED_EDITOR"
          uppercase_operation_id: "UPDATE_EDITOR"
          uppercase_data_type: "EDITOR"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "UPDATE_EDITOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "UPDATE_EDITOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "UPDATE_EDITOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "UPDATE_EDITOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "UPDATE_EDITOR"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "update_editor"
      uppercase_operation_id: "UPDATE_EDITOR"
      path: "/editor/:editor_id"
      HttpMethod: "Put"
      httpmethod: "put"
      noClientExample: true
  /editor/{editor_id}/editgroups:
    get:
      operationId: "get_editor_editgroups"
      parameters:
      - name: "editor_id"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"editor_id_example\".to_string()"
      - name: "limit"
        in: "query"
        required: false
        type: "integer"
        format: "int64"
        formatString: "{:?}"
        example: "Some(789)"
      - name: "before"
        in: "query"
        required: false
        type: "string"
        format: "date-time"
        formatString: "{:?}"
        example: "None"
      - name: "since"
        in: "query"
        required: false
        type: "string"
        format: "date-time"
        formatString: "{:?}"
        example: "None"
      responses:
        200:
          description: "Found"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/editgroup"
          x-responseId: "Found"
          x-uppercaseResponseId: "FOUND"
          uppercase_operation_id: "GET_EDITOR_EDITGROUPS"
          uppercase_data_type: "VEC<EDITGROUP>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_EDITOR_EDITGROUPS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_EDITOR_EDITGROUPS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_EDITOR_EDITGROUPS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_editor_editgroups"
      uppercase_operation_id: "GET_EDITOR_EDITGROUPS"
      path: "/editor/:editor_id/editgroups"
      HttpMethod: "Get"
      httpmethod: "get"
  /editor/{editor_id}/annotations:
    get:
      tags:
      - "edit-lifecycle"
      operationId: "get_editor_annotations"
      parameters:
      - name: "editor_id"
        in: "path"
        description: "base32-encoded unique identifier"
        required: true
        type: "string"
        maxLength: 26
        minLength: 26
        pattern: "[a-zA-Z2-7]{26}"
        formatString: "\\\"{}\\\""
        example: "\"editor_id_example\".to_string()"
      - name: "limit"
        in: "query"
        required: false
        type: "integer"
        format: "int64"
        formatString: "{:?}"
        example: "Some(789)"
      - name: "before"
        in: "query"
        required: false
        type: "string"
        format: "date-time"
        formatString: "{:?}"
        example: "None"
      - name: "since"
        in: "query"
        required: false
        type: "string"
        format: "date-time"
        formatString: "{:?}"
        example: "None"
      responses:
        200:
          description: "Success"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/editgroup_annotation"
          x-responseId: "Success"
          x-uppercaseResponseId: "SUCCESS"
          uppercase_operation_id: "GET_EDITOR_ANNOTATIONS"
          uppercase_data_type: "VEC<EDITGROUPANNOTATION>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_EDITOR_ANNOTATIONS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "GET_EDITOR_ANNOTATIONS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "GET_EDITOR_ANNOTATIONS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_EDITOR_ANNOTATIONS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_EDITOR_ANNOTATIONS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_editor_annotations"
      uppercase_operation_id: "GET_EDITOR_ANNOTATIONS"
      path: "/editor/:editor_id/annotations"
      HttpMethod: "Get"
      httpmethod: "get"
  /editgroup:
    post:
      tags:
      - "edit-lifecycle"
      operationId: "create_editgroup"
      parameters:
      - in: "body"
        name: "editgroup"
        required: true
        schema:
          $ref: "#/definitions/editgroup"
        uppercase_data_type: "EDITGROUP"
        refName: "editgroup"
        formatString: "{:?}"
        example: "???"
        model_key: "editgroup_edits"
        uppercase_operation_id: "CREATE_EDITGROUP"
        consumesJson: true
      responses:
        201:
          description: "Successfully Created"
          schema:
            $ref: "#/definitions/editgroup"
          x-responseId: "SuccessfullyCreated"
          x-uppercaseResponseId: "SUCCESSFULLY_CREATED"
          uppercase_operation_id: "CREATE_EDITGROUP"
          uppercase_data_type: "EDITGROUP"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "CREATE_EDITGROUP"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "CREATE_EDITGROUP"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "CREATE_EDITGROUP"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "CREATE_EDITGROUP"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "CREATE_EDITGROUP"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "create_editgroup"
      uppercase_operation_id: "CREATE_EDITGROUP"
      path: "/editgroup"
      HttpMethod: "Post"
      httpmethod: "post"
      noClientExample: true
  /editgroup/{editgroup_id}:
    get:
      tags:
      - "edit-lifecycle"
      operationId: "get_editgroup"
      parameters:
      - name: "editgroup_id"
        in: "path"
        description: "base32-encoded unique identifier"
        required: true
        type: "string"
        maxLength: 26
        minLength: 26
        pattern: "[a-zA-Z2-7]{26}"
        formatString: "\\\"{}\\\""
        example: "\"editgroup_id_example\".to_string()"
      responses:
        200:
          description: "Found"
          schema:
            $ref: "#/definitions/editgroup"
          x-responseId: "Found"
          x-uppercaseResponseId: "FOUND"
          uppercase_operation_id: "GET_EDITGROUP"
          uppercase_data_type: "EDITGROUP"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_EDITGROUP"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_EDITGROUP"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_EDITGROUP"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_editgroup"
      uppercase_operation_id: "GET_EDITGROUP"
      path: "/editgroup/:editgroup_id"
      HttpMethod: "Get"
      httpmethod: "get"
    put:
      operationId: "update_editgroup"
      parameters:
      - name: "editgroup_id"
        in: "path"
        description: "base32-encoded unique identifier"
        required: true
        type: "string"
        maxLength: 26
        minLength: 26
        pattern: "[a-zA-Z2-7]{26}"
        formatString: "\\\"{}\\\""
        example: "\"editgroup_id_example\".to_string()"
      - in: "body"
        name: "editgroup"
        required: true
        schema:
          $ref: "#/definitions/editgroup"
        uppercase_data_type: "EDITGROUP"
        refName: "editgroup"
        formatString: "{:?}"
        example: "???"
        model_key: "editgroup_edits"
        uppercase_operation_id: "UPDATE_EDITGROUP"
        consumesJson: true
      - name: "submit"
        in: "query"
        required: false
        type: "boolean"
        formatString: "{:?}"
        example: "Some(true)"
      responses:
        200:
          description: "Updated Editgroup"
          schema:
            $ref: "#/definitions/editgroup"
          x-responseId: "UpdatedEditgroup"
          x-uppercaseResponseId: "UPDATED_EDITGROUP"
          uppercase_operation_id: "UPDATE_EDITGROUP"
          uppercase_data_type: "EDITGROUP"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "UPDATE_EDITGROUP"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "UPDATE_EDITGROUP"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "UPDATE_EDITGROUP"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "UPDATE_EDITGROUP"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "UPDATE_EDITGROUP"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "update_editgroup"
      uppercase_operation_id: "UPDATE_EDITGROUP"
      path: "/editgroup/:editgroup_id"
      HttpMethod: "Put"
      httpmethod: "put"
      noClientExample: true
  /editgroup/{editgroup_id}/accept:
    post:
      tags:
      - "edit-lifecycle"
      operationId: "accept_editgroup"
      parameters:
      - name: "editgroup_id"
        in: "path"
        description: "base32-encoded unique identifier"
        required: true
        type: "string"
        maxLength: 26
        minLength: 26
        pattern: "[a-zA-Z2-7]{26}"
        formatString: "\\\"{}\\\""
        example: "\"editgroup_id_example\".to_string()"
      responses:
        200:
          description: "Merged Successfully"
          schema:
            $ref: "#/definitions/success"
          x-responseId: "MergedSuccessfully"
          x-uppercaseResponseId: "MERGED_SUCCESSFULLY"
          uppercase_operation_id: "ACCEPT_EDITGROUP"
          uppercase_data_type: "SUCCESS"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "ACCEPT_EDITGROUP"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "ACCEPT_EDITGROUP"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "ACCEPT_EDITGROUP"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "ACCEPT_EDITGROUP"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        409:
          description: "Edit Conflict"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "EditConflict"
          x-uppercaseResponseId: "EDIT_CONFLICT"
          uppercase_operation_id: "ACCEPT_EDITGROUP"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "ACCEPT_EDITGROUP"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "accept_editgroup"
      uppercase_operation_id: "ACCEPT_EDITGROUP"
      path: "/editgroup/:editgroup_id/accept"
      HttpMethod: "Post"
      httpmethod: "post"
  /editgroup/{editgroup_id}/annotations:
    get:
      tags:
      - "edit-lifecycle"
      operationId: "get_editgroup_annotations"
      parameters:
      - name: "editgroup_id"
        in: "path"
        description: "base32-encoded unique identifier"
        required: true
        type: "string"
        maxLength: 26
        minLength: 26
        pattern: "[a-zA-Z2-7]{26}"
        formatString: "\\\"{}\\\""
        example: "\"editgroup_id_example\".to_string()"
      - name: "expand"
        in: "query"
        description: "List of sub-entities to expand in response. For editgroups:\
          \ 'editors'"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"expand_example\".to_string())"
      responses:
        200:
          description: "Success"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/editgroup_annotation"
          x-responseId: "Success"
          x-uppercaseResponseId: "SUCCESS"
          uppercase_operation_id: "GET_EDITGROUP_ANNOTATIONS"
          uppercase_data_type: "VEC<EDITGROUPANNOTATION>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_EDITGROUP_ANNOTATIONS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "GET_EDITGROUP_ANNOTATIONS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "GET_EDITGROUP_ANNOTATIONS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_EDITGROUP_ANNOTATIONS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_EDITGROUP_ANNOTATIONS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "get_editgroup_annotations"
      uppercase_operation_id: "GET_EDITGROUP_ANNOTATIONS"
      path: "/editgroup/:editgroup_id/annotations"
      HttpMethod: "Get"
      httpmethod: "get"
  /editgroup/{editgroup_id}/annotation:
    post:
      tags:
      - "edit-lifecycle"
      operationId: "create_editgroup_annotation"
      parameters:
      - name: "editgroup_id"
        in: "path"
        description: "base32-encoded unique identifier"
        required: true
        type: "string"
        maxLength: 26
        minLength: 26
        pattern: "[a-zA-Z2-7]{26}"
        formatString: "\\\"{}\\\""
        example: "\"editgroup_id_example\".to_string()"
      - in: "body"
        name: "annotation"
        required: true
        schema:
          $ref: "#/definitions/editgroup_annotation"
        uppercase_data_type: "EDITGROUPANNOTATION"
        refName: "editgroup_annotation"
        formatString: "{:?}"
        example: "???"
        model_key: "editgroup_edits"
        uppercase_operation_id: "CREATE_EDITGROUP_ANNOTATION"
        consumesJson: true
      responses:
        201:
          description: "Created"
          schema:
            $ref: "#/definitions/editgroup_annotation"
          x-responseId: "Created"
          x-uppercaseResponseId: "CREATED"
          uppercase_operation_id: "CREATE_EDITGROUP_ANNOTATION"
          uppercase_data_type: "EDITGROUPANNOTATION"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "CREATE_EDITGROUP_ANNOTATION"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "CREATE_EDITGROUP_ANNOTATION"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "CREATE_EDITGROUP_ANNOTATION"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "CREATE_EDITGROUP_ANNOTATION"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "CREATE_EDITGROUP_ANNOTATION"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "create_editgroup_annotation"
      uppercase_operation_id: "CREATE_EDITGROUP_ANNOTATION"
      path: "/editgroup/:editgroup_id/annotation"
      HttpMethod: "Post"
      httpmethod: "post"
      noClientExample: true
  /editgroup/reviewable:
    get:
      operationId: "get_editgroups_reviewable"
      parameters:
      - name: "expand"
        in: "query"
        description: "List of sub-entities to expand in response. For editgroups:\
          \ 'editors'"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"expand_example\".to_string())"
      - name: "limit"
        in: "query"
        required: false
        type: "integer"
        format: "int64"
        formatString: "{:?}"
        example: "Some(789)"
      - name: "before"
        in: "query"
        required: false
        type: "string"
        format: "date-time"
        formatString: "{:?}"
        example: "None"
      - name: "since"
        in: "query"
        required: false
        type: "string"
        format: "date-time"
        formatString: "{:?}"
        example: "None"
      responses:
        200:
          description: "Found"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/editgroup"
          x-responseId: "Found"
          x-uppercaseResponseId: "FOUND"
          uppercase_operation_id: "GET_EDITGROUPS_REVIEWABLE"
          uppercase_data_type: "VEC<EDITGROUP>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_EDITGROUPS_REVIEWABLE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_EDITGROUPS_REVIEWABLE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_EDITGROUPS_REVIEWABLE"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_editgroups_reviewable"
      uppercase_operation_id: "GET_EDITGROUPS_REVIEWABLE"
      path: "/editgroup/reviewable"
      HttpMethod: "Get"
      httpmethod: "get"
  /changelog:
    get:
      tags:
      - "edit-lifecycle"
      operationId: "get_changelog"
      parameters:
      - name: "limit"
        in: "query"
        required: false
        type: "integer"
        format: "int64"
        formatString: "{:?}"
        example: "Some(789)"
      responses:
        200:
          description: "Success"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/changelog_entry"
          x-responseId: "Success"
          x-uppercaseResponseId: "SUCCESS"
          uppercase_operation_id: "GET_CHANGELOG"
          uppercase_data_type: "VEC<CHANGELOGENTRY>"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_CHANGELOG"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_CHANGELOG"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_changelog"
      uppercase_operation_id: "GET_CHANGELOG"
      path: "/changelog"
      HttpMethod: "Get"
      httpmethod: "get"
  /changelog/{index}:
    get:
      tags:
      - "edit-lifecycle"
      operationId: "get_changelog_entry"
      parameters:
      - name: "index"
        in: "path"
        required: true
        type: "integer"
        format: "int64"
        formatString: "{}"
        example: "789"
      responses:
        200:
          description: "Found Changelog Entry"
          schema:
            $ref: "#/definitions/changelog_entry"
          x-responseId: "FoundChangelogEntry"
          x-uppercaseResponseId: "FOUND_CHANGELOG_ENTRY"
          uppercase_operation_id: "GET_CHANGELOG_ENTRY"
          uppercase_data_type: "CHANGELOGENTRY"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "GET_CHANGELOG_ENTRY"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_CHANGELOG_ENTRY"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_CHANGELOG_ENTRY"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_changelog_entry"
      uppercase_operation_id: "GET_CHANGELOG_ENTRY"
      path: "/changelog/:index"
      HttpMethod: "Get"
      httpmethod: "get"
  /auth/oidc:
    post:
      operationId: "auth_oidc"
      parameters:
      - in: "body"
        name: "oidc_params"
        required: true
        schema:
          $ref: "#/definitions/auth_oidc"
        uppercase_data_type: "AUTHOIDC"
        refName: "auth_oidc"
        formatString: "{:?}"
        example: "???"
        model_key: "editgroup_edits"
        uppercase_operation_id: "AUTH_OIDC"
        consumesJson: true
      responses:
        200:
          description: "Found"
          schema:
            $ref: "#/definitions/auth_oidc_result"
          x-responseId: "Found"
          x-uppercaseResponseId: "FOUND"
          uppercase_operation_id: "AUTH_OIDC"
          uppercase_data_type: "AUTHOIDCRESULT"
          producesJson: true
        201:
          description: "Created"
          schema:
            $ref: "#/definitions/auth_oidc_result"
          x-responseId: "Created"
          x-uppercaseResponseId: "CREATED"
          uppercase_operation_id: "AUTH_OIDC"
          uppercase_data_type: "AUTHOIDCRESULT"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "AUTH_OIDC"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "AUTH_OIDC"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "AUTH_OIDC"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        409:
          description: "Conflict"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Conflict"
          x-uppercaseResponseId: "CONFLICT"
          uppercase_operation_id: "AUTH_OIDC"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "AUTH_OIDC"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "auth_oidc"
      uppercase_operation_id: "AUTH_OIDC"
      path: "/auth/oidc"
      HttpMethod: "Post"
      httpmethod: "post"
      noClientExample: true
  /auth/check:
    get:
      operationId: "auth_check"
      parameters:
      - name: "role"
        in: "query"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"role_example\".to_string())"
      responses:
        200:
          description: "Success"
          schema:
            $ref: "#/definitions/success"
          x-responseId: "Success"
          x-uppercaseResponseId: "SUCCESS"
          uppercase_operation_id: "AUTH_CHECK"
          uppercase_data_type: "SUCCESS"
          producesJson: true
        400:
          description: "Bad Request"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "BadRequest"
          x-uppercaseResponseId: "BAD_REQUEST"
          uppercase_operation_id: "AUTH_CHECK"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        401:
          description: "Not Authorized"
          schema:
            $ref: "#/definitions/error_response"
          headers:
            WWW_Authenticate:
              type: "string"
          x-responseId: "NotAuthorized"
          x-uppercaseResponseId: "NOT_AUTHORIZED"
          uppercase_operation_id: "AUTH_CHECK"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        403:
          description: "Forbidden"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Forbidden"
          x-uppercaseResponseId: "FORBIDDEN"
          uppercase_operation_id: "AUTH_CHECK"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "AUTH_CHECK"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      security:
      - Bearer: []
      operation_id: "auth_check"
      uppercase_operation_id: "AUTH_CHECK"
      path: "/auth/check"
      HttpMethod: "Get"
      httpmethod: "get"
securityDefinitions:
  Bearer:
    type: "apiKey"
    name: "Authorization"
    in: "header"
definitions:
  error_response:
    type: "object"
    required:
    - "error"
    - "message"
    - "success"
    properties:
      success:
        type: "boolean"
      error:
        type: "string"
      message:
        type: "string"
        example: "A really confusing, totally unexpected thing happened"
    upperCaseName: "ERROR_RESPONSE"
  success:
    type: "object"
    required:
    - "message"
    - "success"
    properties:
      success:
        type: "boolean"
      message:
        type: "string"
        example: "The computers did the thing successfully!"
    example:
      success: true
      message: "The computers did the thing successfully!"
    upperCaseName: "SUCCESS"
  container_entity:
    type: "object"
    properties:
      wikidata_qid:
        type: "string"
      issnl:
        type: "string"
        example: "1234-5678"
        minLength: 9
        maxLength: 9
        pattern: "\\d{4}-\\d{3}[0-9X]"
      publisher:
        type: "string"
        example: "Society of Curious Students"
      container_type:
        type: "string"
        description: "Eg, 'journal'"
      name:
        type: "string"
        example: "Journal of Important Results"
        description: "Required for valid entities"
      edit_extra:
        type: "object"
      extra:
        type: "object"
      redirect:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      revision:
        type: "string"
        example: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        minLength: 36
        maxLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
      ident:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      state:
        type: "string"
        enum:
        - "wip"
        - "active"
        - "redirect"
        - "deleted"
    example:
      redirect: "q3nouwy3nnbsvo3h5klxsx4a7y"
      ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
      extra: "{}"
      container_type: "container_type"
      name: "Journal of Important Results"
      publisher: "Society of Curious Students"
      issnl: "1234-5678"
      wikidata_qid: "wikidata_qid"
      state: "wip"
      edit_extra: "{}"
      revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
    upperCaseName: "CONTAINER_ENTITY"
  creator_entity:
    type: "object"
    properties:
      wikidata_qid:
        type: "string"
      orcid:
        type: "string"
        example: "0000-0002-1825-0097"
        minLength: 19
        maxLength: 19
        pattern: "\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]"
      surname:
        type: "string"
      given_name:
        type: "string"
      display_name:
        type: "string"
        example: "Grace Hopper"
        description: "Required for valid entities"
      state:
        type: "string"
        enum:
        - "wip"
        - "active"
        - "redirect"
        - "deleted"
      ident:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      revision:
        type: "string"
        example: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        minLength: 36
        maxLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
      redirect:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      extra:
        type: "object"
      edit_extra:
        type: "object"
    example:
      redirect: "q3nouwy3nnbsvo3h5klxsx4a7y"
      surname: "surname"
      ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
      extra: "{}"
      orcid: "0000-0002-1825-0097"
      wikidata_qid: "wikidata_qid"
      state: "wip"
      given_name: "given_name"
      display_name: "Grace Hopper"
      edit_extra: "{}"
      revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
    upperCaseName: "CREATOR_ENTITY"
  file_entity:
    type: "object"
    properties:
      release_ids:
        type: "array"
        items:
          type: "string"
          example: "q3nouwy3nnbsvo3h5klxsx4a7y"
          description: "base32-encoded unique identifier"
          minLength: 26
          maxLength: 26
          pattern: "[a-zA-Z2-7]{26}"
      mimetype:
        type: "string"
        example: "application/pdf"
      urls:
        type: "array"
        items:
          $ref: "#/definitions/file_entity_urls"
      sha256:
        type: "string"
        example: "cb1c378f464d5935ddaa8de28446d82638396c61f042295d7fb85e3cccc9e452"
        minLength: 64
        maxLength: 64
        pattern: "[a-f0-9]{64}"
      sha1:
        type: "string"
        example: "e9dd75237c94b209dc3ccd52722de6931a310ba3"
        minLength: 40
        maxLength: 40
        pattern: "[a-f0-9]{40}"
      md5:
        type: "string"
        example: "1b39813549077b2347c0f370c3864b40"
        minLength: 32
        maxLength: 32
        pattern: "[a-f0-9]{32}"
      size:
        type: "integer"
        format: "int64"
        example: 1048576
      edit_extra:
        type: "object"
      extra:
        type: "object"
      redirect:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      revision:
        type: "string"
        example: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        minLength: 36
        maxLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
      ident:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      state:
        type: "string"
        enum:
        - "wip"
        - "active"
        - "redirect"
        - "deleted"
    example:
      redirect: "q3nouwy3nnbsvo3h5klxsx4a7y"
      sha256: "cb1c378f464d5935ddaa8de28446d82638396c61f042295d7fb85e3cccc9e452"
      ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
      revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      sha1: "e9dd75237c94b209dc3ccd52722de6931a310ba3"
      urls:
      - rel: "webarchive"
        url: "https://example.edu/~frau/prcding.pdf"
      - rel: "webarchive"
        url: "https://example.edu/~frau/prcding.pdf"
      size: 1048576
      extra: "{}"
      mimetype: "application/pdf"
      state: "wip"
      release_ids:
      - "q3nouwy3nnbsvo3h5klxsx4a7y"
      - "q3nouwy3nnbsvo3h5klxsx4a7y"
      edit_extra: "{}"
      md5: "1b39813549077b2347c0f370c3864b40"
    upperCaseName: "FILE_ENTITY"
  fileset_entity:
    type: "object"
    properties:
      release_ids:
        type: "array"
        items:
          type: "string"
          example: "q3nouwy3nnbsvo3h5klxsx4a7y"
          description: "base32-encoded unique identifier"
          minLength: 26
          maxLength: 26
          pattern: "[a-zA-Z2-7]{26}"
      urls:
        type: "array"
        items:
          $ref: "#/definitions/file_entity_urls"
      manifest:
        type: "array"
        items:
          $ref: "#/definitions/fileset_entity_manifest"
      state:
        type: "string"
        enum:
        - "wip"
        - "active"
        - "redirect"
        - "deleted"
      ident:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      revision:
        type: "string"
        example: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        minLength: 36
        maxLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
      redirect:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      extra:
        type: "object"
      edit_extra:
        type: "object"
    example:
      redirect: "q3nouwy3nnbsvo3h5klxsx4a7y"
      urls:
      - rel: "webarchive"
        url: "https://example.edu/~frau/prcding.pdf"
      - rel: "webarchive"
        url: "https://example.edu/~frau/prcding.pdf"
      manifest:
      - sha1: "e9dd75237c94b209dc3ccd52722de6931a310ba3"
        path: "img/cat.png"
        size: 1048576
        sha256: "cb1c378f464d5935ddaa8de28446d82638396c61f042295d7fb85e3cccc9e452"
        extra: "{}"
        md5: "1b39813549077b2347c0f370c3864b40"
      - sha1: "e9dd75237c94b209dc3ccd52722de6931a310ba3"
        path: "img/cat.png"
        size: 1048576
        sha256: "cb1c378f464d5935ddaa8de28446d82638396c61f042295d7fb85e3cccc9e452"
        extra: "{}"
        md5: "1b39813549077b2347c0f370c3864b40"
      ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
      extra: "{}"
      state: "wip"
      release_ids:
      - "q3nouwy3nnbsvo3h5klxsx4a7y"
      - "q3nouwy3nnbsvo3h5klxsx4a7y"
      edit_extra: "{}"
      revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
    upperCaseName: "FILESET_ENTITY"
  webcapture_entity:
    type: "object"
    properties:
      release_ids:
        type: "array"
        items:
          type: "string"
          example: "q3nouwy3nnbsvo3h5klxsx4a7y"
          description: "base32-encoded unique identifier"
          minLength: 26
          maxLength: 26
          pattern: "[a-zA-Z2-7]{26}"
      timestamp:
        type: "string"
        format: "date-time"
        description: "same format as CDX line timestamp (UTC, etc). Corresponds to\
          \ the overall capture timestamp. Can be the earliest or average of CDX timestamps\
          \ if that makes sense."
      original_url:
        type: "string"
        format: "url"
        example: "http://asheesh.org"
      archive_urls:
        type: "array"
        items:
          $ref: "#/definitions/webcapture_entity_archive_urls"
      cdx:
        type: "array"
        items:
          $ref: "#/definitions/webcapture_entity_cdx"
      edit_extra:
        type: "object"
      extra:
        type: "object"
      redirect:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      revision:
        type: "string"
        example: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        minLength: 36
        maxLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
      ident:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      state:
        type: "string"
        enum:
        - "wip"
        - "active"
        - "redirect"
        - "deleted"
    example:
      redirect: "q3nouwy3nnbsvo3h5klxsx4a7y"
      archive_urls:
      - rel: "wayback"
        url: "https://web.archive.org/web/"
      - rel: "wayback"
        url: "https://web.archive.org/web/"
      original_url: "http://asheesh.org"
      cdx:
      - sha1: "e9dd75237c94b209dc3ccd52722de6931a310ba3"
        surt: "org,asheesh)/apus/ch1/node15.html"
        status_code: 200
        sha256: "cb1c378f464d5935ddaa8de28446d82638396c61f042295d7fb85e3cccc9e452"
        mimetype: "text/html"
        url: "http://www.asheesh.org:80/APUS/ch1/node15.html"
        timestamp: "2016-09-19T17:20:24Z"
      - sha1: "e9dd75237c94b209dc3ccd52722de6931a310ba3"
        surt: "org,asheesh)/apus/ch1/node15.html"
        status_code: 200
        sha256: "cb1c378f464d5935ddaa8de28446d82638396c61f042295d7fb85e3cccc9e452"
        mimetype: "text/html"
        url: "http://www.asheesh.org:80/APUS/ch1/node15.html"
        timestamp: "2016-09-19T17:20:24Z"
      ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
      extra: "{}"
      state: "wip"
      release_ids:
      - "q3nouwy3nnbsvo3h5klxsx4a7y"
      - "q3nouwy3nnbsvo3h5klxsx4a7y"
      edit_extra: "{}"
      timestamp: "2000-01-23T04:56:07.000+00:00"
      revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
    upperCaseName: "WEBCAPTURE_ENTITY"
  release_entity:
    type: "object"
    properties:
      abstracts:
        type: "array"
        items:
          $ref: "#/definitions/release_entity_abstracts"
      refs:
        type: "array"
        items:
          $ref: "#/definitions/release_ref"
      contribs:
        type: "array"
        items:
          $ref: "#/definitions/release_contrib"
      license_slug:
        type: "string"
        description: "Short version of license name. Eg, 'CC-BY'"
      language:
        type: "string"
        description: "Two-letter RFC1766/ISO639-1 language code, with extensions"
      publisher:
        type: "string"
      pages:
        type: "string"
      issue:
        type: "string"
        example: "12"
      volume:
        type: "string"
      jstor_id:
        type: "string"
      arxiv_id:
        type: "string"
      core_id:
        type: "string"
      pmcid:
        type: "string"
      pmid:
        type: "string"
      isbn13:
        type: "string"
      wikidata_qid:
        type: "string"
      doi:
        type: "string"
        example: "10.1234/abcde.789"
      release_year:
        type: "integer"
        format: "int64"
        example: 2014
      release_date:
        type: "string"
        format: "date"
      release_status:
        type: "string"
        example: "preprint, retracted"
      release_type:
        type: "string"
        example: "book"
      container_id:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
      webcaptures:
        type: "array"
        description: "Optional; GET-only"
        items:
          $ref: "#/definitions/webcapture_entity"
      filesets:
        type: "array"
        description: "Optional; GET-only"
        items:
          $ref: "#/definitions/fileset_entity"
      files:
        type: "array"
        description: "Optional; GET-only"
        items:
          $ref: "#/definitions/file_entity"
      container:
        description: "Optional; GET-only"
        $ref: "#/definitions/container_entity"
      work_id:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
      original_title:
        type: "string"
        description: "Title in original language (or, the language of the full text\
          \ of this release)"
      title:
        type: "string"
        description: "Required for valid entities. The title used in citations and\
          \ for display; usually English"
      state:
        type: "string"
        enum:
        - "wip"
        - "active"
        - "redirect"
        - "deleted"
      ident:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      revision:
        type: "string"
        example: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        minLength: 36
        maxLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
      redirect:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      extra:
        type: "object"
      edit_extra:
        type: "object"
    example:
      container:
        redirect: "q3nouwy3nnbsvo3h5klxsx4a7y"
        ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        extra: "{}"
        container_type: "container_type"
        name: "Journal of Important Results"
        publisher: "Society of Curious Students"
        issnl: "1234-5678"
        wikidata_qid: "wikidata_qid"
        state: "wip"
        edit_extra: "{}"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      webcaptures:
      - redirect: "q3nouwy3nnbsvo3h5klxsx4a7y"
        archive_urls:
        - rel: "wayback"
          url: "https://web.archive.org/web/"
        - rel: "wayback"
          url: "https://web.archive.org/web/"
        original_url: "http://asheesh.org"
        cdx:
        - sha1: "e9dd75237c94b209dc3ccd52722de6931a310ba3"
          surt: "org,asheesh)/apus/ch1/node15.html"
          status_code: 200
          sha256: "cb1c378f464d5935ddaa8de28446d82638396c61f042295d7fb85e3cccc9e452"
          mimetype: "text/html"
          url: "http://www.asheesh.org:80/APUS/ch1/node15.html"
          timestamp: "2016-09-19T17:20:24Z"
        - sha1: "e9dd75237c94b209dc3ccd52722de6931a310ba3"
          surt: "org,asheesh)/apus/ch1/node15.html"
          status_code: 200
          sha256: "cb1c378f464d5935ddaa8de28446d82638396c61f042295d7fb85e3cccc9e452"
          mimetype: "text/html"
          url: "http://www.asheesh.org:80/APUS/ch1/node15.html"
          timestamp: "2016-09-19T17:20:24Z"
        ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        extra: "{}"
        state: "wip"
        release_ids:
        - "q3nouwy3nnbsvo3h5klxsx4a7y"
        - "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_extra: "{}"
        timestamp: "2000-01-23T04:56:07.000+00:00"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      - redirect: "q3nouwy3nnbsvo3h5klxsx4a7y"
        archive_urls:
        - rel: "wayback"
          url: "https://web.archive.org/web/"
        - rel: "wayback"
          url: "https://web.archive.org/web/"
        original_url: "http://asheesh.org"
        cdx:
        - sha1: "e9dd75237c94b209dc3ccd52722de6931a310ba3"
          surt: "org,asheesh)/apus/ch1/node15.html"
          status_code: 200
          sha256: "cb1c378f464d5935ddaa8de28446d82638396c61f042295d7fb85e3cccc9e452"
          mimetype: "text/html"
          url: "http://www.asheesh.org:80/APUS/ch1/node15.html"
          timestamp: "2016-09-19T17:20:24Z"
        - sha1: "e9dd75237c94b209dc3ccd52722de6931a310ba3"
          surt: "org,asheesh)/apus/ch1/node15.html"
          status_code: 200
          sha256: "cb1c378f464d5935ddaa8de28446d82638396c61f042295d7fb85e3cccc9e452"
          mimetype: "text/html"
          url: "http://www.asheesh.org:80/APUS/ch1/node15.html"
          timestamp: "2016-09-19T17:20:24Z"
        ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        extra: "{}"
        state: "wip"
        release_ids:
        - "q3nouwy3nnbsvo3h5klxsx4a7y"
        - "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_extra: "{}"
        timestamp: "2000-01-23T04:56:07.000+00:00"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
      language: "language"
      title: "title"
      contribs:
      - raw_affiliation: "raw_affiliation"
        creator:
          redirect: "q3nouwy3nnbsvo3h5klxsx4a7y"
          surname: "surname"
          ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          extra: "{}"
          orcid: "0000-0002-1825-0097"
          wikidata_qid: "wikidata_qid"
          state: "wip"
          given_name: "given_name"
          display_name: "Grace Hopper"
          edit_extra: "{}"
          revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        raw_name: "raw_name"
        role: "role"
        extra: "{}"
        creator_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        index: 1
      - raw_affiliation: "raw_affiliation"
        creator:
          redirect: "q3nouwy3nnbsvo3h5klxsx4a7y"
          surname: "surname"
          ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          extra: "{}"
          orcid: "0000-0002-1825-0097"
          wikidata_qid: "wikidata_qid"
          state: "wip"
          given_name: "given_name"
          display_name: "Grace Hopper"
          edit_extra: "{}"
          revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        raw_name: "raw_name"
        role: "role"
        extra: "{}"
        creator_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        index: 1
      pages: "pages"
      core_id: "core_id"
      extra: "{}"
      state: "wip"
      edit_extra: "{}"
      jstor_id: "jstor_id"
      redirect: "q3nouwy3nnbsvo3h5klxsx4a7y"
      work_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
      issue: "12"
      original_title: "original_title"
      abstracts:
      - sha1: "e9dd75237c94b209dc3ccd52722de6931a310ba3"
        mimetype: "application/xml+jats"
        lang: "en"
        content: "<jats:p>Some abstract thing goes here</jats:p>"
      - sha1: "e9dd75237c94b209dc3ccd52722de6931a310ba3"
        mimetype: "application/xml+jats"
        lang: "en"
        content: "<jats:p>Some abstract thing goes here</jats:p>"
      release_year: 2014
      release_type: "book"
      wikidata_qid: "wikidata_qid"
      pmid: "pmid"
      release_status: "preprint, retracted"
      revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      volume: "volume"
      license_slug: "license_slug"
      refs:
      - target_release_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        container_name: "container_name"
        year: 6
        extra: "{}"
        index: 0
        title: "title"
        locator: "p123"
        key: "key"
      - target_release_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        container_name: "container_name"
        year: 6
        extra: "{}"
        index: 0
        title: "title"
        locator: "p123"
        key: "key"
      release_date: "2000-01-23"
      isbn13: "isbn13"
      publisher: "publisher"
      files:
      - redirect: "q3nouwy3nnbsvo3h5klxsx4a7y"
        sha256: "cb1c378f464d5935ddaa8de28446d82638396c61f042295d7fb85e3cccc9e452"
        ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        sha1: "e9dd75237c94b209dc3ccd52722de6931a310ba3"
        urls:
        - rel: "webarchive"
          url: "https://example.edu/~frau/prcding.pdf"
        - rel: "webarchive"
          url: "https://example.edu/~frau/prcding.pdf"
        size: 1048576
        extra: "{}"
        mimetype: "application/pdf"
        state: "wip"
        release_ids:
        - "q3nouwy3nnbsvo3h5klxsx4a7y"
        - "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_extra: "{}"
        md5: "1b39813549077b2347c0f370c3864b40"
      - redirect: "q3nouwy3nnbsvo3h5klxsx4a7y"
        sha256: "cb1c378f464d5935ddaa8de28446d82638396c61f042295d7fb85e3cccc9e452"
        ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        sha1: "e9dd75237c94b209dc3ccd52722de6931a310ba3"
        urls:
        - rel: "webarchive"
          url: "https://example.edu/~frau/prcding.pdf"
        - rel: "webarchive"
          url: "https://example.edu/~frau/prcding.pdf"
        size: 1048576
        extra: "{}"
        mimetype: "application/pdf"
        state: "wip"
        release_ids:
        - "q3nouwy3nnbsvo3h5klxsx4a7y"
        - "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_extra: "{}"
        md5: "1b39813549077b2347c0f370c3864b40"
      arxiv_id: "arxiv_id"
      filesets:
      - redirect: "q3nouwy3nnbsvo3h5klxsx4a7y"
        urls:
        - rel: "webarchive"
          url: "https://example.edu/~frau/prcding.pdf"
        - rel: "webarchive"
          url: "https://example.edu/~frau/prcding.pdf"
        manifest:
        - sha1: "e9dd75237c94b209dc3ccd52722de6931a310ba3"
          path: "img/cat.png"
          size: 1048576
          sha256: "cb1c378f464d5935ddaa8de28446d82638396c61f042295d7fb85e3cccc9e452"
          extra: "{}"
          md5: "1b39813549077b2347c0f370c3864b40"
        - sha1: "e9dd75237c94b209dc3ccd52722de6931a310ba3"
          path: "img/cat.png"
          size: 1048576
          sha256: "cb1c378f464d5935ddaa8de28446d82638396c61f042295d7fb85e3cccc9e452"
          extra: "{}"
          md5: "1b39813549077b2347c0f370c3864b40"
        ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        extra: "{}"
        state: "wip"
        release_ids:
        - "q3nouwy3nnbsvo3h5klxsx4a7y"
        - "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_extra: "{}"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      - redirect: "q3nouwy3nnbsvo3h5klxsx4a7y"
        urls:
        - rel: "webarchive"
          url: "https://example.edu/~frau/prcding.pdf"
        - rel: "webarchive"
          url: "https://example.edu/~frau/prcding.pdf"
        manifest:
        - sha1: "e9dd75237c94b209dc3ccd52722de6931a310ba3"
          path: "img/cat.png"
          size: 1048576
          sha256: "cb1c378f464d5935ddaa8de28446d82638396c61f042295d7fb85e3cccc9e452"
          extra: "{}"
          md5: "1b39813549077b2347c0f370c3864b40"
        - sha1: "e9dd75237c94b209dc3ccd52722de6931a310ba3"
          path: "img/cat.png"
          size: 1048576
          sha256: "cb1c378f464d5935ddaa8de28446d82638396c61f042295d7fb85e3cccc9e452"
          extra: "{}"
          md5: "1b39813549077b2347c0f370c3864b40"
        ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        extra: "{}"
        state: "wip"
        release_ids:
        - "q3nouwy3nnbsvo3h5klxsx4a7y"
        - "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_extra: "{}"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      pmcid: "pmcid"
      container_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
      doi: "10.1234/abcde.789"
    upperCaseName: "RELEASE_ENTITY"
  work_entity:
    type: "object"
    properties:
      edit_extra:
        type: "object"
      extra:
        type: "object"
      redirect:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      revision:
        type: "string"
        example: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        minLength: 36
        maxLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
      ident:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      state:
        type: "string"
        enum:
        - "wip"
        - "active"
        - "redirect"
        - "deleted"
    example:
      redirect: "q3nouwy3nnbsvo3h5klxsx4a7y"
      ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
      extra: "{}"
      state: "wip"
      edit_extra: "{}"
      revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
    upperCaseName: "WORK_ENTITY"
  entity_history_entry:
    type: "object"
    required:
    - "changelog_entry"
    - "edit"
    - "editgroup"
    properties:
      edit:
        $ref: "#/definitions/entity_edit"
      editgroup:
        $ref: "#/definitions/editgroup"
      changelog_entry:
        $ref: "#/definitions/changelog_entry"
    example:
      editgroup:
        editor:
          is_admin: true
          is_active: true
          editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          is_bot: true
          username: "zerocool93"
        changelog_index: 1048576
        submitted: "2000-01-23T04:56:07.000+00:00"
        extra: "{}"
        edits:
          works:
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          webcaptures:
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          creators:
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          files:
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          containers:
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          filesets:
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          releases:
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "description"
        annotations:
        - annotation_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          editor:
            is_admin: true
            is_active: true
            editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            is_bot: true
            username: "zerocool93"
          created: "2000-01-23T04:56:07.000+00:00"
          extra: "{}"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          comment_markdown: "comment_markdown"
        - annotation_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          editor:
            is_admin: true
            is_active: true
            editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            is_bot: true
            username: "zerocool93"
          created: "2000-01-23T04:56:07.000+00:00"
          extra: "{}"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          comment_markdown: "comment_markdown"
        editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
      edit:
        ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        extra: "{}"
        redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      changelog_entry:
        editgroup:
          editor:
            is_admin: true
            is_active: true
            editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            is_bot: true
            username: "zerocool93"
          changelog_index: 1048576
          submitted: "2000-01-23T04:56:07.000+00:00"
          extra: "{}"
          edits:
            works:
            - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              extra: "{}"
              redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
              prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              extra: "{}"
              redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
              prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            webcaptures:
            - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              extra: "{}"
              redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
              prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              extra: "{}"
              redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
              prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            creators:
            - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              extra: "{}"
              redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
              prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              extra: "{}"
              redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
              prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            files:
            - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              extra: "{}"
              redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
              prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              extra: "{}"
              redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
              prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            containers:
            - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              extra: "{}"
              redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
              prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              extra: "{}"
              redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
              prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            filesets:
            - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              extra: "{}"
              redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
              prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              extra: "{}"
              redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
              prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            releases:
            - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              extra: "{}"
              redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
              prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              extra: "{}"
              redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
              prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          description: "description"
          annotations:
          - annotation_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            editor:
              is_admin: true
              is_active: true
              editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
              is_bot: true
              username: "zerocool93"
            created: "2000-01-23T04:56:07.000+00:00"
            extra: "{}"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            comment_markdown: "comment_markdown"
          - annotation_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            editor:
              is_admin: true
              is_active: true
              editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
              is_bot: true
              username: "zerocool93"
            created: "2000-01-23T04:56:07.000+00:00"
            extra: "{}"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            comment_markdown: "comment_markdown"
          editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        index: 0
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        timestamp: "2000-01-23T04:56:07.000+00:00"
    upperCaseName: "ENTITY_HISTORY_ENTRY"
  entity_edit:
    type: "object"
    required:
    - "edit_id"
    - "editgroup_id"
    - "ident"
    properties:
      edit_id:
        type: "string"
        example: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        minLength: 36
        maxLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
      ident:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      revision:
        type: "string"
        example: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        minLength: 36
        maxLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
      prev_revision:
        type: "string"
        example: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        minLength: 36
        maxLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
      redirect_ident:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      editgroup_id:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      extra:
        type: "object"
    example:
      ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
      edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      extra: "{}"
      redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
      editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
      prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
    upperCaseName: "ENTITY_EDIT"
  editor:
    type: "object"
    required:
    - "username"
    properties:
      editor_id:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      username:
        type: "string"
        example: "zerocool93"
      is_admin:
        type: "boolean"
      is_bot:
        type: "boolean"
      is_active:
        type: "boolean"
    example:
      is_admin: true
      is_active: true
      editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
      is_bot: true
      username: "zerocool93"
    upperCaseName: "EDITOR"
  editgroup:
    type: "object"
    properties:
      editgroup_id:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      editor_id:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      editor:
        $ref: "#/definitions/editor"
      changelog_index:
        type: "integer"
        format: "int64"
        example: 1048576
      submitted:
        type: "string"
        format: "date-time"
      description:
        type: "string"
      extra:
        type: "object"
      annotations:
        type: "array"
        items:
          $ref: "#/definitions/editgroup_annotation"
      edits:
        $ref: "#/definitions/editgroup_edits"
    example:
      editor:
        is_admin: true
        is_active: true
        editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        is_bot: true
        username: "zerocool93"
      changelog_index: 1048576
      submitted: "2000-01-23T04:56:07.000+00:00"
      extra: "{}"
      edits:
        works:
        - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          extra: "{}"
          redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          extra: "{}"
          redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        webcaptures:
        - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          extra: "{}"
          redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          extra: "{}"
          redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        creators:
        - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          extra: "{}"
          redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          extra: "{}"
          redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        files:
        - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          extra: "{}"
          redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          extra: "{}"
          redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        containers:
        - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          extra: "{}"
          redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          extra: "{}"
          redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        filesets:
        - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          extra: "{}"
          redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          extra: "{}"
          redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        releases:
        - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          extra: "{}"
          redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          extra: "{}"
          redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
      description: "description"
      annotations:
      - annotation_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        editor:
          is_admin: true
          is_active: true
          editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          is_bot: true
          username: "zerocool93"
        created: "2000-01-23T04:56:07.000+00:00"
        extra: "{}"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        comment_markdown: "comment_markdown"
      - annotation_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        editor:
          is_admin: true
          is_active: true
          editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          is_bot: true
          username: "zerocool93"
        created: "2000-01-23T04:56:07.000+00:00"
        extra: "{}"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        comment_markdown: "comment_markdown"
      editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
    upperCaseName: "EDITGROUP"
  editgroup_annotation:
    type: "object"
    properties:
      annotation_id:
        type: "string"
        example: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
        minLength: 36
        maxLength: 36
        pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
      editgroup_id:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      editor_id:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      editor:
        $ref: "#/definitions/editor"
      created:
        type: "string"
        format: "date-time"
      comment_markdown:
        type: "string"
      extra:
        type: "object"
    example:
      annotation_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      editor:
        is_admin: true
        is_active: true
        editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        is_bot: true
        username: "zerocool93"
      created: "2000-01-23T04:56:07.000+00:00"
      extra: "{}"
      editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
      editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
      comment_markdown: "comment_markdown"
    upperCaseName: "EDITGROUP_ANNOTATION"
  changelog_entry:
    type: "object"
    required:
    - "editgroup_id"
    - "index"
    - "timestamp"
    properties:
      index:
        type: "integer"
        format: "int64"
      editgroup_id:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
      timestamp:
        type: "string"
        format: "date-time"
      editgroup:
        $ref: "#/definitions/editgroup"
    example:
      editgroup:
        editor:
          is_admin: true
          is_active: true
          editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          is_bot: true
          username: "zerocool93"
        changelog_index: 1048576
        submitted: "2000-01-23T04:56:07.000+00:00"
        extra: "{}"
        edits:
          works:
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          webcaptures:
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          creators:
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          files:
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          containers:
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          filesets:
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          releases:
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "description"
        annotations:
        - annotation_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          editor:
            is_admin: true
            is_active: true
            editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            is_bot: true
            username: "zerocool93"
          created: "2000-01-23T04:56:07.000+00:00"
          extra: "{}"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          comment_markdown: "comment_markdown"
        - annotation_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          editor:
            is_admin: true
            is_active: true
            editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            is_bot: true
            username: "zerocool93"
          created: "2000-01-23T04:56:07.000+00:00"
          extra: "{}"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          comment_markdown: "comment_markdown"
        editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
      index: 0
      editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
      timestamp: "2000-01-23T04:56:07.000+00:00"
    upperCaseName: "CHANGELOG_ENTRY"
  release_ref:
    type: "object"
    properties:
      index:
        type: "integer"
        format: "int64"
      target_release_id:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      extra:
        type: "object"
      key:
        type: "string"
      year:
        type: "integer"
        format: "int64"
      container_name:
        type: "string"
      title:
        type: "string"
      locator:
        type: "string"
        example: "p123"
    example:
      target_release_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
      container_name: "container_name"
      year: 6
      extra: "{}"
      index: 0
      title: "title"
      locator: "p123"
      key: "key"
    upperCaseName: "RELEASE_REF"
  release_contrib:
    type: "object"
    properties:
      index:
        type: "integer"
        format: "int64"
      creator_id:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      creator:
        description: "Optional; GET-only"
        $ref: "#/definitions/creator_entity"
      raw_name:
        type: "string"
      role:
        type: "string"
      raw_affiliation:
        type: "string"
        description: "Raw affiliation string as displayed in text"
      extra:
        type: "object"
    example:
      raw_affiliation: "raw_affiliation"
      creator:
        redirect: "q3nouwy3nnbsvo3h5klxsx4a7y"
        surname: "surname"
        ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        extra: "{}"
        orcid: "0000-0002-1825-0097"
        wikidata_qid: "wikidata_qid"
        state: "wip"
        given_name: "given_name"
        display_name: "Grace Hopper"
        edit_extra: "{}"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      raw_name: "raw_name"
      role: "role"
      extra: "{}"
      creator_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
      index: 1
    upperCaseName: "RELEASE_CONTRIB"
  auth_oidc:
    type: "object"
    required:
    - "iss"
    - "preferred_username"
    - "provider"
    - "sub"
    properties:
      provider:
        type: "string"
      sub:
        type: "string"
      iss:
        type: "string"
      preferred_username:
        type: "string"
    upperCaseName: "AUTH_OIDC"
  auth_oidc_result:
    type: "object"
    required:
    - "editor"
    - "token"
    properties:
      editor:
        $ref: "#/definitions/editor"
      token:
        type: "string"
    example:
      editor:
        is_admin: true
        is_active: true
        editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        is_bot: true
        username: "zerocool93"
      token: "token"
    upperCaseName: "AUTH_OIDC_RESULT"
  file_entity_urls:
    required:
    - "rel"
    - "url"
    properties:
      url:
        type: "string"
        format: "url"
        example: "https://example.edu/~frau/prcding.pdf"
      rel:
        type: "string"
        example: "webarchive"
    example:
      rel: "webarchive"
      url: "https://example.edu/~frau/prcding.pdf"
    upperCaseName: "FILE_ENTITY_URLS"
  fileset_entity_manifest:
    required:
    - "path"
    - "size"
    properties:
      path:
        type: "string"
        example: "img/cat.png"
      size:
        type: "integer"
        format: "int64"
        example: 1048576
      md5:
        type: "string"
        example: "1b39813549077b2347c0f370c3864b40"
        minLength: 32
        maxLength: 32
        pattern: "[a-f0-9]{32}"
      sha1:
        type: "string"
        example: "e9dd75237c94b209dc3ccd52722de6931a310ba3"
        minLength: 40
        maxLength: 40
        pattern: "[a-f0-9]{40}"
      sha256:
        type: "string"
        example: "cb1c378f464d5935ddaa8de28446d82638396c61f042295d7fb85e3cccc9e452"
        minLength: 64
        maxLength: 64
        pattern: "[a-f0-9]{64}"
      extra:
        type: "object"
    example:
      sha1: "e9dd75237c94b209dc3ccd52722de6931a310ba3"
      path: "img/cat.png"
      size: 1048576
      sha256: "cb1c378f464d5935ddaa8de28446d82638396c61f042295d7fb85e3cccc9e452"
      extra: "{}"
      md5: "1b39813549077b2347c0f370c3864b40"
    upperCaseName: "FILESET_ENTITY_MANIFEST"
  webcapture_entity_archive_urls:
    required:
    - "rel"
    - "url"
    properties:
      url:
        type: "string"
        format: "url"
        example: "https://web.archive.org/web/"
      rel:
        type: "string"
        example: "wayback"
    example:
      rel: "wayback"
      url: "https://web.archive.org/web/"
    upperCaseName: "WEBCAPTURE_ENTITY_ARCHIVE_URLS"
  webcapture_entity_cdx:
    required:
    - "sha1"
    - "surt"
    - "timestamp"
    - "url"
    properties:
      surt:
        type: "string"
        example: "org,asheesh)/apus/ch1/node15.html"
      timestamp:
        type: "string"
        format: "date-time"
        example: "2016-09-19T17:20:24Z"
        description: "UTC, 'Z'-terminated, second (or better) precision"
      url:
        type: "string"
        example: "http://www.asheesh.org:80/APUS/ch1/node15.html"
      mimetype:
        type: "string"
        example: "text/html"
      status_code:
        type: "integer"
        format: "int64"
        example: 200
      sha1:
        type: "string"
        example: "e9dd75237c94b209dc3ccd52722de6931a310ba3"
        minLength: 40
        maxLength: 40
        pattern: "[a-f0-9]{40}"
      sha256:
        type: "string"
        example: "cb1c378f464d5935ddaa8de28446d82638396c61f042295d7fb85e3cccc9e452"
        minLength: 64
        maxLength: 64
        pattern: "[a-f0-9]{64}"
    example:
      sha1: "e9dd75237c94b209dc3ccd52722de6931a310ba3"
      surt: "org,asheesh)/apus/ch1/node15.html"
      status_code: 200
      sha256: "cb1c378f464d5935ddaa8de28446d82638396c61f042295d7fb85e3cccc9e452"
      mimetype: "text/html"
      url: "http://www.asheesh.org:80/APUS/ch1/node15.html"
      timestamp: "2016-09-19T17:20:24Z"
    upperCaseName: "WEBCAPTURE_ENTITY_CDX"
  release_entity_abstracts:
    properties:
      sha1:
        type: "string"
        example: "e9dd75237c94b209dc3ccd52722de6931a310ba3"
        minLength: 40
        maxLength: 40
        pattern: "[a-f0-9]{40}"
      content:
        type: "string"
        example: "<jats:p>Some abstract thing goes here</jats:p>"
      mimetype:
        type: "string"
        example: "application/xml+jats"
      lang:
        type: "string"
        example: "en"
    example:
      sha1: "e9dd75237c94b209dc3ccd52722de6931a310ba3"
      mimetype: "application/xml+jats"
      lang: "en"
      content: "<jats:p>Some abstract thing goes here</jats:p>"
    upperCaseName: "RELEASE_ENTITY_ABSTRACTS"
  editgroup_edits:
    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"
    example:
      works:
      - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        extra: "{}"
        redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        extra: "{}"
        redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      webcaptures:
      - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        extra: "{}"
        redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        extra: "{}"
        redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      creators:
      - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        extra: "{}"
        redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        extra: "{}"
        redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      files:
      - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        extra: "{}"
        redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        extra: "{}"
        redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      containers:
      - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        extra: "{}"
        redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        extra: "{}"
        redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      filesets:
      - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        extra: "{}"
        redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        extra: "{}"
        redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      releases:
      - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        extra: "{}"
        redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_id: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        extra: "{}"
        redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
    upperCaseName: "EDITGROUP_EDITS"
x-fatcat-ident:
  type: "string"
  example: "q3nouwy3nnbsvo3h5klxsx4a7y"
  pattern: "[a-zA-Z2-7]{26}"
  minLength: 26
  maxLength: 26
  description: "base32-encoded unique identifier"
x-fatcat-uuid:
  type: "string"
  example: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
  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-issn:
  type: "string"
  example: "1234-5678"
  pattern: "\\d{4}-\\d{3}[0-9X]"
  minLength: 9
  maxLength: 9
x-orcid:
  type: "string"
  example: "0000-0002-1825-0097"
  pattern: "\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]"
  minLength: 19
  maxLength: 19
x-md5:
  type: "string"
  example: "1b39813549077b2347c0f370c3864b40"
  pattern: "[a-f0-9]{32}"
  minLength: 32
  maxLength: 32
x-sha1:
  type: "string"
  example: "e9dd75237c94b209dc3ccd52722de6931a310ba3"
  pattern: "[a-f0-9]{40}"
  minLength: 40
  maxLength: 40
x-sha256:
  type: "string"
  example: "cb1c378f464d5935ddaa8de28446d82638396c61f042295d7fb85e3cccc9e452"
  pattern: "[a-f0-9]{64}"
  minLength: 64
  maxLength: 64
x-entity-props:
  state:
    type: "string"
    enum:
    - "wip"
    - "active"
    - "redirect"
    - "deleted"
  ident:
    description: "base32-encoded unique identifier"
    maxLength: 26
    minLength: 26
    pattern: "[a-zA-Z2-7]{26}"
    example: "q3nouwy3nnbsvo3h5klxsx4a7y"
    type: "string"
  revision:
    description: "UUID (lower-case, dash-separated, hex-encoded 128-bit)"
    maxLength: 36
    minLength: 36
    pattern: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
    example: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
    type: "string"
  redirect:
    type: "string"
    example: "q3nouwy3nnbsvo3h5klxsx4a7y"
    pattern: "[a-zA-Z2-7]{26}"
    minLength: 26
    maxLength: 26
    description: "base32-encoded unique identifier"
  extra:
    type: "object"
    additionalProperties: {}
  edit_extra:
    type: "object"
    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"