Update a Document
/capture/api/v1.1/documents/{docId}
This operation is used to modify a document. It allows for both the document data, and its content, to be modified in a single operation.
The request body of the operation requires at least the document
parameter. The content
parameter is optional, and only necessary if a change of the document contents is desired.
The document
parameter is a document object and essentially patches the document with the attributes that
are both present in the request body and updatable. A merge-patch media sub-type isn't used because the document
object contains an array, and that would require the entire contents of the array to be in the request body.
RFC 7386, which governs the merge-patch, provides no
sematics in which to update elements an array. Even though a merge-patch isn't used, just the desired changes are
required in the request body, and therefore, just the fields that are being updated need to be present.
The updatable attributes are:
title
profile
fields
comment
An update to either the title
or comment
is a simple string change. An update to the docment profile
(profile
) requires setting its value to a different document profile object. The object must contain either the
id
attribute or the name
attribute, or it can contain both. Only one attribute is necessary because the
names are unique in the procedure definition. To clear a current document profile, or any other attributes, its value in the document
object must be set to null
. Lastly, only those fields that are being set or changed, need to exist in the
fields
array.
The document object must also contain its stateToken
. This is necessary to ensure the object is still the same
that is being updated. The stateToken
will be different if it was was already updated from the last time it was
requested. This ensures there aren't concurrent updates, and prevents overwriting of data.
Note: The OAuth token used in this request must represent an account that has been granted explict access to the step in which this document presently resides. It makes no difference if the account represents a Capture Administator or a Capture User.
Request
- multipart/form-data
-
docId: string
The unique identifier of the document in Capture.
-
X-Requested-With: string
A header used to prevent Cross-Site Request Forgery (CSRF) attacks. The only supported value is XMLHttpRequest.
-
content(optional): file
This is the actual document content, for instance, an updated image as a result of processing.
The Content-Type of the multipart must identify the type of file. And, the Content-Disposition must contain the filename. -
document: string
This is a document object. The Content-Type of the mulitpart must be used and must identify the application encoding used for the string value. This must be application/json.
The document object must also contain its
stateToken
that represents its believed current state. If the suppliedstateToken
does not match the document's currentstateToken
, the update operation will result in an error.
Response
- application/json
200 Response
The document, containing any updates.
object
Document
A Document in Capture is a file combined with custom metadata fields. The metadata fields are defined in Capture procedures, and act as holders of information manged within Capture. A Document can also contain attachments. An Attachment is intended to augment the the Document, and there can be numerous attachments of varing types.
-
batch(optional):
object batch
The Capture Batch that contains this document.
-
comment(optional):
string
A general use comment of this document.
-
createdBy(optional):
object createdBy
The user that created the document.
-
createdDate(optional):
string(date-time)
This identifies when the document was created. The date/time in ISO-8601 Date Time format (
yyyy-MM-dd'T'HH:mm:ss.SSSZ
) UTC, governed by RFC 3339. -
fields(optional):
array fields
This is an array of all the field values available for this document.
-
id(optional):
string
The unique identifier of the document in Capture.
-
links(optional):
array links
HATEOS link to related resources and actions or actions on this resource. This will include at least a canonical related link to the resource.
-
mediaType(optional):
string
This represents the media type of the document. That is the two-part identifier for file formats and format contents transmitted on the Internet.
-
profile(optional):
object profile
The document profile that has been assigned to this document.
-
size(optional):
integer(int64)
The size, in bytes, of the document.
-
sourceName(optional):
string
The filename of the document when imported.
-
stateToken(optional):
string
A generated string value that represents a particular state of the document.
In general, it is used to allow modifications of the document to proceed. It is essentially saying ... modify this document if its current
stateToken
matches this value. If the values do not match, the modification is not permitted and the operation results in an error. -
step(optional):
object step
The current processing step, if any, this document is undergoing.
-
title(optional):
string
The title of the document. This is generally the filename used during document import.
-
updatedBy(optional):
object updatedBy
The last user that updated the document.
-
updatedDate(optional):
string(date-time)
This identifies when the last time the document was updated. The date/time in ISO-8601 Date Time format (
yyyy-MM-dd'T'HH:mm:ss.SSSZ
) UTC, governed by RFC 3339.
object
The Capture Batch that contains this document.
-
object
Capture Batch
Title:
Capture Batch
A collection of documents in Capture that represent a unit of work in a procedure.
object
The user that created the document.
-
object
User Information
Title:
User Information
This object contains information about a given user of Capture.
Models use this object to denote some relation between a user and some other object. For instance, a model of the API may define the attribute
updatedBy
that is a user object. This indicates it was last updated by that given user.
array
This is an array of all the field values available for this document.
-
Array of:
object Field Value
Title:
Field Value
A field value is a Capture metadata field that combines the basic field definition and an actual value.
array
HATEOS link to related resources and actions or actions on this resource. This will include at least a canonical related link to the resource.
-
Array of:
object HATEOAS Link
Title:
HATEOAS Link
This is a HATEOAS link and related metadata. If responses provide links (for example, a
self
link to the resource itself) the links provided will include one or more of the properties defined on this link structure.Internet Assigned Numbers Authority (IANA) maintains a registry of link relations for use in a HATEOAS link. These are well known relations and have specific meanings. If they are applicale in Capture, they are used. For instance, canonical is well known relation, and Capture does use it.
Capture does define its own link relations in certain cases because none of the registered relations provided the proper meaning. As defined in RFC for Web Linking (RFC 8288) the relation needs to be a URI. The following link relations are defined by Capture:
urn:oce:capture:document-content
- Represents the link used to obtain a document's contenturn:oce:capture:document-complete
- Represents the link used to complete processing a document in a Step task queueurn:oce:capture:attachment-content
- Represents the link used to obtain an attachment's content
object
The document profile that has been assigned to this document.
-
object
Document Profile
Title:
Document Profile
A Document Profile associates a collection of custom metadata fields defined in a Capture procedure with a document. Additionally, it can have associated attachment types.
These are used in Capture to help categorize and process documents. While a document profile does relate custom metadata fields and attachment types from the procedure to a document, it does not restrict metadata to just those fields or attachments to just those types. It they are used for display/management within the Capture Client.
object
The current processing step, if any, this document is undergoing.
-
object
Procedure Step
Title:
Procedure Step
A step in a procedure flow.
object
The last user that updated the document.
-
object
User Information
Title:
User Information
This object contains information about a given user of Capture.
Models use this object to denote some relation between a user and some other object. For instance, a model of the API may define the attribute
updatedBy
that is a user object. This indicates it was last updated by that given user.
object
Capture Batch
A collection of documents in Capture that represent a unit of work in a procedure.
-
createdBy(optional):
object createdBy
The user that created the batch.
-
createdDate(optional):
string(date-time)
This identifies when the batch was created. The date/time in ISO-8601 Date Time format (
yyyy-MM-dd'T'HH:mm:ss.SSSZ
) UTC, governed by RFC 3339. -
error(optional):
string
The current error message of the batch, if any.
If the batch is in the ERROR
state
, this will contain the error message detailing why the batch failed processing. This message will remain until the batch re-enters processing. -
id(optional):
string
The unique identifier of the batch.
-
links(optional):
array links
HATEOS link to related resources and actions or actions on this resource. This will include at least a canonical related link to the resource.
-
lock(optional):
object lock
If the batch is locked (by a user creating/editing the batch or if Capture is currently processing the batch), this object will contain information about the lock. The
state
of the batch determines if this object exists. -
name(optional):
string
The name given to the batch.
When Capture creates a batch, the name is some defined prefix and a sequence number. For example, inv_4781
-
notes(optional):
string
User supplied general notes associated with a batch.
-
priority(optional):
integer(int32)
Minimum Value:
0
Maximum Value:10
Default Value:0
A user specified priority of the batch.
This value is used prioritize the batch for a user's attention. Its used to filter and sort batches for viewing in the client.
-
procedure(optional):
object procedure
The Capture Procedure associated with this batch.
-
state(optional):
string
Default Value:
READY
The current state of the batch.
READY
- The standard resting state of a batch. It is available to be locked by a client.LOCKED
- The batch is locked by a client for editing, such as adding/removing documents and setting metadata field values.ERROR
- An error occurred during processing. It is available to be locked by a client for edits to correct processing errors.PROCESSING
- Capture is presently processing the batch. The batch is in one of the jobs defined in the Capture procedure.
-
status(optional):
string
The current status assigned to the batch.
The status values are defined in the procedure and can be assigned during batch creation, and during transitions between processing jobs.
-
updatedBy(optional):
object updatedBy
The last user that updated the batch. This can be the Capture system.
-
updatedDate(optional):
string(date-time)
This identifies when the last time the batch was updated. The date/time in ISO-8601 Date Time format (
yyyy-MM-dd'T'HH:mm:ss.SSSZ
) UTC, governed by RFC 3339.
object
The user that created the batch.
-
object
User Information
Title:
User Information
This object contains information about a given user of Capture.
Models use this object to denote some relation between a user and some other object. For instance, a model of the API may define the attribute
updatedBy
that is a user object. This indicates it was last updated by that given user.
array
HATEOS link to related resources and actions or actions on this resource. This will include at least a canonical related link to the resource.
-
Array of:
object HATEOAS Link
Title:
HATEOAS Link
This is a HATEOAS link and related metadata. If responses provide links (for example, a
self
link to the resource itself) the links provided will include one or more of the properties defined on this link structure.Internet Assigned Numbers Authority (IANA) maintains a registry of link relations for use in a HATEOAS link. These are well known relations and have specific meanings. If they are applicale in Capture, they are used. For instance, canonical is well known relation, and Capture does use it.
Capture does define its own link relations in certain cases because none of the registered relations provided the proper meaning. As defined in RFC for Web Linking (RFC 8288) the relation needs to be a URI. The following link relations are defined by Capture:
urn:oce:capture:document-content
- Represents the link used to obtain a document's contenturn:oce:capture:document-complete
- Represents the link used to complete processing a document in a Step task queueurn:oce:capture:attachment-content
- Represents the link used to obtain an attachment's content
object
If the batch is locked (by a user creating/editing the batch or if Capture is currently processing the batch), this object will
contain information about the lock. The state
of the batch determines if this object exists.
-
lockedBy(optional):
object lockedBy
If the batch is locked within a Capture Client instance, this attribute will contain the user that locked the batch.
-
lockedDate(optional):
string(date-time)
This identifies when the batch was locked. The date/time in ISO-8601 Date Time format (
yyyy-MM-dd'T'HH:mm:ss.SSSZ
) UTC, governed by RFC 3339. -
step(optional):
object step
If Capture is currently processing the batch, this object will contain current processing step the batch is undergoing.
-
workstation(optional):
string
If the batch is locked within a Capture Client instance, this attribute will contain the computer name where the Capture Client instance locked the batch.
object
The Capture Procedure associated with this batch.
-
object
Capture Procedure
Title:
Capture Procedure
A Capture Procedure defines metadata and procesing steps of a flow.
object
The last user that updated the batch. This can be the Capture system.
-
object
User Information
Title:
User Information
This object contains information about a given user of Capture.
Models use this object to denote some relation between a user and some other object. For instance, a model of the API may define the attribute
updatedBy
that is a user object. This indicates it was last updated by that given user.
object
User Information
This object contains information about a given user of Capture.
Models use this object to denote some relation between a user and some other object. For instance, a
model of the API may define the attribute updatedBy
that is a user object. This indicates it
was last updated by that given user.
-
name:
string
The user's name.
object
HATEOAS Link
This is a HATEOAS link and related metadata. If responses provide links
(for example, a self
link to the resource itself) the links provided will include one or more of the
properties defined on this link structure.
Internet Assigned Numbers Authority (IANA) maintains a registry of link relations for use in a HATEOAS link. These are well known relations and have specific meanings. If they are applicale in Capture, they are used. For instance, canonical is well known relation, and Capture does use it.
Capture does define its own link relations in certain cases because none of the registered relations provided the proper meaning. As defined in RFC for Web Linking (RFC 8288) the relation needs to be a URI. The following link relations are defined by Capture:
urn:oce:capture:document-content
- Represents the link used to obtain a document's contenturn:oce:capture:document-complete
- Represents the link used to complete processing a document in a Step task queueurn:oce:capture:attachment-content
- Represents the link used to obtain an attachment's content
- href(optional): string
-
mediaType(optional):
string
Default Value:
application/json
Media type, as defined by RFC 2046, describing the link target. The property can be assumed to be
application/json
if the property is not present. -
method(optional):
string
Default Value:
GET
HTTP method for requesting the target of the link.
Valid values are:
OPTIONS
- HTTP OPTIONSHEAD
- HTTP HEADGET
- HTTP GETPOST
- HTTP POSTPUT
- HTTP PUTPATCH
- HTTP PATCHDELETE
- HTTP DELETE
The property can be assumed to be
GET
if the property is not present. -
profile(optional):
string(uri)
Link to the metadata of the resource, such as JSON-schema, that describes the resource expected when dereferencing the target resource. If not available, this property will not be present.
-
rel(optional):
string
Name of the link relation that, in addition to the type property, can be used to retrieve link details.
-
templated(optional):
boolean
Default Value:
false
Boolean flag that specifies the
href
property is a URI or URI Template. The property can be assumed to befalse
if the property is not present.
object
If the batch is locked within a Capture Client instance, this attribute will contain the user that locked the batch.
-
object
User Information
Title:
User Information
This object contains information about a given user of Capture.
Models use this object to denote some relation between a user and some other object. For instance, a model of the API may define the attribute
updatedBy
that is a user object. This indicates it was last updated by that given user.
object
If Capture is currently processing the batch, this object will contain current processing step the batch is undergoing.
-
object
Procedure Step
Title:
Procedure Step
A step in a procedure flow.
object
Procedure Step
A step in a procedure flow.
-
id(optional):
string
The unique identifier of the step within the procedure.
-
name(optional):
string
The name given to the step when created. For instance, the name of the processing job or commit profile.
-
type(optional):
string
The type of step. Some example include: External Processor, TIFF Conversion Processor, Asset Lookup Processor, etc.
object
Capture Procedure
A Capture Procedure defines metadata and procesing steps of a flow.
-
id(optional):
string
The unique identifier of the procedure in Capture.
-
name(optional):
string
The name given to the procedure when created
object
Field Value
A field value is a Capture metadata field that combines the basic field definition and an actual value.
-
dataType(optional):
string
Default Value:
ALPHA_NUMERIC
The data type of the field. Capture supports the following six data types:
NUMERIC
- Integer based number valueALPHA_NUMERIC
- Any general text or string valueDATE
- A date/time value in the form of ISO-8601 Date Time format (yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
), as governed by RFC 3339FLOAT
- Floating point number valuesITEM_REFERENCE
- A pointer to a content item in Oracle Content ManagementASSET_REFERENCE
- A pointer to a digital asset in Oracle Content ManagementCATEGORY_REFERENCE
- A pointer to a taxonomy category in Oracle Content ManagementLANGUAGE
- A language code as defined by RFC 4647.
-
name(optional):
string
The name of the field.
-
value(optional):
string
The actual value of this metadata field as it pertains to the given Capture document.
Fields do not initially have values. They must be set. This is either done through a default value in the metadata field definition, user supplied in Capture Client, or some Capture processing job.
The fields in Capture do not have a concept of a null value. The fields either have a value or do not have a value. Blank means there is no value.
object
Document Profile
A Document Profile associates a collection of custom metadata fields defined in a Capture procedure with a document. Additionally, it can have associated attachment types.
These are used in Capture to help categorize and process documents. While a document profile does relate custom metadata fields and attachment types from the procedure to a document, it does not restrict metadata to just those fields or attachments to just those types. It they are used for display/management within the Capture Client.
-
id(optional):
string
The unique identifier of the document profile.
-
name(optional):
string
The name given to the document profile.
400 Response
Bad Request
The request could not be processed because it contains missing or invalid information, such as a validation error on an input field or a missing required value. The response will be an Error Detail object.
403 Response
Forbidden
The request was valid and was understood, but the server is refusing action. This may be due to the account not having the necessary permissions for a resource, or attempting a prohibited action (e.g. creating a duplicate item where only one is allowed). The response will be an Error Detail object.
404 Response
Not Found
The request includes a resource URI that does not exist. The response will be an Error Detail object.
409 Response
Conflict
This response indicates the request conflicts with current state of the target resource. The response will be an Error Detail object.
Generally, an error response of 412 (Precondition Failed) will be returned. But a Conflict can occur when there are simultaneous edits on a resource.
412 Response
Precondition Failed
The server does not meet one of the preconditions of the request. The response will be an Error Detail object.
This error response is used specifically when the stateToken
used in the request body does not
match the current stateToken
of the resource.
500 Response
Internal Server Error
The server encountered an unexpected condition that prevented it from fulfilling the request. The response will be an Error Detail object.
Examples
Example 1:
The following example shows how to update a document.
curl -X PUT -H 'Accept: application/json' 'https://host:port/content/capture/api/v1/documents/dcf65d45-4f53-4f82-998c-5e189de1b6a1'
This updates the document with the ID of 'dcf65d45-4f53-4f82-998c-5e189de1b6a1' to set its title and set some metadata field values. The request body for this operation is a content type of multipart/form-data
. So the example shows the raw HTTP PUT.
Request Body
PUT /capture/api/v1/documents/dcf65d45-4f53-4f82-998c-5e189de1b6a1 HTTP/1.1 Host: server.example.com:443 X-Requested-With: XmlHttpRequest Authorization: Basic c3N2cmludC5tdGFkbWluOndlbGNvbWUx Content-Length: 886 Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW ----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="document" Content-Type: application/json { "title": "Tire's Plus Invoice", "stateToken": "340f804ff4118f2f419bc3ca87ef1213", "fields": [ { "name": "Invoice Date", "dataType": "DATE", "value": "2010-08-30" }, { "name": "Invoice Number", "dataType": "NUMERIC", "value": "56842" }, { "name": "Company Name", "dataType": "ALPHA_NUMERIC", "value": "Tire's Plus" }, { "name": "Invoice Total", "dataType": "FLOAT", "value": "5168.54" } ] } ----WebKitFormBoundary7MA4YWxkTrZu0gW
Response Body
{ "id": "dcf65d45-4f53-4f82-998c-5e189de1b6a1", "title": "Tire's Plus Invoice", "batch": { "id": "864", "name": "ep_53" }, "step": { "id": "a82321c2-f288-4545-8795-e3c0f035f7ba", "name": "Find Invoice Date", "type": "External Processor" }, "profile": { "id": "4933f335-0861-4e6a-84ca-86ccae6b7ed8", "name": "Invoice Profile" }, "stateToken": "340f804ff4118f2f419bc3ca87ef1213", "mediaType": "image/tiff", "sourceName": "Invoice20210810124042797000.TIF", "size": 32709, "fields": [ { "name": "Invoice Date", "dataType": "DATE", "value": "2010-08-30" }, { "name": "Invoice Number", "dataType": "NUMERIC", "value": "56842" }, { "name": "Company Name", "dataType": "ALPHA_NUMERIC", "value": "Tire's Plus" }, { "name": "Invoice Total", "dataType": "FLOAT", "value": "5168.54" } ], "createdBy": { "name": "ssvrint.mtadmin" }, "createdDate": "2021-08-18T05:01:37.181Z", "updatedBy": { "name": "ssvrint.mtadmin" }, "updatedDate": "2021-08-30T14:49:26.172Z", "links": [ { "rel": "canonical", "href": "http://server.example.com/capture/api/v1/documents/dcf65d45-4f53-4f82-998c-5e189de1b6a1", "method": "GET", "mediaType": "application/json" }, { "rel": "urn:oce:capture:document-content", "href": "http://server.example.com/capture/api/v1/documents/dcf65d45-4f53-4f82-998c-5e189de1b6a1/content", "method": "GET", "mediaType": "image/tiff" }, { "rel": "urn:oce:capture:document-complete", "href": "http://server.example.com/capture/api/v1/steps/a82321c2-f288-4545-8795-e3c0f035f7ba/tasks/documents/complete", "method": "PUT", "mediaType": "image/tiff" } ] }