Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Reverted from v. 18 (PUT/PATCH/etc. accidentally deleted)

...

Status
subtletrue
colourRed
title404
 Not Found

 

...

Anchor
Create Node With Named Path
Create Node With Named Path

Status
colourBlue
titlePOST
 Create a new node at the given path

Create a new automatically-named child node or datastream at the given path.

 

Query Parameters: Statussubtletruetitlechecksum (Optional) Provide a SHA-1 checksum which will be checked against the uploaded content to ensure error-free transfer

Status
subtletrue
titlemixin
 (Optional; values: fedora:object, fedora:datastream) Explicitly create an object or datastream, instead of inferring it from the request bodybody 

Request Headers:  StatussubtletruetitleContent-Disposition(Optional) content header including the original filename of the uploaded datastream content  StatussubtletruetitleContent-Type(Optional) MIME type of the uploaded datastream or RDF content (if the MIME type corresponds to a supported RDF format, it will be parsed as RDF and used to populate the child node properties, otherwise the uploaded content will be used to create a datastream)

 

Note

RDF will be interpreted using the current resource as the base URI (e.g. <> will be expanded to the current URI). Namespaces must be declared in full.

 

...

Lock-Token (Optional) a Lock-Token for any locks previously created on resources updated by this operation

Example (1):

Code Block
curl -X POST "http://localhost:8080/rest/"

Response:

Code Block
Status: 201 Created
 
Headers:
Location: http://localhost:8080/rest/some/path/to/a/new/resource

Example (2):

Code Block
curl -X POST "http://localhost:8080/rest/?mixin=fedora:datastream" # Create a fedora:datastream


Status:

Status
subtletrue
colourGreen
title201
 Created

Status
subtletrue
colourRed
title409
Conflict (resource is locked)

...

 

Status
colourBlue
titlePOST
 Create a new node as a child of the given node

If the given resource path exists, a POST to that path will create a new node as a child of the given resource using a generated identifier.

Request Headers:

Status
subtletrue
titleSlug
  Use the slug header when creating the new resource (see AtomPub slug header). If no slug is provided, the identifier will be automatically generated.

Lock-Token (Optional) a Lock-Token for any locks previously created on resources updated by this operation

Note

The slug you provide does not guarantee the location of the created node. Clients must check the Location header for the path to the created resource. For full control over the generated path, see POST Create a new node at the given path.

Query Parameters:

Status
subtletrue
titlemixin
 (Optional; values: fedora:object, fedora:datastream) Explicitly create an object or datastream, instead of inferring it from the request body 

Example (1):

Code Block
curl -X POST -H "Slug: new-node-name" "http://localhost:8080/rest/"

Response:

Code Block
Status: 201 Created
 
Headers:
Location: http://localhost:8080/rest/new-node-name"


Status:

Status
subtletrue
colourGreen
title201
 Created

Status
subtletrue
colourRed
title409
Conflict (resource is locked)

 

...

 

Status
colourBlue
titlePOST
  Create a new node and populate some properties

In addition to creating a new node, add the given properties to the object

Note

An RDF payload can be combined with any of the above forms.

Note

RDF will be interpreted using the current resource as the base URI (e.g. <> will be expanded to the current URI). Namespaces must be declared in full.

Request Headers:

Status
subtletrue
titleContent-Type
  text/turtle

Lock-Token (Optional) a Lock-Token for any locks previously created on resources updated by this operation

Query Parameters:

Status
subtletrue
titlechecksum

 

Example:

Code Block
curl -X POST -H "Content-Type: text/turtle" --data-binary "@body.rdf" "http://localhost:8080/rest/node/to/create"
 
Request Body:
PREFIX dc: <http://purl.org/dc/elements/1.1/>
<> dc:title "some-resource-title"
 

Response:

Code Block
Status: 201 Created
 
Headers:
Location: http://localhost:8080/rest/node/to/create

 

Status:

Status
subtletrue
colourGreen
title201
 Created

Status
subtletrue
colourRed
title409
Conflict (resource is locked)

 

...

 

Status
colourBlue
titlePOST
 Create a new node and execute a SPARQL-Update query

In addition to creating a new node, execute a SPARQL-Update query against the newly created node. 

Request Headers:

Status
subtletrue
titleContent-Type
  application/sparql-update

Lock-Token (Optional) a Lock-Token for any locks previously created on resources updated by this operation

Query Parameters:

Status
subtletrue
titlechecksum

