Skip to content

API Walkthroughs 19.1 STC to Hospital move with PNC

Martyn Whitwell edited this page Aug 7, 2020 · 1 revision

Moves API Walkthrough

19. Secure Training Centre (STC) to Hospital moves

19.1 Move for a known person from an STC to a Hospital with a specific move date

  1. [FRONTEND] The initial move record is created in a requested state with a specific move date by a PECS STC user via the frontend. A new profile with an uploaded document is assigned to the move.

    It is not expected that suppliers would create the initial record. For the purposes of testing however, frontend requests can be simulated with the following calls:

    # find person by police national computer (PNC) number
    curl --request GET \
      --url 'http://server/api/people?filter%5Bpolice_national_computer%5D=14%2F120018R&include=profiles' \
      --header 'accept: application/vnd.api+json; version=2' \
      --header 'authorization: Bearer XXX'
    
    # create a new profile synchronised with Nomis alerts
    curl --request POST \
      --url http://server/api/people/747f3914-620a-441a-847f-472c79def26c/profiles \
      --header 'accept: application/vnd.api+json; version=2' \
      --header 'authorization: Bearer XXX' \
      --header 'content-type: application/json' \
      --header 'idempotency-key: e6101c76-66ba-4f56-8b68-16872c9f0819' \
      --data '{ "data": { "type": "profiles" } }'
      
    # upload a document
    curl --request POST \
      --url http://server/api/documents \
      --header 'accept: application/vnd.api+json; version=2' \
      --header 'authorization: Bearer XXX' \
      --header 'content-type: multipart/form-data; boundary=---011000010111000001101001' \
      --header 'idempotency-key: 4b1af8a7-bb46-47d3-923e-119ba7989f02' \
      --form 'data[attributes][file]=@path/to/the/file/hello_world.txt'
      
    # attach the uploaded document to the profile
    curl --request PATCH \
      --url http://server/api/people/747f3914-620a-441a-847f-472c79def26c/profiles/0955865a-662e-49b2-a16b-7b5e615ff2f5 \
      --header 'accept: application/vnd.api+json; version=2' \
      --header 'authorization: Bearer XXX' \
      --header 'content-type: application/json' \
      --header 'idempotency-key: 72179d72-4ca5-455f-b8fe-a10fb0d13b5d' \
      --data '{
      "data": {
        "id": "0955865a-662e-49b2-a16b-7b5e615ff2f5",
        "type": "profiles",
        "relationships": {
          "documents": {
            "data": [
              {
                "type": "documents",
                "id": "20702d63-cc2e-48f2-a6f3-fc6ee08f7b8e"
              }
            ]
          }
        }
      }
    }'
    
    # create move request (Oakhill STC to St Marys Hospital) with a specific move date, using the new profile
    curl --request POST \
      --url http://server/api/moves \
      --header 'accept: application/vnd.api+json; version=2' \
      --header 'authorization: Bearer XXX' \
      --header 'content-type: application/json' \
      --header 'idempotency-key: 74e800b4-6e3e-4ebc-9925-cfc1e25d0f46' \
      --data '{
      "data": {
        "type": "moves",
        "attributes": {
          "date": "2020-08-09",
          "status": "requested",
          "additional_information": "example STC to Hospital move: Oakhill to St Marys Hospital",
          "move_type": "hospital"
        },
        "relationships": {
          "profile": {
            "data": {
              "type": "profiles",
              "id": "0955865a-662e-49b2-a16b-7b5e615ff2f5"
            }
          },
          "from_location": {
            "data": {
              "type": "locations",
              "id": "dbf13bff-0e22-45af-b813-547673c2f456"
            }
          },
          "to_location": {
            "data": {
              "type": "locations",
              "id": "0a4f6c97-1757-452a-8c0b-9db422f6e7d7"
            }
          }
        }
      }
    }'
  2. Suppliers can retrieve a list of requested moves for specific dates by calling the get moves endpoint with appropriate filters

    Note that URLs to documents can be retrieved by including profile.documents as an ?include= parameter. The URL to a document is short-lived (5 minutes) so the document should be retrieved immediately, or the get request re-run later to fetch a new document URL.

    curl --request GET \
      --url 'http://server/api/moves?filter%5Bdate_from%5D=2020-08-09&filter%5Bdate_to%5D=2020-08-09&filter%5Bstatus%5D=requested&include=profile.person%2Cprofile.documents%2Cfrom_location%2Cto_location' \
      --header 'accept: application/vnd.api+json; version=2' \
      --header 'authorization: Bearer XXX'

    This will return the following JSON:

    {
      "data": [
        {
          "id": "6c863b71-6bb5-426e-a9dd-73f17273cb39",
          "type": "moves",
          "attributes": {
            "additional_information": "example STC to Hospital move: Oakhill to St Marys Hospital",
            "cancellation_reason": null,
            "cancellation_reason_comment": null,
            "created_at": "2020-08-07T09:55:36+01:00",
            "date": "2020-08-09",
            "date_from": null,
            "date_to": null,
            "move_agreed": null,
            "move_agreed_by": null,
            "move_type": "hospital",
            "reference": "CTH7421T",
            "rejection_reason": null,
            "status": "requested",
            "time_due": null,
            "updated_at": "2020-08-07T09:55:36+01:00"
          },
          "relationships": {
            "profile": {
              "data": {
                "id": "0955865a-662e-49b2-a16b-7b5e615ff2f5",
                "type": "profiles"
              }
            },
            "from_location": {
              "data": {
                "id": "dbf13bff-0e22-45af-b813-547673c2f456",
                "type": "locations"
              }
            },
            "to_location": {
              "data": {
                "id": "0a4f6c97-1757-452a-8c0b-9db422f6e7d7",
                "type": "locations"
              }
            },
            "prison_transfer_reason": {
              "data": null
            },
            "court_hearings": {
              "data": []
            },
            "allocation": {
              "data": null
            },
            "original_move": {
              "data": null
            }
          }
        }
      ],
      "included": [
        {
          "id": "0955865a-662e-49b2-a16b-7b5e615ff2f5",
          "type": "profiles",
          "attributes": {
            "assessment_answers": [
              {
                "title": "Any other risks",
                "comments": "lAzCdJPxAuYiYJlAzCdJPxAuYiYJ",
                "created_at": "2014-10-17",
                "expires_at": "2015-11-04",
                "assessment_question_id": "4e37ac1a-a461-45a8-bca9-f0e994d3105e",
                "category": "risk",
                "key": "other_risks",
                "nomis_alert_type": "P",
                "nomis_alert_code": "P0",
                "nomis_alert_type_description": "MAPPP Case",
                "nomis_alert_description": "MAPPA Nominal",
                "imported_from_nomis": true
              },
              {
                "title": "Violent",
                "comments": null,
                "created_at": "2015-02-22",
                "expires_at": null,
                "assessment_question_id": "af8cfc67-757c-4019-9d5e-618017de1617",
                "category": "risk",
                "key": "violent",
                "nomis_alert_type": "R",
                "nomis_alert_code": "ROM",
                "nomis_alert_type_description": "Risk",
                "nomis_alert_description": "OASys Serious Harm-Medium",
                "imported_from_nomis": true
              },
              {
                "title": "Violent",
                "comments": "HRErJMfhUuLHisGPkEhGRpvHSvjfHHRErJMfhUuLHisGPkEhGRpvHSvjfH",
                "created_at": "2017-02-03",
                "expires_at": null,
                "assessment_question_id": "af8cfc67-757c-4019-9d5e-618017de1617",
                "category": "risk",
                "key": "violent",
                "nomis_alert_type": "P",
                "nomis_alert_code": "PC2",
                "nomis_alert_type_description": "MAPPP Case",
                "nomis_alert_description": "MAPPA Cat 2",
                "imported_from_nomis": true
              },
              {
                "title": "Health issue",
                "comments": null,
                "created_at": "2014-07-28",
                "expires_at": null,
                "assessment_question_id": "8872ad2e-b1b6-44c1-a937-b7540e633355",
                "category": "health",
                "key": "health_issue",
                "nomis_alert_type": "DISAB",
                "nomis_alert_code": "ND",
                "nomis_alert_type_description": "Unknown",
                "nomis_alert_description": "No Disability",
                "imported_from_nomis": true
              },
              {
                "title": "Health issue",
                "comments": null,
                "created_at": "2014-07-31",
                "expires_at": null,
                "assessment_question_id": "8872ad2e-b1b6-44c1-a937-b7540e633355",
                "category": "health",
                "key": "health_issue",
                "nomis_alert_type": "DISAB",
                "nomis_alert_code": "ND",
                "nomis_alert_type_description": "Unknown",
                "nomis_alert_description": "No Disability",
                "imported_from_nomis": true
              },
              {
                "title": "Health issue",
                "comments": null,
                "created_at": "2014-10-16",
                "expires_at": null,
                "assessment_question_id": "8872ad2e-b1b6-44c1-a937-b7540e633355",
                "category": "health",
                "key": "health_issue",
                "nomis_alert_type": "DISAB",
                "nomis_alert_code": "ND",
                "nomis_alert_type_description": "Unknown",
                "nomis_alert_description": "No Disability",
                "imported_from_nomis": true
              }
            ]
          },
          "relationships": {
            "person": {
              "data": {
                "id": "747f3914-620a-441a-847f-472c79def26c",
                "type": "people"
              }
            },
            "documents": {
              "data": [
                {
                  "id": "20702d63-cc2e-48f2-a6f3-fc6ee08f7b8e",
                  "type": "documents"
                }
              ]
            },
            "person_escort_record": {
              "data": null
            }
          }
        },
        {
          "id": "747f3914-620a-441a-847f-472c79def26c",
          "type": "people",
          "attributes": {
            "first_names": "DOMSANIGH",
            "last_name": "CASEDY",
            "date_of_birth": "1995-11-17",
            "gender_additional_information": null,
            "prison_number": "G8133UA",
            "criminal_records_office": "351774/14D",
            "police_national_computer": "14/120018R"
          },
          "relationships": {
            "ethnicity": {
              "data": {
                "id": "a4f988ba-5ebc-4b24-9dfe-b7fa0c23c30e",
                "type": "ethnicities"
              }
            },
            "gender": {
              "data": {
                "id": "ffac6763-26d6-4425-8005-6e5d052aed88",
                "type": "genders"
              }
            },
            "profiles": {
              "data": [
                {
                  "id": "325a81c9-e8d5-4439-99c0-5978e22b147f",
                  "type": "profiles"
                },
                {
                  "id": "0955865a-662e-49b2-a16b-7b5e615ff2f5",
                  "type": "profiles"
                }
              ]
            }
          }
        },
        {
          "id": "20702d63-cc2e-48f2-a6f3-fc6ee08f7b8e",
          "type": "documents",
          "attributes": {
            "url": "http://localhost:5001/rails/active_storage/disk/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdDRG9JYTJWNVNTSWhialU1Tm1sck5uaDFaMmRqYW5CME9IQjZkSEo1Y3pBeWJIcGtaUVk2QmtWVU9oQmthWE53YjNOcGRHbHZia2tpVFdGMGRHRmphRzFsYm5RN0lHWnBiR1Z1WVcxbFBTSm9aV3hzYjE5M2IzSnNaQzUwZUhRaU95Qm1hV3hsYm1GdFpTbzlWVlJHTFRnbkoyaGxiR3h2WDNkdmNteGtMblI0ZEFZN0JsUTZFV052Ym5SbGJuUmZkSGx3WlVraUQzUmxlSFF2Y0d4aGFXNEdPd1pVIiwiZXhwIjoiMjAyMC0wOC0wN1QwOTowMToyMFoiLCJwdXIiOiJibG9iX2tleSJ9fQ==--9c769ae3247d3b5dc12f4582dd74e4466a01df7f/hello_world.txt?content_type=text%2Fplain&disposition=attachment%3B+filename%3D%22hello_world.txt%22%3B+filename%2A%3DUTF-8%27%27hello_world.txt",
            "filename": "hello_world.txt",
            "filesize": 13,
            "content_type": "text/plain"
          }
        },
        {
          "id": "dbf13bff-0e22-45af-b813-547673c2f456",
          "type": "locations",
          "attributes": {
            "key": "stc3",
            "title": "Oakhill Secure Training Centre",
            "location_type": "secure_training_centre",
            "nomis_agency_id": "STC3",
            "can_upload_documents": true,
            "disabled_at": null
          },
          "relationships": {
            "suppliers": {
              "data": [
                {
                  "id": "3ef88a47-6f1f-5b9b-b2fc-c0fe42cb0c92",
                  "type": "suppliers"
                }
              ]
            }
          }
        },
        {
          "id": "0a4f6c97-1757-452a-8c0b-9db422f6e7d7",
          "type": "locations",
          "attributes": {
            "key": "stmryl",
            "title": "St Mary's Hospital (London)",
            "location_type": "high_security_hospital",
            "nomis_agency_id": "STMRYL",
            "can_upload_documents": false,
            "disabled_at": null
          },
          "relationships": {
            "suppliers": {
              "data": []
            }
          }
        }
      ],
      "links": {
        "self": "http://localhost:5001/api/moves?filter%5Bdate_from%5D=2020-08-09&filter%5Bdate_to%5D=2020-08-09&filter%5Bstatus%5D=requested&include=profile.person%2Cprofile.documents%2Cfrom_location%2Cto_location&page%5Bnumber%5D=1&page%5Bsize%5D=20",
        "first": "http://localhost:5001/api/moves?filter%5Bdate_from%5D=2020-08-09&filter%5Bdate_to%5D=2020-08-09&filter%5Bstatus%5D=requested&include=profile.person%2Cprofile.documents%2Cfrom_location%2Cto_location&page%5Bnumber%5D=1&page%5Bsize%5D=20",
        "prev": null,
        "next": null,
        "last": "http://localhost:5001/api/moves?filter%5Bdate_from%5D=2020-08-09&filter%5Bdate_to%5D=2020-08-09&filter%5Bstatus%5D=requested&include=profile.person%2Cprofile.documents%2Cfrom_location%2Cto_location&page%5Bnumber%5D=1&page%5Bsize%5D=20"
      },
      "meta": {
        "pagination": {
          "per_page": 20,
          "total_pages": 1,
          "total_objects": 1,
          "links": {
            "first": "/api/moves?filter%5Bdate_from%5D=2020-08-09&filter%5Bdate_to%5D=2020-08-09&filter%5Bstatus%5D=requested&include=profile.person%2Cprofile.documents%2Cfrom_location%2Cto_location&page=1",
            "last": "/api/moves?filter%5Bdate_from%5D=2020-08-09&filter%5Bdate_to%5D=2020-08-09&filter%5Bstatus%5D=requested&include=profile.person%2Cprofile.documents%2Cfrom_location%2Cto_location&page=1"
          }
        }
      }
    }
  3. The document should be downloaded immediately - note that although no authoristation is required, the URL is short lived and will time out after 5 minutes

    curl --request GET --verbose \
      --url 'http://server/rails/active_storage/disk/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdDRG9JYTJWNVNTSWhialU1Tm1sck5uaDFaMmRqYW5CME9IQjZkSEo1Y3pBeWJIcGtaUVk2QmtWVU9oQmthWE53YjNOcGRHbHZia2tpVFdGMGRHRmphRzFsYm5RN0lHWnBiR1Z1WVcxbFBTSm9aV3hzYjE5M2IzSnNaQzUwZUhRaU95Qm1hV3hsYm1GdFpTbzlWVlJHTFRnbkoyaGxiR3h2WDNkdmNteGtMblI0ZEFZN0JsUTZFV052Ym5SbGJuUmZkSGx3WlVraUQzUmxlSFF2Y0d4aGFXNEdPd1pVIiwiZXhwIjoiMjAyMC0wOC0wN1QwOTowMToyMFoiLCJwdXIiOiJibG9iX2tleSJ9fQ==--9c769ae3247d3b5dc12f4582dd74e4466a01df7f/hello_world.txt?content_type=text%2Fplain&disposition=attachment%3B%2Bfilename%3D%22hello_world.txt%22%3B%2Bfilename*%3DUTF-8'\'''\''hello_world.txt'
  4. The new move can then be accepted changing its status from "requested" to "booked" by calling the accept endpoint:

    curl --request POST \
      --url http://server/api/moves/6c863b71-6bb5-426e-a9dd-73f17273cb39/accept \
      --header 'accept: application/vnd.api+json; version=2' \
      --header 'authorization: Bearer XXX' \
      --header 'content-type: application/json' \
      --header 'idempotency-key: 4dacc2d6-18f3-4ffd-bbe8-946f397b748c' \
      --data '{
      "data": {
        "type": "accepts",
        "attributes": {
          "timestamp": "2020-08-07T10:10:21.824Z"
        }
      }
    }'

    This will return a 204 No Content response.

  5. Journeys should be added to move: please see the separate Journey API walkthrough document.

  6. The move can be started, changing its status from "booked" to "in_transit" by calling the start endpoint:

    curl --request POST \
      --url http://server/api/moves/6c863b71-6bb5-426e-a9dd-73f17273cb39/start \
      --header 'accept: application/vnd.api+json; version=2' \
      --header 'authorization: Bearer XXX' \
      --header 'content-type: application/json' \
      --header 'idempotency-key: 343a77da-f847-4f10-9be8-c8919d95122f' \
      --data '{
      "data": {
        "type": "starts",
        "attributes": {
          "timestamp": "2020-08-07T10:10:34.495Z",
          "notes": "van on the way"
        }
      }
    }'

    This will return a 204 No Content response.

  7. Finally, the move can be completed, changing its status from "in_transit" to "completed" by posting to the complete event endpoint:

    curl --request POST \
      --url http://server/api/moves/6c863b71-6bb5-426e-a9dd-73f17273cb39/complete \
      --header 'accept: application/vnd.api+json; version=2' \
      --header 'authorization: Bearer XXX' \
      --header 'content-type: application/json' \
      --header 'idempotency-key: 428e35ea-e989-41d9-a69b-604c8eca9c32' \
      --data '{
      "data": {
        "type": "completes",
        "attributes": {
          "timestamp": "2020-08-07T10:10:47.095Z",
          "notes": "all is well"
        }
      }
    }'

    This will return a 204 No Content response.

  8. Optionally, the move record can be retrieved at any time to pull the latest details:

    curl --request GET \
      --url 'http://server/api/moves/6c863b71-6bb5-426e-a9dd-73f17273cb39?include=profile.person%2Cfrom_location%2Cto_location' \
      --header 'accept: application/vnd.api+json; version=2' \
      --header 'authorization: Bearer XXX'

    Which returns:

    {
      "data": {
        "id": "6c863b71-6bb5-426e-a9dd-73f17273cb39",
        "type": "moves",
        "attributes": {
          "additional_information": "example STC to Hospital move: Oakhill to St Marys Hospital",
          "cancellation_reason": null,
          "cancellation_reason_comment": null,
          "created_at": "2020-08-07T09:55:36+01:00",
          "date": "2020-08-09",
          "date_from": null,
          "date_to": null,
          "move_agreed": null,
          "move_agreed_by": null,
          "move_type": "hospital",
          "reference": "CTH7421T",
          "rejection_reason": null,
          "status": "completed",
          "time_due": null,
          "updated_at": "2020-08-07T09:56:39+01:00"
        },
        "relationships": {
          "profile": {
            "data": {
              "id": "0955865a-662e-49b2-a16b-7b5e615ff2f5",
              "type": "profiles"
            }
          },
          "from_location": {
            "data": {
              "id": "dbf13bff-0e22-45af-b813-547673c2f456",
              "type": "locations"
            }
          },
          "to_location": {
            "data": {
              "id": "0a4f6c97-1757-452a-8c0b-9db422f6e7d7",
              "type": "locations"
            }
          },
          "prison_transfer_reason": {
            "data": null
          },
          "court_hearings": {
            "data": []
          },
          "allocation": {
            "data": null
          },
          "original_move": {
            "data": null
          }
        }
      },
      "included": [
        {
          "id": "0955865a-662e-49b2-a16b-7b5e615ff2f5",
          "type": "profiles",
          "attributes": {
            "assessment_answers": [
              {
                "title": "Any other risks",
                "comments": "lAzCdJPxAuYiYJlAzCdJPxAuYiYJ",
                "created_at": "2014-10-17",
                "expires_at": "2015-11-04",
                "assessment_question_id": "4e37ac1a-a461-45a8-bca9-f0e994d3105e",
                "category": "risk",
                "key": "other_risks",
                "nomis_alert_type": "P",
                "nomis_alert_code": "P0",
                "nomis_alert_type_description": "MAPPP Case",
                "nomis_alert_description": "MAPPA Nominal",
                "imported_from_nomis": true
              },
              {
                "title": "Violent",
                "comments": null,
                "created_at": "2015-02-22",
                "expires_at": null,
                "assessment_question_id": "af8cfc67-757c-4019-9d5e-618017de1617",
                "category": "risk",
                "key": "violent",
                "nomis_alert_type": "R",
                "nomis_alert_code": "ROM",
                "nomis_alert_type_description": "Risk",
                "nomis_alert_description": "OASys Serious Harm-Medium",
                "imported_from_nomis": true
              },
              {
                "title": "Violent",
                "comments": "HRErJMfhUuLHisGPkEhGRpvHSvjfHHRErJMfhUuLHisGPkEhGRpvHSvjfH",
                "created_at": "2017-02-03",
                "expires_at": null,
                "assessment_question_id": "af8cfc67-757c-4019-9d5e-618017de1617",
                "category": "risk",
                "key": "violent",
                "nomis_alert_type": "P",
                "nomis_alert_code": "PC2",
                "nomis_alert_type_description": "MAPPP Case",
                "nomis_alert_description": "MAPPA Cat 2",
                "imported_from_nomis": true
              },
              {
                "title": "Health issue",
                "comments": null,
                "created_at": "2014-07-28",
                "expires_at": null,
                "assessment_question_id": "8872ad2e-b1b6-44c1-a937-b7540e633355",
                "category": "health",
                "key": "health_issue",
                "nomis_alert_type": "DISAB",
                "nomis_alert_code": "ND",
                "nomis_alert_type_description": "Unknown",
                "nomis_alert_description": "No Disability",
                "imported_from_nomis": true
              },
              {
                "title": "Health issue",
                "comments": null,
                "created_at": "2014-07-31",
                "expires_at": null,
                "assessment_question_id": "8872ad2e-b1b6-44c1-a937-b7540e633355",
                "category": "health",
                "key": "health_issue",
                "nomis_alert_type": "DISAB",
                "nomis_alert_code": "ND",
                "nomis_alert_type_description": "Unknown",
                "nomis_alert_description": "No Disability",
                "imported_from_nomis": true
              },
              {
                "title": "Health issue",
                "comments": null,
                "created_at": "2014-10-16",
                "expires_at": null,
                "assessment_question_id": "8872ad2e-b1b6-44c1-a937-b7540e633355",
                "category": "health",
                "key": "health_issue",
                "nomis_alert_type": "DISAB",
                "nomis_alert_code": "ND",
                "nomis_alert_type_description": "Unknown",
                "nomis_alert_description": "No Disability",
                "imported_from_nomis": true
              }
            ]
          },
          "relationships": {
            "person": {
              "data": {
                "id": "747f3914-620a-441a-847f-472c79def26c",
                "type": "people"
              }
            },
            "documents": {
              "data": [
                {
                  "id": "20702d63-cc2e-48f2-a6f3-fc6ee08f7b8e",
                  "type": "documents"
                }
              ]
            },
            "person_escort_record": {
              "data": null
            }
          }
        },
        {
          "id": "747f3914-620a-441a-847f-472c79def26c",
          "type": "people",
          "attributes": {
            "first_names": "DOMSANIGH",
            "last_name": "CASEDY",
            "date_of_birth": "1995-11-17",
            "gender_additional_information": null,
            "prison_number": "G8133UA",
            "criminal_records_office": "351774/14D",
            "police_national_computer": "14/120018R"
          },
          "relationships": {
            "ethnicity": {
              "data": {
                "id": "a4f988ba-5ebc-4b24-9dfe-b7fa0c23c30e",
                "type": "ethnicities"
              }
            },
            "gender": {
              "data": {
                "id": "ffac6763-26d6-4425-8005-6e5d052aed88",
                "type": "genders"
              }
            },
            "profiles": {
              "data": [
                {
                  "id": "325a81c9-e8d5-4439-99c0-5978e22b147f",
                  "type": "profiles"
                },
                {
                  "id": "0955865a-662e-49b2-a16b-7b5e615ff2f5",
                  "type": "profiles"
                }
              ]
            }
          }
        },
        {
          "id": "dbf13bff-0e22-45af-b813-547673c2f456",
          "type": "locations",
          "attributes": {
            "key": "stc3",
            "title": "Oakhill Secure Training Centre",
            "location_type": "secure_training_centre",
            "nomis_agency_id": "STC3",
            "can_upload_documents": true,
            "disabled_at": null
          },
          "relationships": {
            "suppliers": {
              "data": [
                {
                  "id": "3ef88a47-6f1f-5b9b-b2fc-c0fe42cb0c92",
                  "type": "suppliers"
                }
              ]
            }
          }
        },
        {
          "id": "0a4f6c97-1757-452a-8c0b-9db422f6e7d7",
          "type": "locations",
          "attributes": {
            "key": "stmryl",
            "title": "St Mary's Hospital (London)",
            "location_type": "high_security_hospital",
            "nomis_agency_id": "STMRYL",
            "can_upload_documents": false,
            "disabled_at": null
          },
          "relationships": {
            "suppliers": {
              "data": []
            }
          }
        }
      ]
    }
Clone this wiki locally