19.3. Relationships

19.3.1. Get Relationship by ID
19.3.2. Create relationship
19.3.3. Create a relationship with properties
19.3.4. Delete relationship
19.3.5. Get all properties on a relationship
19.3.6. Set all properties on a relationship
19.3.7. Get single property on a relationship
19.3.8. Set single property on a relationship
19.3.9. Get all relationships
19.3.10. Get incoming relationships
19.3.11. Get outgoing relationships
19.3.12. Get typed relationships
19.3.13. Get relationships on a node without relationships

Relationships are a first class citizen in the Neo4j REST API. They can be accessed either stand-alone or through the nodes they are attached to.

The general pattern to get relationships from a node is:

GET http://localhost:7474/db/data/node/123/relationships/{dir}/{-list|&|types}

Where dir is one of all, in, out and types is an ampersand-separated list of types. See the examples below for more information.

19.3.1. Get Relationship by ID

Figure 19.8. Final Graph


Example request

  • GET http://localhost:7474/db/data/relationship/15
  • Accept: application/json

Example response

  • 200: OK
  • Content-Type: application/json
{
  "start" : "http://localhost:7474/db/data/node/42",
  "data" : {
  },
  "self" : "http://localhost:7474/db/data/relationship/15",
  "property" : "http://localhost:7474/db/data/relationship/15/properties/{key}",
  "properties" : "http://localhost:7474/db/data/relationship/15/properties",
  "type" : "know",
  "extensions" : {
  },
  "end" : "http://localhost:7474/db/data/node/41"
}

19.3.2. Create relationship

Upon successful creation of a relationship, the new relationship is returned.

Figure 19.9. Final Graph


Example request

  • POST http://localhost:7474/db/data/node/87/relationships
  • Accept: application/json
  • Content-Type: application/json
{"to" : "http://localhost:7474/db/data/node/86", "type" : "LOVES"}

Example response

  • 201: Created
  • Content-Type: application/json
  • Location: http://localhost:7474/db/data/relationship/95
{
  "start" : "http://localhost:7474/db/data/node/87",
  "data" : {
  },
  "self" : "http://localhost:7474/db/data/relationship/95",
  "property" : "http://localhost:7474/db/data/relationship/95/properties/{key}",
  "properties" : "http://localhost:7474/db/data/relationship/95/properties",
  "type" : "LOVES",
  "extensions" : {
  },
  "end" : "http://localhost:7474/db/data/node/86"
}

19.3.3. Create a relationship with properties

Upon successful creation of a relationship, the new relationship is returned.

Figure 19.10. Starting Graph


Figure 19.11. Final Graph


Example request

  • POST http://localhost:7474/db/data/node/85/relationships
  • Accept: application/json
  • Content-Type: application/json
{"to" : "http://localhost:7474/db/data/node/84", "type" : "LOVES", "data" : {"foo" : "bar"}}

Example response

  • 201: Created
  • Content-Type: application/json
  • Location: http://localhost:7474/db/data/relationship/93
{
  "start" : "http://localhost:7474/db/data/node/85",
  "data" : {
    "foo" : "bar"
  },
  "self" : "http://localhost:7474/db/data/relationship/93",
  "property" : "http://localhost:7474/db/data/relationship/93/properties/{key}",
  "properties" : "http://localhost:7474/db/data/relationship/93/properties",
  "type" : "LOVES",
  "extensions" : {
  },
  "end" : "http://localhost:7474/db/data/node/84"
}

19.3.4. Delete relationship

Figure 19.12. Starting Graph


Figure 19.13. Final Graph


Example request

  • DELETE http://localhost:7474/db/data/relationship/20
  • Accept: application/json

Example response

  • 204: No Content

19.3.5. Get all properties on a relationship

Figure 19.14. Final Graph


Example request

  • GET http://localhost:7474/db/data/relationship/24/properties
  • Accept: application/json

Example response

  • 200: OK
  • Content-Type: application/json
{
  "since" : "1day",
  "cost" : "high"
}

19.3.6. Set all properties on a relationship

Figure 19.15. Starting Graph


Figure 19.16. Final Graph


Example request

  • PUT http://localhost:7474/db/data/relationship/23/properties
  • Accept: application/json
  • Content-Type: application/json
{
  "happy" : false
}

Example response

  • 204: No Content

19.3.7. Get single property on a relationship

Figure 19.17. Final Graph


Example request

  • GET http://localhost:7474/db/data/relationship/21/properties/cost
  • Accept: application/json

Example response

  • 200: OK
  • Content-Type: application/json
"high"

19.3.8. Set single property on a relationship

Figure 19.18. Starting Graph


Figure 19.19. Final Graph


Example request

  • PUT http://localhost:7474/db/data/relationship/22/properties/cost
  • Accept: application/json
  • Content-Type: application/json
"deadly"

Example response

  • 204: No Content

19.3.9. Get all relationships

Figure 19.20. Final Graph


Example request

  • GET http://localhost:7474/db/data/node/71/relationships/all
  • Accept: application/json

Example response

  • 200: OK
  • Content-Type: application/json
