API Walkthroughs 19.1 STC to Hospital move with PNC - ministryofjustice/hmpps-book-secure-move-api GitHub Wiki

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": []
            }
          }
        }
      ]
    }