---
swagger: "2.0"
info:
  description: "A scalable, versioned, API-oriented catalog of bibliographic entities\
    \ and file metadata"
  version: "0.1.0"
  title: "fatcat"
basePath: "/v0"
schemes:
- "http"
consumes:
- "application/json"
produces:
- "application/json"
paths:
  /container:
    post:
      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
      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
        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
      operation_id: "create_container"
      uppercase_operation_id: "CREATE_CONTAINER"
      path: "/container"
      HttpMethod: "Post"
      httpmethod: "post"
      noClientExample: true
  /container/batch:
    post:
      operationId: "create_container_batch"
      parameters:
      - 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
        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
      operation_id: "create_container_batch"
      uppercase_operation_id: "CREATE_CONTAINER_BATCH"
      path: "/container/batch"
      HttpMethod: "Post"
      httpmethod: "post"
  /container/{id}:
    get:
      operationId: "get_container"
      parameters:
      - name: "id"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"id_example\".to_string()"
      - name: "expand"
        in: "query"
        description: "List of sub-entities to expand in response. For now, only 'all'\
          \ accepted."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"expand_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/:id"
      HttpMethod: "Get"
      httpmethod: "get"
  /container/{id}/history:
    get:
      operationId: "get_container_history"
      parameters:
      - name: "id"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"id_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/:id/history"
      HttpMethod: "Get"
      httpmethod: "get"
  /container/lookup:
    get:
      operationId: "lookup_container"
      parameters:
      - name: "issnl"
        in: "query"
        required: true
        type: "string"
        maxLength: 9
        minLength: 9
        pattern: "\\d{4}-\\d{3}[0-9X]"
        formatString: "\\\"{}\\\""
        example: "\"issnl_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"
  /creator:
    post:
      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
      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
        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
      operation_id: "create_creator"
      uppercase_operation_id: "CREATE_CREATOR"
      path: "/creator"
      HttpMethod: "Post"
      httpmethod: "post"
      noClientExample: true
  /creator/batch:
    post:
      operationId: "create_creator_batch"
      parameters:
      - 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
        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
      operation_id: "create_creator_batch"
      uppercase_operation_id: "CREATE_CREATOR_BATCH"
      path: "/creator/batch"
      HttpMethod: "Post"
      httpmethod: "post"
  /creator/{id}:
    get:
      operationId: "get_creator"
      parameters:
      - name: "id"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"id_example\".to_string()"
      - name: "expand"
        in: "query"
        description: "List of sub-entities to expand in response. For now, only 'all'\
          \ accepted."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"expand_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/:id"
      HttpMethod: "Get"
      httpmethod: "get"
  /creator/{id}/history:
    get:
      operationId: "get_creator_history"
      parameters:
      - name: "id"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"id_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/:id/history"
      HttpMethod: "Get"
      httpmethod: "get"
  /creator/{id}/releases:
    get:
      operationId: "get_creator_releases"
      parameters:
      - name: "id"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"id_example\".to_string()"
      responses:
        200:
          description: "Found Entity"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/release_entity"
          x-responseId: "FoundEntity"
          x-uppercaseResponseId: "FOUND_ENTITY"
          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/:id/releases"
      HttpMethod: "Get"
      httpmethod: "get"
  /creator/lookup:
    get:
      operationId: "lookup_creator"
      parameters:
      - name: "orcid"
        in: "query"
        required: true
        type: "string"
        maxLength: 19
        minLength: 19
        pattern: "\\d{4}-\\d{4}-\\d{4}-\\d{4}"
        formatString: "\\\"{}\\\""
        example: "\"orcid_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"
  /file:
    post:
      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
      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
        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
      operation_id: "create_file"
      uppercase_operation_id: "CREATE_FILE"
      path: "/file"
      HttpMethod: "Post"
      httpmethod: "post"
      noClientExample: true
  /file/batch:
    post:
      operationId: "create_file_batch"
      parameters:
      - 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
        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
      operation_id: "create_file_batch"
      uppercase_operation_id: "CREATE_FILE_BATCH"
      path: "/file/batch"
      HttpMethod: "Post"
      httpmethod: "post"
  /file/{id}:
    get:
      operationId: "get_file"
      parameters:
      - name: "id"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"id_example\".to_string()"
      - name: "expand"
        in: "query"
        description: "List of sub-entities to expand in response. For now, only 'all'\
          \ accepted."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"expand_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/:id"
      HttpMethod: "Get"
      httpmethod: "get"
  /file/{id}/history:
    get:
      operationId: "get_file_history"
      parameters:
      - name: "id"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"id_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/:id/history"
      HttpMethod: "Get"
      httpmethod: "get"
  /file/lookup:
    get:
      operationId: "lookup_file"
      parameters:
      - name: "sha1"
        in: "query"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"sha1_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"
  /release:
    post:
      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
      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
        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
      operation_id: "create_release"
      uppercase_operation_id: "CREATE_RELEASE"
      path: "/release"
      HttpMethod: "Post"
      httpmethod: "post"
      noClientExample: true
  /release/batch:
    post:
      operationId: "create_release_batch"
      parameters:
      - 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
        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
      operation_id: "create_release_batch"
      uppercase_operation_id: "CREATE_RELEASE_BATCH"
      path: "/release/batch"
      HttpMethod: "Post"
      httpmethod: "post"
  /release/{id}:
    get:
      operationId: "get_release"
      parameters:
      - name: "id"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"id_example\".to_string()"
      - name: "expand"
        in: "query"
        description: "List of sub-entities to expand in response. For now, only 'all'\
          \ accepted."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"expand_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/:id"
      HttpMethod: "Get"
      httpmethod: "get"
  /release/{id}/history:
    get:
      operationId: "get_release_history"
      parameters:
      - name: "id"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"id_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/:id/history"
      HttpMethod: "Get"
      httpmethod: "get"
  /release/{id}/files:
    get:
      operationId: "get_release_files"
      parameters:
      - name: "id"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"id_example\".to_string()"
      responses:
        200:
          description: "Found Entity"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/file_entity"
          x-responseId: "FoundEntity"
          x-uppercaseResponseId: "FOUND_ENTITY"
          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/:id/files"
      HttpMethod: "Get"
      httpmethod: "get"
  /release/lookup:
    get:
      operationId: "lookup_release"
      parameters:
      - name: "doi"
        in: "query"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"doi_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"
  /work:
    post:
      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
      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
        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
      operation_id: "create_work"
      uppercase_operation_id: "CREATE_WORK"
      path: "/work"
      HttpMethod: "Post"
      httpmethod: "post"
      noClientExample: true
  /work/batch:
    post:
      operationId: "create_work_batch"
      parameters:
      - 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
        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
      operation_id: "create_work_batch"
      uppercase_operation_id: "CREATE_WORK_BATCH"
      path: "/work/batch"
      HttpMethod: "Post"
      httpmethod: "post"
  /work/{id}:
    get:
      operationId: "get_work"
      parameters:
      - name: "id"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"id_example\".to_string()"
      - name: "expand"
        in: "query"
        description: "List of sub-entities to expand in response. For now, only 'all'\
          \ accepted."
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"expand_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/:id"
      HttpMethod: "Get"
      httpmethod: "get"
  /work/{id}/history:
    get:
      operationId: "get_work_history"
      parameters:
      - name: "id"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"id_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/:id/history"
      HttpMethod: "Get"
      httpmethod: "get"
  /work/{id}/releases:
    get:
      operationId: "get_work_releases"
      parameters:
      - name: "id"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"id_example\".to_string()"
      responses:
        200:
          description: "Found Entity"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/release_entity"
          x-responseId: "FoundEntity"
          x-uppercaseResponseId: "FOUND_ENTITY"
          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/:id/releases"
      HttpMethod: "Get"
      httpmethod: "get"
  /editor/{id}:
    get:
      operationId: "get_editor"
      parameters:
      - name: "id"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"id_example\".to_string()"
      responses:
        200:
          description: "Found Editor"
          schema:
            $ref: "#/definitions/editor"
          x-responseId: "FoundEditor"
          x-uppercaseResponseId: "FOUND_EDITOR"
          uppercase_operation_id: "GET_EDITOR"
          uppercase_data_type: "EDITOR"
          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/:id"
      HttpMethod: "Get"
      httpmethod: "get"
  /editor/{id}/changelog:
    get:
      operationId: "get_editor_changelog"
      parameters:
      - name: "id"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"id_example\".to_string()"
      responses:
        200:
          description: "Found Merged Changes"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/changelog_entry"
          x-responseId: "FoundMergedChanges"
          x-uppercaseResponseId: "FOUND_MERGED_CHANGES"
          uppercase_operation_id: "GET_EDITOR_CHANGELOG"
          uppercase_data_type: "VEC<CHANGELOGENTRY>"
          producesJson: true
        404:
          description: "Not Found"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "NotFound"
          x-uppercaseResponseId: "NOT_FOUND"
          uppercase_operation_id: "GET_EDITOR_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_EDITOR_CHANGELOG"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_editor_changelog"
      uppercase_operation_id: "GET_EDITOR_CHANGELOG"
      path: "/editor/:id/changelog"
      HttpMethod: "Get"
      httpmethod: "get"
  /editgroup:
    post:
      operationId: "create_editgroup"
      parameters:
      - in: "body"
        name: "entity"
        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
        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
      operation_id: "create_editgroup"
      uppercase_operation_id: "CREATE_EDITGROUP"
      path: "/editgroup"
      HttpMethod: "Post"
      httpmethod: "post"
      noClientExample: true
  /editgroup/{id}:
    get:
      operationId: "get_editgroup"
      parameters:
      - name: "id"
        in: "path"
        description: "base32-encoded unique identifier"
        required: true
        type: "string"
        maxLength: 26
        minLength: 26
        pattern: "[a-zA-Z2-7]{26}"
        formatString: "\\\"{}\\\""
        example: "\"id_example\".to_string()"
      responses:
        200:
          description: "Found Entity"
          schema:
            $ref: "#/definitions/editgroup"
          x-responseId: "FoundEntity"
          x-uppercaseResponseId: "FOUND_ENTITY"
          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/:id"
      HttpMethod: "Get"
      httpmethod: "get"
  /editgroup/{id}/accept:
    post:
      operationId: "accept_editgroup"
      parameters:
      - name: "id"
        in: "path"
        description: "base32-encoded unique identifier"
        required: true
        type: "string"
        maxLength: 26
        minLength: 26
        pattern: "[a-zA-Z2-7]{26}"
        formatString: "\\\"{}\\\""
        example: "\"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: "Unmergable"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "Unmergable"
          x-uppercaseResponseId: "UNMERGABLE"
          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
        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
      operation_id: "accept_editgroup"
      uppercase_operation_id: "ACCEPT_EDITGROUP"
      path: "/editgroup/:id/accept"
      HttpMethod: "Post"
      httpmethod: "post"
  /changelog:
    get:
      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
        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/{id}:
    get:
      operationId: "get_changelog_entry"
      parameters:
      - name: "id"
        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
        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/:id"
      HttpMethod: "Get"
      httpmethod: "get"
  /stats:
    get:
      operationId: "get_stats"
      parameters:
      - name: "more"
        in: "query"
        required: false
        type: "string"
        formatString: "{:?}"
        example: "Some(\"more_example\".to_string())"
      responses:
        200:
          description: "Success"
          schema:
            $ref: "#/definitions/stats_response"
          x-responseId: "Success"
          x-uppercaseResponseId: "SUCCESS"
          uppercase_operation_id: "GET_STATS"
          uppercase_data_type: "STATSRESPONSE"
          producesJson: true
        500:
          description: "Generic Error"
          schema:
            $ref: "#/definitions/error_response"
          x-responseId: "GenericError"
          x-uppercaseResponseId: "GENERIC_ERROR"
          uppercase_operation_id: "GET_STATS"
          uppercase_data_type: "ERRORRESPONSE"
          producesJson: true
      operation_id: "get_stats"
      uppercase_operation_id: "GET_STATS"
      path: "/stats"
      HttpMethod: "Get"
      httpmethod: "get"