[ {
  "start" : "http://localhost:7474/db/data/node/71",
  "data" : {
  },
  "self" : "http://localhost:7474/db/data/relationship/31",
  "property" : "http://localhost:7474/db/data/relationship/31/properties/{key}",
  "properties" : "http://localhost:7474/db/data/relationship/31/properties",
  "type" : "LIKES",
  "extensions" : {
  },
  "end" : "http://localhost:7474/db/data/node/72"
}, {
  "start" : "http://localhost:7474/db/data/node/73",
  "data" : {
  },
  "self" : "http://localhost:7474/db/data/relationship/32",
  "property" : "http://localhost:7474/db/data/relationship/32/properties/{key}",
  "properties" : "http://localhost:7474/db/data/relationship/32/properties",
  "type" : "LIKES",
  "extensions" : {
  },
  "end" : "http://localhost:7474/db/data/node/71"
}, {
  "start" : "http://localhost:7474/db/data/node/71",
  "data" : {
  },
  "self" : "http://localhost:7474/db/data/relationship/33",
  "property" : "http://localhost:7474/db/data/relationship/33/properties/{key}",
  "properties" : "http://localhost:7474/db/data/relationship/33/properties",
  "type" : "HATES",
  "extensions" : {
  },
  "end" : "http://localhost:7474/db/data/node/74"
} ]

19.3.10. Get incoming relationships

Figure 19.21. Final Graph


Example request

  • GET http://localhost:7474/db/data/node/76/relationships/in
  • Accept: application/json

Example response

  • 200: OK
  • Content-Type: application/json
[ {
  "start" : "http://localhost:7474/db/data/node/78",
  "data" : {
  },
  "self" : "http://localhost:7474/db/data/relationship/35",
  "property" : "http://localhost:7474/db/data/relationship/35/properties/{key}",
  "properties" : "http://localhost:7474/db/data/relationship/35/properties",
  "type" : "LIKES",
  "extensions" : {
  },
  "end" : "http://localhost:7474/db/data/node/76"
} ]

19.3.11. Get outgoing relationships

Figure 19.22. Final Graph


Example request

  • GET http://localhost:7474/db/data/node/81/relationships/out
  • Accept: application/json

Example response

  • 200: OK
  • Content-Type: application/json
[ {
  "start" : "http://localhost:7474/db/data/node/81",
  "data" : {
  },
  "self" : "http://localhost:7474/db/data/relationship/37",
  "property" : "http://localhost:7474/db/data/relationship/37/properties/{key}",
  "properties" : "http://localhost:7474/db/data/relationship/37/properties",
  "type" : "LIKES",
  "extensions" : {
  },
  "end" : "http://localhost:7474/db/data/node/82"
}, {
  "start" : "http://localhost:7474/db/data/node/81",
  "data" : {
  },
  "self" : "http://localhost:7474/db/data/relationship/39",
  "property" : "http://localhost:7474/db/data/relationship/39/properties/{key}",
  "properties" : "http://localhost:7474/db/data/relationship/39/properties",
  "type" : "HATES",
  "extensions" : {
  },
  "end" : "http://localhost:7474/db/data/node/84"
} ]

19.3.12. Get typed relationships

<p/> Note that the "&" needs to be escaped for example when using cURL from the terminal.

Figure 19.23. Final Graph


Example request

  • GET http://localhost:7474/db/data/node/86/relationships/all/LIKES&HATES
  • Accept: application/json

Example response

  • 200: OK
  • Content-Type: application/json
[ {
  "start" : "http://localhost:7474/db/data/node/86",
  "data" : {
  },
  "self" : "http://localhost:7474/db/data/relationship/40",
  "property" : "http://localhost:7474/db/data/relationship/40/properties/{key}",
  "properties" : "http://localhost:7474/db/data/relationship/40/properties",
  "type" : "LIKES",
  "extensions" : {
  },
  "end" : "http://localhost:7474/db/data/node/87"
}, {
  "start" : "http://localhost:7474/db/data/node/88",
  "data" : {
  },
  "self" : "http://localhost:7474/db/data/relationship/41",
  "property" : "http://localhost:7474/db/data/relationship/41/properties/{key}",
  "properties" : "http://localhost:7474/db/data/relationship/41/properties",
  "type" : "LIKES",
  "extensions" : {
  },
  "end" : "http://localhost:7474/db/data/node/86"
}, {
  "start" : "http://localhost:7474/db/data/node/86",
  "data" : {
  },
  "self" : "http://localhost:7474/db/data/relationship/42",
  "property" : "http://localhost:7474/db/data/relationship/42/properties/{key}",
  "properties" : "http://localhost:7474/db/data/relationship/42/properties",
  "type" : "HATES",
  "extensions" : {
  },
  "end" : "http://localhost:7474/db/data/node/89"
} ]

19.3.13. Get relationships on a node without relationships

Figure 19.24. Final Graph


Example request

  • GET http://localhost:7474/db/data/node/105/relationships/all
  • Accept: application/json

Example response

  • 200: OK
  • Content-Type: application/json
[ ]