Skip to content

Requests

Requests

Used for interacting with requests.

Get a request

GET /api/requests/{request_id}

Parameters

Name Type Location Description
request_id string path The request's public identifier.
accept string header - application/json (default)
- application/vnd.inveniordm.v1+json (not yet)

Request

GET /api/requests/{request_id} HTTP/1.1
Accept: application/json

Response

HTTP/1.1 200 OK
Content-Type: application/json

{
  "created": "2020-11-27 10:52:23.945755",
  "created_by": {"user": "1"},
  "expires_at": null,
  "id": "{request_id}",
  "is_closed": False,
  "is_expired": False,
  "is_open": False,
  "links": {
    "self": "{scheme+hostname}/api/requests/{request_id}",
    "actions": {
      "accept": "{scheme+hostname}/api/requests/{request_id}/actions/accept",
      "cancel": "{scheme+hostname}/api/requests/{request_id}/actions/cancel",
      "decline": "{scheme+hostname}/api/requests/{request_id}/actions/decline",
      "submit": "{scheme+hostname}/api/requests/{request_id}/actions/submit"
    },
  },
  "number": "1",
  "receiver": {"user": "2"},
  "revision_id": 1,
  "status": "draft",
  "title": "Foo bar",
  "topic": {"record": {record_id}},
  "type": "default-request",
  "updated": "2020-11-27 10:52:23.969244",
}

Update a request

Updating a request is not supported yet.

Because only some properties of a request can be updated manually, updating a request is disabled until it can be handled properly.

PUT /api/requests/{request_id}

Parameters

Name Type Location Description
request_id string path The request's public identifier.
accept string header - application/json (default)
- application/vnd.inveniordm.v1+json (not yet)

Request

PUT /api/requests/{request_id} HTTP/1.1
Content-Type: application/json

{
  "created_by": {"user": "1"},
  "expires_at": null,
  "id": "{request_id}",
  "number": "{request_number}",
  "receiver": {"user": "2"},
  "revision_id": 1,
  "status": "draft",
  "title": "A new title",
  "topic": {"record": "abcd-1234"},
  "type": "default-request",
}

Response

HTTP/1.1 200 OK
Content-Type: application/json

{
  "created": "2020-11-27 10:52:23.945755",
  "created_by": {"user": "1"},
  "expires_at": null,
  "id": "{request_id}",
  "is_closed": False,
  "is_expired": False,
  "is_open": False,
  "links": {
    "self": "{scheme+hostname}/api/requests/{request_id}",
    "actions": {
      "accept": "{scheme+hostname}/api/requests/{request_id}/actions/accept",
      "cancel": "{scheme+hostname}/api/requests/{request_id}/actions/cancel",
      "decline": "{scheme+hostname}/api/requests/{request_id}/actions/decline",
      "submit": "{scheme+hostname}/api/requests/{request_id}/actions/submit"
    }
  },
  "number": "{request_number}",
  "receiver": {"user": "2"},
  "revision_id": 2,
  "status": "draft",
  "title": "A new title",
  "topic": {"record": "abcd-1234"},
  "type": "default-request",
  "updated": "2020-11-28 10:52:23.969244",
}

Search requests

Used for listing all requests you can interact with.

GET /api/requests

Parameters

Name Type Location Description
q string query Search query used to filter results based on ElasticSearch's query string syntax.
sort string query Sort search results. Built-in options are "bestmatch", "name", "newest", "oldest" (default: "bestmatch" or "newest").
size integer query Specify number of items in the results page (default: 10).
page integer query Specify the page of results.
accept string header - application/json (default)
- application/vnd.inveniordm.v1+json

Note that "bestmatch" is only available as a sort option on requests that provide a query string as a q parameter, in which case it is the default sort type. If no query string is provided in the request, the default sort type is "newest". In this case a "bestmatch" value is ignored and the default "newest" sort is used.

Request

GET /api/requests HTTP/1.1

Response

HTTP/1.1 200 OK
Content-Type: application/json

{
  "hits": {
    "hits": [
      {
        "created": "2020-11-27 10:52:23.945755",
        "created_by": {"user": "1"},
        "expires_at": null,
        "id": "{request_id}",
        "is_closed": False,
        "is_expired": False,
        "is_open": False,
        "links": {
          "self": "{scheme+hostname}/api/requests/{request_id}",
          "actions": {
            "accept": "{scheme+hostname}/api/requests/{request_id}/actions/accept",
            "cancel": "{scheme+hostname}/api/requests/{request_id}/actions/cancel",
            "decline": "{scheme+hostname}/api/requests/{request_id}/actions/decline",
            "submit": "{scheme+hostname}/api/requests/{request_id}/actions/submit"
          }
        },
        "number": "{request_number}",
        "receiver": {"user": "2"},
        "revision_id": 2,
        "status": "draft",
        "title": "A new title",
        "topic": {"record": "abcd-1234"},
        "type": "default-request",
        "updated": "2020-11-28 10:52:23.969244",
      }
      ...
    ],
    "total": 2
  },
  "sortBy": "newest",
  "links": {
    "self": "{scheme+hostname}/api/requests?page=1&size=25&sort=newest"
  }
}