Note

RDF will be interpreted using the current resource as the base URI (e.g. <> will be expanded to the current URI)

 

Example:

Code Block
curl -X POST -H "Content-Type: application/sparql-update" --data-binary "@body.rdf" "http://localhost:8080/rest/node/to/create"
 
Request Body:
 
PREFIX dc: <http://purl.org/dc/elements/1.1/>
INSERT {   
  <> dc:title "some-resource-title" .
}
WHERE { }
 

Response:

Code Block
Status: 201 Created
 
Headers:
Location: http://localhost:8080/rest/node/to/create

 

Status:

Status
subtletrue
colourGreen
title201
 Created

Status
subtletrue
colourRed
title409
Conflict (resource is locked)

 

...

Status
colourBlue
titlePOST
  Create a new resource with binary content

Note

If the binary content is RDF or a SPARQL-Update query, see Binary Content for an alternative way to create content

Query Parameters:

Status
subtletrue
titlechecksum
 Checksum of the binary content (in the form urn:sha1:<sha-hash>). If the checksum doesn't match, an error will be returned.

 

Header Parameters:

Status
subtletrue
titleContent-DISPOSITION
 The filename provided in the content disposition header will be stored in a premis:hasOriginalName property.

Lock-Token (Optional) a Lock-Token for any locks previously created on resources updated by this operation

 

Example (1):

Code Block
curl -X POST --upload-file picture.jpg "http://localhost:8080/rest/binary/resource/to/create"

Response:

Code Block
Status: 201 Created
 
Headers:
Location: http://localhost:8080/rest/binary/resource/to/create/fcr:content

Example (2):

Code Block
curl -X POST --data-binary "@picture.jpg" "http://localhost:8080/rest/binary/resource/to/create?checksum=urn:sha1:cb1a576f22e8e3e110611b616e3e2f5ce9bdb941"

Response:

Code Block
Status: 201 Created
 
Headers:
Location: http://localhost:8080/rest/binary/resource/to/create/fcr:content

Example (3):

Code Block
curl -X POST --data-binary "@picture.jpg" "http://localhost:8080/rest/binary/resource/to/create?checksum=urn:sha1:checksumdoesntmatch"

Response:

Code Block
Status: 409 Conflict
 
Error:
Checksum Mismatch of cb1a576f22e8e3e110611b616e3e2f5ce9bdb941 and urn:sha1:checksumdoesntmatch
Note

By convention, binary content is accessed using the REST endpoint path/to/resource/fcr:content.

Status:

Status
subtletrue
colourGreen
title201
 Created

Status
subtletrue
colourRed
title409
 Conflict (checksum mismatch)

Status
subtletrue
colourRed
title409
Conflict (resource is locked)

 

...

 

Status
colourYellow
titlePUT
 Modify the triples associated with the resource

Replace the existing triples for a resource with the triples provided in the request body.

Note

Some resource properties are repository managed and cannot be removed or modified. Any attempt to do so may result in a 4xx error.

Note

RDF will be interpreted using the current resource as the base URI (e.g. <> will be expanded to the current URI)

 

Request Headers:

Status
subtletrue
titleContent-Type
  text/turtle, text/rdf+n3, application/n3, text/n3, application/rdf+xml, application/json+rdf, application/n-triples, text/html

Status
subtletrue
titleIF-Match
Status
subtletrue
titleIf-UNModified-Since

Lock-Token (Optional) a Lock-Token for any locks previously created on resources updated by this operation

Query Parameters:

Status
subtletrue
titlechecksum
 Checksum of the binary content (in the form urn:sha1:<sha-hash>). If the checksum doesn't match, an error will be returned.


 

Example:

Code Block
curl -X PUT -H "Content-Type: text/turtle" --data-binary "@new-triples.rdf" "http://localhost:8080/rest/node/to/update"
 
Request Body:
 
PREFIX dc: <http://purl.org/dc/elements/1.1/>
<> dc:title "some-resource-title" .
 

Response:

Code Block
Status: 204 No Content

 

Status:

Status
subtletrue
colourGreen
title204
 No Content

Status
subtletrue
colourRed
title409
Conflict (resource is locked)

Status
subtletrue
colourRed
title412
 Precondition Failed

 

...

 

Status
colourGreen
titlePATCH
 with SPARQL-Update

Request Headers:

Status
subtletrue
titleIF-Match
Status
subtletrue
titleIf-UNModified-Since