definitions:
  error_response:
    type: "object"
    required:
    - "message"
    properties:
      message:
        type: "string"
        example: "A really confusing, totally unexpected thing happened"
    upperCaseName: "ERROR_RESPONSE"
  success:
    type: "object"
    required:
    - "message"
    properties:
      message:
        type: "string"
        example: "The computers did the thing successfully!"
    example:
      message: "The computers did the thing successfully!"
    upperCaseName: "SUCCESS"
  container_entity:
    type: "object"
    required:
    - "name"
    properties:
      coden:
        type: "string"
      abbrev:
        type: "string"
      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"
      name:
        type: "string"
        example: "Journal of Important Results"
      extra:
        type: "object"
      editgroup_id:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      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"
      coden: "coden"
      ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
      extra: "{}"
      name: "Journal of Important Results"
      publisher: "Society of Curious Students"
      editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
      issnl: "1234-5678"
      abbrev: "abbrev"
      wikidata_qid: "wikidata_qid"
      state: "wip"
      revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
    upperCaseName: "CONTAINER_ENTITY"
  creator_entity:
    type: "object"
    required:
    - "display_name"
    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{4}"
      surname:
        type: "string"
      given_name:
        type: "string"
      display_name:
        type: "string"
        example: "Grace Hopper"
      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}"
      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:
      redirect: "q3nouwy3nnbsvo3h5klxsx4a7y"
      surname: "surname"
      ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
      extra: "{}"
      editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
      orcid: "0000-0002-1825-0097"
      wikidata_qid: "wikidata_qid"
      state: "wip"
      given_name: "given_name"
      display_name: "Grace Hopper"
      revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
    upperCaseName: "CREATOR_ENTITY"
  file_entity:
    type: "object"
    properties:
      releases:
        type: "array"
        items:
          type: "string"
      mimetype:
        type: "string"
        example: "application/pdf"
      urls:
        type: "array"
        items:
          $ref: "#/definitions/file_entity_urls"
      sha256:
        type: "string"
        example: "a77e4c11a57f1d757fca5754a8f83b5d4ece49a2d28596889127c1a2f3f28832"
      md5:
        type: "string"
        example: "d41efcc592d1e40ac13905377399eb9b"
      sha1:
        type: "string"
        example: "f013d66c7f6817d08b7eb2a93e6d0440c1f3e7f8"
      size:
        type: "integer"
        format: "int64"
        example: 1048576
      extra:
        type: "object"
      editgroup_id:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      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: "a77e4c11a57f1d757fca5754a8f83b5d4ece49a2d28596889127c1a2f3f28832"
      ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
      releases:
      - "releases"
      - "releases"
      revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      sha1: "f013d66c7f6817d08b7eb2a93e6d0440c1f3e7f8"
      urls:
      - rel: "webarchive"
        url: "https://example.edu/~frau/prcding.pdf"
      - rel: "webarchive"
        url: "https://example.edu/~frau/prcding.pdf"
      size: 1048576
      extra: "{}"
      editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
      mimetype: "application/pdf"
      state: "wip"
      md5: "d41efcc592d1e40ac13905377399eb9b"
    upperCaseName: "FILE_ENTITY"
  release_entity:
    type: "object"
    required:
    - "title"
    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"
      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"
      wikidata_qid:
        type: "string"
      pmcid:
        type: "string"
      pmid:
        type: "string"
      isbn13:
        type: "string"
      doi:
        type: "string"
        example: "10.1234/abcde.789"
      release_date:
        type: "string"
        format: "date"
      release_status:
        type: "string"
        example: "preprint"
      release_type:
        type: "string"
        example: "book"
      container_id:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
      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"
      title:
        type: "string"
      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}"
      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:
      container:
        redirect: "q3nouwy3nnbsvo3h5klxsx4a7y"
        coden: "coden"
        ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        extra: "{}"
        name: "Journal of Important Results"
        publisher: "Society of Curious Students"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        issnl: "1234-5678"
        abbrev: "abbrev"
        wikidata_qid: "wikidata_qid"
        state: "wip"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
      language: "language"
      title: "title"
      contribs:
      - creator:
          redirect: "q3nouwy3nnbsvo3h5klxsx4a7y"
          surname: "surname"
          ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          extra: "{}"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          orcid: "0000-0002-1825-0097"
          wikidata_qid: "wikidata_qid"
          state: "wip"
          given_name: "given_name"
          display_name: "Grace Hopper"
          revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        raw_name: "raw_name"
        role: "role"
        extra: "{}"
        creator_id: "creator_id"
        index: 1
      - creator:
          redirect: "q3nouwy3nnbsvo3h5klxsx4a7y"
          surname: "surname"
          ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          extra: "{}"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          orcid: "0000-0002-1825-0097"
          wikidata_qid: "wikidata_qid"
          state: "wip"
          given_name: "given_name"
          display_name: "Grace Hopper"
          revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        raw_name: "raw_name"
        role: "role"
        extra: "{}"
        creator_id: "creator_id"
        index: 1
      pages: "pages"
      extra: "{}"
      editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
      state: "wip"
      redirect: "q3nouwy3nnbsvo3h5klxsx4a7y"
      work_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
      issue: "12"
      abstracts:
      - sha1: "3f242a192acc258bdfdb151943419437f440c313"
        mimetype: "application/xml+jats"
        lang: "en"
        content: "<jats:p>Some abstract thing goes here</jats:p>"
      - sha1: "3f242a192acc258bdfdb151943419437f440c313"
        mimetype: "application/xml+jats"
        lang: "en"
        content: "<jats:p>Some abstract thing goes here</jats:p>"
      release_type: "book"
      wikidata_qid: "wikidata_qid"
      pmid: "pmid"
      release_status: "preprint"
      revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      volume: "volume"
      refs:
      - target_release_id: "target_release_id"
        year: 6
        container_title: "container_title"
        extra: "{}"
        index: 0
        title: "title"
        locator: "p123"
        key: "key"
      - target_release_id: "target_release_id"
        year: 6
        container_title: "container_title"
        extra: "{}"
        index: 0
        title: "title"
        locator: "p123"
        key: "key"
      release_date: "2000-01-23"
      isbn13: "isbn13"
      publisher: "publisher"
      files:
      - redirect: "q3nouwy3nnbsvo3h5klxsx4a7y"
        sha256: "a77e4c11a57f1d757fca5754a8f83b5d4ece49a2d28596889127c1a2f3f28832"
        ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        releases:
        - "releases"
        - "releases"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        sha1: "f013d66c7f6817d08b7eb2a93e6d0440c1f3e7f8"
        urls:
        - rel: "webarchive"
          url: "https://example.edu/~frau/prcding.pdf"
        - rel: "webarchive"
          url: "https://example.edu/~frau/prcding.pdf"
        size: 1048576
        extra: "{}"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        mimetype: "application/pdf"
        state: "wip"
        md5: "d41efcc592d1e40ac13905377399eb9b"
      - redirect: "q3nouwy3nnbsvo3h5klxsx4a7y"
        sha256: "a77e4c11a57f1d757fca5754a8f83b5d4ece49a2d28596889127c1a2f3f28832"
        ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        releases:
        - "releases"
        - "releases"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        sha1: "f013d66c7f6817d08b7eb2a93e6d0440c1f3e7f8"
        urls:
        - rel: "webarchive"
          url: "https://example.edu/~frau/prcding.pdf"
        - rel: "webarchive"
          url: "https://example.edu/~frau/prcding.pdf"
        size: 1048576
        extra: "{}"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        mimetype: "application/pdf"
        state: "wip"
        md5: "d41efcc592d1e40ac13905377399eb9b"
      pmcid: "pmcid"
      container_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
      doi: "10.1234/abcde.789"
    upperCaseName: "RELEASE_ENTITY"
  work_entity:
    type: "object"
    properties:
      extra:
        type: "object"
      editgroup_id:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
        description: "base32-encoded unique identifier"
        minLength: 26
        maxLength: 26
        pattern: "[a-zA-Z2-7]{26}"
      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: "{}"
      editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
      state: "wip"
      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:
        extra: "{}"
        edits:
          works:
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: 847
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: 847
            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: 847
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: 847
            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: 847
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: 847
            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: 847
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: 847
            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: 847
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: 847
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        description: "description"
        editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        id: "q3nouwy3nnbsvo3h5klxsx4a7y"
      edit:
        ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_id: 847
        extra: "{}"
        redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      changelog_entry:
        editgroup:
          extra: "{}"
          edits:
            works:
            - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              edit_id: 847
              extra: "{}"
              redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
              prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              edit_id: 847
              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: 847
              extra: "{}"
              redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
              prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              edit_id: 847
              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: 847
              extra: "{}"
              redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
              prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              edit_id: 847
              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: 847
              extra: "{}"
              redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
              prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              edit_id: 847
              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: 847
              extra: "{}"
              redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
              prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              edit_id: 847
              extra: "{}"
              redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
              editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
              prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
              revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          description: "description"
          editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          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: "integer"
        format: "int64"
        example: 847
      ident:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
      revision:
        type: "string"
        example: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      prev_revision:
        type: "string"
        example: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      redirect_ident:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
      editgroup_id:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
      extra:
        type: "object"
    example:
      ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
      edit_id: 847
      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:
      id:
        type: "string"
        example: "q3nouwy3nnbsvo3h5klxsx4a7y"
      username:
        type: "string"
        example: "zerocool93"
    example:
      id: "q3nouwy3nnbsvo3h5klxsx4a7y"
      username: "zerocool93"
    upperCaseName: "EDITOR"
  editgroup:
    type: "object"
    required:
    - "editor_id"
    properties:
      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}"
      description:
        type: "string"
      extra:
        type: "object"
      edits:
        $ref: "#/definitions/editgroup_edits"
    example:
      extra: "{}"
      edits:
        works:
        - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          edit_id: 847
          extra: "{}"
          redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          edit_id: 847
          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: 847
          extra: "{}"
          redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          edit_id: 847
          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: 847
          extra: "{}"
          redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          edit_id: 847
          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: 847
          extra: "{}"
          redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          edit_id: 847
          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: 847
          extra: "{}"
          redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          edit_id: 847
          extra: "{}"
          redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
          editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
          prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      description: "description"
      editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
      id: "q3nouwy3nnbsvo3h5klxsx4a7y"
    upperCaseName: "EDITGROUP"
  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:
        extra: "{}"
        edits:
          works:
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: 847
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: 847
            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: 847
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: 847
            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: 847
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: 847
            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: 847
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: 847
            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: 847
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
          - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            edit_id: 847
            extra: "{}"
            redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
            editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
            prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
            revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        description: "description"
        editor_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        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"
      extra:
        type: "object"
      key:
        type: "string"
      year:
        type: "integer"
        format: "int64"
      container_title:
        type: "string"
      title:
        type: "string"
      locator:
        type: "string"
        example: "p123"
    example:
      target_release_id: "target_release_id"
      year: 6
      container_title: "container_title"
      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"
      creator:
        description: "Optional; GET-only"
        $ref: "#/definitions/creator_entity"
      raw_name:
        type: "string"
      extra:
        type: "object"
      role:
        type: "string"
    example:
      creator:
        redirect: "q3nouwy3nnbsvo3h5klxsx4a7y"
        surname: "surname"
        ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        extra: "{}"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        orcid: "0000-0002-1825-0097"
        wikidata_qid: "wikidata_qid"
        state: "wip"
        given_name: "given_name"
        display_name: "Grace Hopper"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      raw_name: "raw_name"
      role: "role"
      extra: "{}"
      creator_id: "creator_id"
      index: 1
    upperCaseName: "RELEASE_CONTRIB"
  stats_response:
    type: "object"
    properties:
      extra:
        type: "object"
    example:
      extra: "{}"
    upperCaseName: "STATS_RESPONSE"
  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"
  release_entity_abstracts:
    properties:
      sha1:
        type: "string"
        example: "3f242a192acc258bdfdb151943419437f440c313"
      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: "3f242a192acc258bdfdb151943419437f440c313"
      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"
      releases:
        type: "array"
        items:
          $ref: "#/definitions/entity_edit"
      works:
        type: "array"
        items:
          $ref: "#/definitions/entity_edit"
    example:
      works:
      - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_id: 847
        extra: "{}"
        redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_id: 847
        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: 847
        extra: "{}"
        redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_id: 847
        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: 847
        extra: "{}"
        redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_id: 847
        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: 847
        extra: "{}"
        redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_id: 847
        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: 847
        extra: "{}"
        redirect_ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        editgroup_id: "q3nouwy3nnbsvo3h5klxsx4a7y"
        prev_revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
        revision: "86daea5b-1b6b-432a-bb67-ea97795f80fe"
      - ident: "q3nouwy3nnbsvo3h5klxsx4a7y"
        edit_id: 847
        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{4}"
  minLength: 19
  maxLength: 19
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"
  editgroup_id:
    description: "base32-encoded unique identifier"
    maxLength: 26
    minLength: 26
    pattern: "[a-zA-Z2-7]{26}"
    example: "q3nouwy3nnbsvo3h5klxsx4a7y"
    type: "string"
  extra:
    type: "object"
    additionalProperties: {}
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"