Request Actions

Used for interacting with a request's lifecyle.

Request submission

A request is submitted via the draft and record APIs.

Accept a request

Reviewer-only

Only a request's reviewer can accept it.

POST /api/requests/{request_id}/actions/accept

Parameters

Name Type Location Description
request_id   string path The request's public identifier.
payload object body The data associated with the comment. See Comment Payload.
accept string header - application/json (default)
- application/vnd.inveniordm.v1+json (not yet)

Request

POST /api/requests/{request_id}/actions/accept HTTP/1.1
{
  "payload": {"content": "You are in!", "format": "html"}
}

Response

HTTP/1.1 200 OK
Content-Type: application/json

{
  "created": "2020-11-27 10:52:23.945755",
  "created_by": {"user": "1"},
  "expires_at": null,
  "id": "{request_id}",
  "is_closed": True,
  "is_expired": False,
  "is_open": False,
  "links": {
    "self": "{scheme+hostname}/api/requests/{request_id}",
    "actions": {
      "accept": "{scheme+hostname}/api/requests/{request_id}/actions/accept",
      "cancel": "{scheme+hostname}/api/requests/{request_id}/actions/cancel",
      "decline": "{scheme+hostname}/api/requests/{request_id}/actions/decline",
      "submit": "{scheme+hostname}/api/requests/{request_id}/actions/submit"
    }
  },
  "number": "{request_number}",
  "receiver": {"user": "2"},
  "revision_id": 2,
  "status": "accepted",
  "title": "A new title",
  "topic": {"record": "abcd-1234"},
  "type": "default-request",
  "updated": "2020-11-28 10:52:23.969244",
}

Cancel a request

Creator-only

Only a request's creator can cancel it. A request's reviewer can decline though.

POST /api/requests/{request_id}/actions/cancel

Parameters

Name Type Location Description
request_id string path The request's public identifier.
payload object body The data associated with the comment. See Comment Payload.
accept string header - application/json (default)
- application/vnd.inveniordm.v1+json (not yet)

Request

POST /api/requests/{request_id}/actions/cancel HTTP/1.1
{
  "payload": {"content": "Didn't mean to do that!", "format": "html"}
}

Response

HTTP/1.1 200 OK
Content-Type: application/json

{
  "created": "2020-11-27 10:52:23.945755",
  "created_by": {"user": "1"},
  "expires_at": null,
  "id": "{request_id}",
  "is_closed": True,
  "is_expired": False,
  "is_open": False,
  "links": {
    "self": "{scheme+hostname}/api/requests/{request_id}",
    "actions": {
      "accept": "{scheme+hostname}/api/requests/{request_id}/actions/accept",
      "cancel": "{scheme+hostname}/api/requests/{request_id}/actions/cancel",
      "decline": "{scheme+hostname}/api/requests/{request_id}/actions/decline",
      "submit": "{scheme+hostname}/api/requests/{request_id}/actions/submit"
    }
  },
  "number": "{request_number}",
  "receiver": {"user": "2"},
  "revision_id": 2,
  "status": "cancelled",
  "title": "A new title",
  "topic": {"record": "abcd-1234"},
  "type": "default-request",
  "updated": "2020-11-28 10:52:23.969244",
}

Decline a request

Reviewer-only

Only a request's reviewer can decline it. A request's creator can cancel it though.

POST /api/requests/{request_id}/actions/decline

Parameters

Name Type Location Description
request_id string path The request's public identifier.
payload object body The data associated with the comment. See Comment Payload.
accept string header - application/json (default)
- application/vnd.inveniordm.v1+json (not yet)

Request

POST /api/requests/{request_id}/actions/decline HTTP/1.1
{
  "payload": {"content": "You are not in!", "format": "html"}
}

Response

HTTP/1.1 200 OK
Content-Type: application/json

{
  "created": "2020-11-27 10:52:23.945755",
  "created_by": {"user": "1"},
  "expires_at": null,
  "id": "{request_id}",
  "is_closed": True,
  "is_expired": False,
  "is_open": False,
  "links": {
    "self": "{scheme+hostname}/api/requests/{request_id}",
    "actions": {
      "accept": "{scheme+hostname}/api/requests/{request_id}/actions/accept",
      "cancel": "{scheme+hostname}/api/requests/{request_id}/actions/cancel",
      "decline": "{scheme+hostname}/api/requests/{request_id}/actions/decline",
      "submit": "{scheme+hostname}/api/requests/{request_id}/actions/submit"
    }
  },
  "number": "{request_number}",
  "receiver": {"user": "2"},
  "revision_id": 2,
  "status": "declined",
  "title": "A new title",
  "topic": {"record": "abcd-1234"},
  "type": "default-request",
  "updated": "2020-11-28 10:52:23.969244",
}

Request Events

Used for interacting with request events.

Submit a comment on a request

POST /api/requests/{request_id}/comments

Parameters

Name Type Location Description
request_id string path The request's public identifier.
payload object body The data associated with the comment. See Comment Payload.
accept string header - application/json (default)
- application/vnd.inveniordm.v1+json (not yet)