Lock-Token (Optional) a Lock-Token for any locks previously created on resources updated by this operatio

Example (1):

Code Block
curl -X PATCH -H "Content-Type: application/sparql-update" --data-binary "@body.rdf" "http://localhost:8080/rest/node/to/update"
 
Request Body:
 
PREFIX dc: <http://purl.org/dc/elements/1.1/>
INSERT {   
  <> dc:title "some-resource-title" .
}
WHERE { }
 

Response:

Code Block
Status: 204 No Content

Example (2): Updating multiple objects with a single SPARQL Update

Code Block
curl -X PATCH -H "Content-Type: application/sparql-update" --data-binary "@body.rdf" "http://localhost:8080/rest/node/to/update"
 
Request Body:
 
PREFIX dc: <http://purl.org/dc/elements/1.1/>
INSERT {   
  <> dc:title "some-resource-title" .
  <http://localhost:8080/rest/another/node/to/update> dc:title "some-other-title" .
}
WHERE { } 

Response:

Code Block
Status: 204 No Content

 

Status:

Status
subtletrue
colourGreen
title204
 No Content

Status
subtletrue
colourRed
title409
Conflict (resource is locked)

Status
subtletrue
colourRed
title412
 Precondition Failed

 

...

 

Status
colourRed
titleDELETE
Delete a resource

Request Headers:

Lock-Token (Optional) a Lock-Token for any locks previously created on resources updated by this operation

Example:

Code Block
curl -X DELETE "http://localhost:8080/rest/node/to/delete"

Response:

Code Block
Status: 204 No Content

 

Status:

Status
subtletrue
colourGreen
title204
 No Content

 

...

 

Status
subtletrue
colourRed
titleMOVE
 Move a resource (and its subtree) to a new location

Request Headers:

Lock-Token (Optional) a Lock-Token for any locks previously created on resources updated by this operation

Example (1):

Code Block
curl -X MOVE -H "Destination: http://localhost:8080/rest/new/path/to/node" "http://localhost:8080/rest/path/to/node"

Response:

Code Block
Status: 201 Created
 
Headers:
Location: http://localhost:8080/rest/new/path/to/node

 

Example (2):

Code Block
curl -X MOVE -H "Destination: http://duraspace.org/some/path" "http://localhost:8080/rest/path/to/node"

Response:

Code Block
Status: 502 Bad Gateway

Status:

Status
subtletrue
colourGreen
title201
 Created

Status
subtletrue
colourRed
title409
 Source path doesn't exists

Status
subtletrue
colourRed
title409
Conflict (resource is locked)

Status
subtletrue
colourRed
title412
 Destination path already exists

Status
subtletrue
colourRed
title502
 Destination URI isn't a valid resource path

 

...

 

Status
subtletrue
colourBlue
titleCOPY
 Copy a resource (and its subtree) to a new location

Example:

Code Block
curl -X COPY -H "Destination: http://localhost:8080/rest/new/path/to/node" "http://localhost:8080/rest/path/to/node"

...

 

Note

The slug you provide does not guarantee the location of the created node. Clients must check the Location header for the path to the created resource. For full control over the generated path, see XXX.

 

Example (1): Create a new child node

Code Block
curl -X POST "http://localhost:8080/rest/"

Response:

Code Block
Status: 201 Created
 
Headers:
Location: http://localhost:8080/rest/some/path/to/a/new/resource

Example (2): Create a new child datastream

Code Block
curl -X POST "http://localhost:8080/rest/?mixin=fedora:datastream" # Create a fedora:datastream

Example (3): Create a new node with RDF properties

Code Block
curl -X POST -H "Content-Type: text/turtle" --data-binary "@body.rdf" "http://localhost:8080/rest/"
 
Request Body:
PREFIX dc: <http://purl.org/dc/elements/1.1/>
<> dc:title "some-resource-title" 

Response:

Code Block
Status: 201 Created
 
Headers:
Location: http://localhost:8080/rest/new/node/uripath/to/node

 

Status:

Status
subtletrue
colourGreen
title201
 Created

Status
subtletrue
colourRed
title404
Not Found (resource does not exist – use PUT to specify a new resource name)
409
 Source path doesn't exists

Status
subtletrue
colourRed
title409
Conflict (resource is locked)

Status
subtletrue
colourRed
title412
 Destination path already exists

Status
subtletrue
colourRed
title502
 Destination URI isn't a valid resource path