---
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: "changelogentries_inner"
        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
        default:
          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: "changelogentries_inner"
        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
        default:
          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()"
      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
        default:
          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/lookup:
    get:
      operationId: "lookup_container"
      parameters:
      - name: "issnl"
        in: "query"
        required: true
        type: "string"
        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
        default:
          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: "changelogentries_inner"
        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
        default:
          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: "changelogentries_inner"
        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
        default:
          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()"
      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
        default:
          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/lookup:
    get:
      operationId: "lookup_creator"
      parameters:
      - name: "orcid"
        in: "query"
        required: true
        type: "string"
        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
        default:
          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: "changelogentries_inner"
        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
        default:
          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: "changelogentries_inner"
        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
        default:
          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()"
      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
        default:
          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/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
        default:
          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: "changelogentries_inner"
        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
        default:
          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: "changelogentries_inner"
        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
        default:
          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()"
      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
        default:
          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/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
        default:
          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: "changelogentries_inner"
        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
        default:
          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: "changelogentries_inner"
        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
        default:
          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()"
      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
        default:
          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"
  /editor/{username}:
    get:
      operationId: "get_editor"
      parameters:
      - name: "username"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"username_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
        default:
          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/:username"
      HttpMethod: "Get"
      httpmethod: "get"
  /editor/{username}/changelog:
    get:
      operationId: "get_editor_changelog"
      parameters:
      - name: "username"
        in: "path"
        required: true
        type: "string"
        formatString: "\\\"{}\\\""
        example: "\"username_example\".to_string()"
      responses:
        200:
          description: "Found Merged Changes"
          schema:
            $ref: "#/definitions/changelogentries"
          x-responseId: "FoundMergedChanges"
          x-uppercaseResponseId: "FOUND_MERGED_CHANGES"
          uppercase_operation_id: "GET_EDITOR_CHANGELOG"
          uppercase_data_type: "CHANGELOGENTRIES"
          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
        default:
          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/:username/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: "changelogentries_inner"
        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
        default:
          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"
        required: true
        type: "integer"
        format: "int64"
        formatString: "{}"
        example: "789"
      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
        default:
          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"
        required: true
        type: "integer"
        format: "int64"
        formatString: "{}"
        example: "789"
      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
        default:
          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"
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"
      issnl:
        type: "string"
        example: "1234-5678"
      publisher:
        type: "string"
        example: "Society of Curious Students"
      name:
        type: "string"
        example: "Journal of Important Results"
      extra:
        type: "object"
      editgroup_id:
        type: "integer"
        format: "int64"
        example: 16
      redirect:
        type: "string"
        example: "00000000-0000-0000-adce-000000000002"
      revision:
        type: "integer"
        format: "int64"
        example: 42
      ident:
        type: "string"
        example: "00000000-0000-0000-adce-000000000001"
      state:
        type: "string"
        enum:
        - "wip"
        - "active"
        - "redirect"
        - "deleted"
    example:
      redirect: "00000000-0000-0000-adce-000000000002"
      coden: "coden"
      ident: "00000000-0000-0000-adce-000000000001"
      extra: "{}"
      name: "Journal of Important Results"
      publisher: "Society of Curious Students"
      editgroup_id: 16
      issnl: "1234-5678"
      abbrev: "abbrev"
      state: "wip"
      revision: 42
    upperCaseName: "CONTAINER_ENTITY"
  creator_entity:
    type: "object"
    required:
    - "display_name"
    properties:
      orcid:
        type: "string"
        example: "0000-0002-1825-0097"
      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: "00000000-0000-0000-adce-000000000001"
      revision:
        type: "integer"
        format: "int64"
        example: 42
      redirect:
        type: "string"
        example: "00000000-0000-0000-adce-000000000002"
      editgroup_id:
        type: "integer"
        format: "int64"
        example: 16
      extra:
        type: "object"
    example:
      redirect: "00000000-0000-0000-adce-000000000002"
      surname: "surname"
      ident: "00000000-0000-0000-adce-000000000001"
      extra: "{}"
      editgroup_id: 16
      orcid: "0000-0002-1825-0097"
      state: "wip"
      given_name: "given_name"
      display_name: "Grace Hopper"
      revision: 42
    upperCaseName: "CREATOR_ENTITY"
  file_entity:
    type: "object"
    properties:
      releases:
        type: "array"
        items:
          type: "string"
      mimetype:
        type: "string"
        example: "application/pdf"
      url:
        type: "string"
        format: "url"
        example: "https://example.edu/~frau/prcding.pdf"
      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: "integer"
        format: "int64"
        example: 16
      redirect:
        type: "string"
        example: "00000000-0000-0000-adce-000000000002"
      revision:
        type: "integer"
        format: "int64"
        example: 42
      ident:
        type: "string"
        example: "00000000-0000-0000-adce-000000000001"
      state:
        type: "string"
        enum:
        - "wip"
        - "active"
        - "redirect"
        - "deleted"
    example:
      redirect: "00000000-0000-0000-adce-000000000002"
      sha256: "a77e4c11a57f1d757fca5754a8f83b5d4ece49a2d28596889127c1a2f3f28832"
      ident: "00000000-0000-0000-adce-000000000001"
      url: "https://example.edu/~frau/prcding.pdf"
      releases:
      - "releases"
      - "releases"
      revision: 42
      sha1: "f013d66c7f6817d08b7eb2a93e6d0440c1f3e7f8"
      size: 1048576
      extra: "{}"
      editgroup_id: 16
      mimetype: "application/pdf"
      state: "wip"
      md5: "d41efcc592d1e40ac13905377399eb9b"
    upperCaseName: "FILE_ENTITY"
  release_entity:
    type: "object"
    required:
    - "title"
    - "work_id"
    properties:
      refs:
        type: "array"
        items:
          $ref: "#/definitions/release_ref"
      contribs:
        type: "array"
        items:
          $ref: "#/definitions/release_contrib"
      language:
        type: "string"
      publisher:
        type: "string"
      issue:
        type: "string"
        example: "12"
      pages:
        type: "string"
      volume:
        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: "00000000-0000-0000-adce-000000000001"
      work_id:
        type: "string"
        example: "00000000-0000-0000-adce-000000000001"
      title:
        type: "string"
      state:
        type: "string"
        enum:
        - "wip"
        - "active"
        - "redirect"
        - "deleted"
      ident:
        type: "string"
        example: "00000000-0000-0000-adce-000000000001"
      revision:
        type: "integer"
        format: "int64"
        example: 42
      redirect:
        type: "string"
        example: "00000000-0000-0000-adce-000000000002"
      editgroup_id:
        type: "integer"
        format: "int64"
        example: 16
      extra:
        type: "object"
    example:
      redirect: "00000000-0000-0000-adce-000000000002"
      work_id: "00000000-0000-0000-adce-000000000001"
      issue: "12"
      ident: "00000000-0000-0000-adce-000000000001"
      release_type: "book"
      language: "language"
      title: "title"
      release_status: "preprint"
      contribs:
      - role: "role"
        creator_id: "creator_id"
        index: 1
        raw: "raw"
      - role: "role"
        creator_id: "creator_id"
        index: 1
        raw: "raw"
      revision: 42
      volume: "volume"
      pages: "pages"
      refs:
      - target_release_id: "target_release_id"
        year: 6
        container_title: "container_title"
        index: 0
        raw: "raw"
        title: "title"
        locator: "p123"
        key: "key"
      - target_release_id: "target_release_id"
        year: 6
        container_title: "container_title"
        index: 0
        raw: "raw"
        title: "title"
        locator: "p123"
        key: "key"
      release_date: "2000-01-23"
      isbn13: "isbn13"
      extra: "{}"
      publisher: "publisher"
      editgroup_id: 16
      state: "wip"
      container_id: "00000000-0000-0000-adce-000000000001"
      doi: "10.1234/abcde.789"
    upperCaseName: "RELEASE_ENTITY"
  work_entity:
    type: "object"
    properties:
      work_type:
        type: "string"
      extra:
        type: "object"
      editgroup_id:
        type: "integer"
        format: "int64"
        example: 16
      redirect:
        type: "string"
        example: "00000000-0000-0000-adce-000000000002"
      revision:
        type: "integer"
        format: "int64"
        example: 42
      ident:
        type: "string"
        example: "00000000-0000-0000-adce-000000000001"
      state:
        type: "string"
        enum:
        - "wip"
        - "active"
        - "redirect"
        - "deleted"
    example:
      redirect: "00000000-0000-0000-adce-000000000002"
      ident: "00000000-0000-0000-adce-000000000001"
      extra: "{}"
      work_type: "work_type"
      editgroup_id: 16
      state: "wip"
      revision: 42
    upperCaseName: "WORK_ENTITY"
  entity_edit:
    type: "object"
    required:
    - "edit_id"
    - "editgroup_id"
    - "ident"
    properties:
      edit_id:
        type: "integer"
        format: "int64"
        example: 847
      ident:
        type: "string"
        example: "00000000-0000-0000-adce-000000000001"
      revision:
        type: "integer"
        format: "int64"
        example: 42
      redirect_ident:
        type: "string"
        example: "00000000-0000-0000-adce-000000000002"
      editgroup_id:
        type: "integer"
        format: "int64"
        example: 16
      extra:
        type: "object"
    example:
      ident: "00000000-0000-0000-adce-000000000001"
      edit_id: 847
      extra: "{}"
      redirect_ident: "00000000-0000-0000-adce-000000000002"
      editgroup_id: 16
      revision: 42
    upperCaseName: "ENTITY_EDIT"
  editor:
    type: "object"
    required:
    - "username"
    properties:
      username:
        type: "string"
        example: "zerocool93"
    example:
      username: "zerocool93"
    upperCaseName: "EDITOR"
  editgroup:
    type: "object"
    required:
    - "editor_id"
    properties:
      id:
        type: "integer"
        format: "int64"
      editor_id:
        type: "integer"
        format: "int64"
      description:
        type: "string"
      extra:
        type: "object"
      edits:
        $ref: "#/definitions/editgroup_edits"
    example:
      extra: "{}"
      edits:
        works:
        - ident: "00000000-0000-0000-adce-000000000001"
          edit_id: 847
          extra: "{}"
          redirect_ident: "00000000-0000-0000-adce-000000000002"
          editgroup_id: 16
          revision: 42
        - ident: "00000000-0000-0000-adce-000000000001"
          edit_id: 847
          extra: "{}"
          redirect_ident: "00000000-0000-0000-adce-000000000002"
          editgroup_id: 16
          revision: 42
        creators:
        - ident: "00000000-0000-0000-adce-000000000001"
          edit_id: 847
          extra: "{}"
          redirect_ident: "00000000-0000-0000-adce-000000000002"
          editgroup_id: 16
          revision: 42
        - ident: "00000000-0000-0000-adce-000000000001"
          edit_id: 847
          extra: "{}"
          redirect_ident: "00000000-0000-0000-adce-000000000002"
          editgroup_id: 16
          revision: 42
        files:
        - ident: "00000000-0000-0000-adce-000000000001"
          edit_id: 847
          extra: "{}"
          redirect_ident: "00000000-0000-0000-adce-000000000002"
          editgroup_id: 16
          revision: 42
        - ident: "00000000-0000-0000-adce-000000000001"
          edit_id: 847
          extra: "{}"
          redirect_ident: "00000000-0000-0000-adce-000000000002"
          editgroup_id: 16
          revision: 42
        containers:
        - ident: "00000000-0000-0000-adce-000000000001"
          edit_id: 847
          extra: "{}"
          redirect_ident: "00000000-0000-0000-adce-000000000002"
          editgroup_id: 16
          revision: 42
        - ident: "00000000-0000-0000-adce-000000000001"
          edit_id: 847
          extra: "{}"
          redirect_ident: "00000000-0000-0000-adce-000000000002"
          editgroup_id: 16
          revision: 42
        releases:
        - ident: "00000000-0000-0000-adce-000000000001"
          edit_id: 847
          extra: "{}"
          redirect_ident: "00000000-0000-0000-adce-000000000002"
          editgroup_id: 16
          revision: 42
        - ident: "00000000-0000-0000-adce-000000000001"
          edit_id: 847
          extra: "{}"
          redirect_ident: "00000000-0000-0000-adce-000000000002"
          editgroup_id: 16
          revision: 42
      description: "description"
      editor_id: 6
      id: 0
    upperCaseName: "EDITGROUP"
  changelogentries:
    type: "array"
    items:
      $ref: "#/definitions/changelogentries_inner"
    upperCaseName: "CHANGELOGENTRIES"
  release_ref:
    type: "object"
    properties:
      index:
        type: "integer"
        format: "int64"
      target_release_id:
        type: "string"
      raw:
        type: "string"
      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"
      index: 0
      raw: "raw"
      title: "title"
      locator: "p123"
      key: "key"
    upperCaseName: "RELEASE_REF"
  release_contrib:
    type: "object"
    properties:
      index:
        type: "integer"
        format: "int64"
      creator_id:
        type: "string"
      raw:
        type: "string"
      role:
        type: "string"
    example:
      role: "role"
      creator_id: "creator_id"
      index: 1
      raw: "raw"
    upperCaseName: "RELEASE_CONTRIB"
  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: "00000000-0000-0000-adce-000000000001"
        edit_id: 847
        extra: "{}"
        redirect_ident: "00000000-0000-0000-adce-000000000002"
        editgroup_id: 16
        revision: 42
      - ident: "00000000-0000-0000-adce-000000000001"
        edit_id: 847
        extra: "{}"
        redirect_ident: "00000000-0000-0000-adce-000000000002"
        editgroup_id: 16
        revision: 42
      creators:
      - ident: "00000000-0000-0000-adce-000000000001"
        edit_id: 847
        extra: "{}"
        redirect_ident: "00000000-0000-0000-adce-000000000002"
        editgroup_id: 16
        revision: 42
      - ident: "00000000-0000-0000-adce-000000000001"
        edit_id: 847
        extra: "{}"
        redirect_ident: "00000000-0000-0000-adce-000000000002"
        editgroup_id: 16
        revision: 42
      files:
      - ident: "00000000-0000-0000-adce-000000000001"
        edit_id: 847
        extra: "{}"
        redirect_ident: "00000000-0000-0000-adce-000000000002"
        editgroup_id: 16
        revision: 42
      - ident: "00000000-0000-0000-adce-000000000001"
        edit_id: 847
        extra: "{}"
        redirect_ident: "00000000-0000-0000-adce-000000000002"
        editgroup_id: 16
        revision: 42
      containers:
      - ident: "00000000-0000-0000-adce-000000000001"
        edit_id: 847
        extra: "{}"
        redirect_ident: "00000000-0000-0000-adce-000000000002"
        editgroup_id: 16
        revision: 42
      - ident: "00000000-0000-0000-adce-000000000001"
        edit_id: 847
        extra: "{}"
        redirect_ident: "00000000-0000-0000-adce-000000000002"
        editgroup_id: 16
        revision: 42
      releases:
      - ident: "00000000-0000-0000-adce-000000000001"
        edit_id: 847
        extra: "{}"
        redirect_ident: "00000000-0000-0000-adce-000000000002"
        editgroup_id: 16
        revision: 42
      - ident: "00000000-0000-0000-adce-000000000001"
        edit_id: 847
        extra: "{}"
        redirect_ident: "00000000-0000-0000-adce-000000000002"
        editgroup_id: 16
        revision: 42
    upperCaseName: "EDITGROUP_EDITS"
  changelogentries_inner:
    required:
    - "editgroup_id"
    - "index"
    - "timestamp"
    properties:
      index:
        type: "integer"
        format: "int64"
      editgroup_id:
        type: "integer"
        format: "int64"
      timestamp:
        type: "string"
        format: "date-time"
    upperCaseName: "CHANGELOGENTRIES_INNER"
x-entity-props:
  state:
    type: "string"
    enum:
    - "wip"
    - "active"
    - "redirect"
    - "deleted"
  ident:
    type: "string"
    example: "00000000-0000-0000-adce-000000000001"
  revision:
    type: "integer"
    example: 42
    format: "int64"
  redirect:
    type: "string"
    example: "00000000-0000-0000-adce-000000000002"
  editgroup_id:
    type: "integer"
    example: 16
    format: "int64"
  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"
  default:
    description: "Generic Error"
    schema:
      $ref: "#/definitions/error_response"