Comment Payload

Name Type Location Description
content string body The comment's textual content.
format string body The format of the textual content. Only "html" accepted for now.

Request

POST /api/requests/{request_id}/comments HTTP/1.1
Content-Type: application/json

{
  "payload": {
    "content": "I would use these subject terms to align the record with others in the community.",
    "format": "html"
  }
}

Response

HTTP/1.1 201 CREATED
Content-Type: application/json

{
  "created_by": {"user": "1"},
  "created": "2020-11-27 10:52:23.945755",
  "id": "{comment_id}",
  "links": {
    "self": "{scheme+hostname}/api/requests/{rquest_id}/comments/{comment_id}"
  },
  "payload": {
    "content": "I would use these subject terms to align the record with others in the community.",
    "format": "html"
  },
  "revision_id": 1,
  "type": "C",
  "updated": "2020-11-27 10:52:23.969244",
}

The event type

Comments are a kind of event related to a request. All events follow the same pattern: they have a type field identifying their type and a payload field with their specific data.

Get a comment

GET /api/requests/{request_id}/comments/{comment_id}

Parameters

Name Type Location Description
request_id string path The request's public identifier.
comment_id string path The comment's public identifier
accept string header - application/json (default)
- application/vnd.inveniordm.v1+json (not yet)

Request

GET /api/requests/{request_id}/comments/{comment_id} HTTP/1.1
Accept: application/json

Response

HTTP/1.1 200 OK
Content-Type: application/json

{
  "created": "2020-11-27 10:52:23.945755",
  "created_by": {"user": "1"},
  "id": "{comment_id}",
  "links": {
    "self": "{scheme+hostname}/api/requests/{rquest_id}/comments/{comment_id}"
  },
  "payload": {
    "content": "I would use these subject terms to align the record with others in the community.",
    "format": "html"
  },
  "revision_id": 1,
  "type": "C",
  "updated": "2020-11-27 10:52:23.969244",
}

Update a comment

PUT /api/requests/{request_id}/comments/{comment_id}

Parameters

Name Type Location Description
request_id string path The request's public identifier.
comment_id string path The comment's public identifier
payload object body The data associated with the comment. See above.
accept string header - application/json (default)
- application/vnd.inveniordm.v1+json (not yet)

Request

PUT /api/requests/{request_id}/comments/{comment_id} HTTP/1.1
Content-Type: application/json

{
  "payload": {
    "content": "I would use these subject terms to align this record and the other one with others in the community.",
    "format": "html"
  }
}

Response

HTTP/1.1 200 OK
Content-Type: application/json


{
  "created": "2020-11-27 10:52:23.945755",
  "created_by": {"user": "1"},
  "id": "{comment_id}",
  "links": {
    "self": "{scheme+hostname}/api/requests/{rquest_id}/comments/{comment_id}"
  },
  "payload": {
    "content": "I would use these subject terms to align this record and the other one with others in the community.",
    "format": "html"
  },
  "revision_id": 2,
  "type": "C",
  "updated": "2020-11-27 10:55:23.969244",
}

Delete a comment

DELETE /api/requests/{request_id}/comments/{comment_id}

Deleting a comment will clear its content and mark it as a "deleted comment event". You can only delete your own comments unless you are a request's reviewer or admin.

Parameters

Name Type Location Description
request_id string path The request's public identifier.
comment_id string path The comment's public identifier
accept string header - application/json (default)
- application/vnd.inveniordm.v1+json (not yet)

Request

DELETE /api/requests/{request_id}/comments/{comment_id} HTTP/1.1

Response

HTTP/1.1 204 No Content

Get a request's timeline

GET /api/requests/{request_id}/timeline

Parameters

Name Type Location Description
request_id   string path The request's public identifier.
q string query Search query used to filter results based on ElasticSearch's query string syntax.
sort string query Sort search results.
size integer query Specify number of items in the results page (default: 10).
page integer query Specify the page of results.
accept string header - application/json (default)
- application/vnd.inveniordm.v1+json (not yet)

Request

GET /api/requests/{request_id}/timeline HTTP/1.1

Response

HTTP/1.1 200 OK
Content-Type: application/json

{
  "hits": {
    "hits": [
      {
        "created": "2020-11-27 10:52:23.945755",
        "created_by": {"user": "1"},
        "id": "{comment_id}",
        "links": {
          "self": "{scheme+hostname}/api/requests/{rquest_id}/comments/{comment_id}"
        },
        "payload": {
          "content": "I would use these subject terms to align this record and the other one with others in the community.",
          "format": "html"
        },
        "revision_id": 2,
        "type": "C",
        "updated": "2020-11-27 10:55:23.969244",
      },
      ...
    ],
    "total": 2
  },
  "links": {
    "self": "{scheme+hostname}/api/requests/{request_id}/timeline?page=1&size=25&sort=oldest"
  }
}

Advanced timeline search

The timeline endpoint can be searched, sorted, filtered, paginated etc., like any other InvenioRDM search endpoint.