Skip to content

API Walkthroughs 4.1 Police to Court move

Martyn Whitwell edited this page Jul 30, 2020 · 2 revisions

Moves API Walkthrough

4. Police station to Court moves

4.1 Move for a known person with a PNC from a Police station to a Court 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 Police user via the frontend. A new profile 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' \
      --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: d62ce9ad-f2f0-4ecb-b031-cdf0b0ce4e62' \
      --data '{ "data": { "type": "profiles" } }'
      
    
    # create move request (Guildford Custody Suite to Huddersfield Youth Court) 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: 77f1cf68-4b37-48d6-8337-5c4e64c102bf' \
      --data '{
      "data": {
        "type": "moves",
        "attributes": {
          "date": "2020-07-24",
          "time_due": "2020-07-24T09:00:00+01:00",
          "status": "requested",
          "additional_information": "example Police to Court transfer: Guildford Custody Suite to Huddersfield Youth Court",
          "move_type": "court_appearance"
        },
        "relationships": {
          "profile": {
            "data": {
              "type": "profiles",
              "id": "d93c8000-f640-495a-958f-c3339b1ee5ac"
            }
          },
          "from_location": {
            "data": {
              "type": "locations",
              "id": "8fadb516-f10a-45b1-91b7-a256196829f9"
            }
          },
          "to_location": {
            "data": {
              "type": "locations",
              "id": "00034e29-9ef8-4802-a2f5-09342bf9f174"
            }
          }
        }
      }
    }'
  2. Suppliers can retrieve a list of requested moves for specific dates by calling the get moves endpoint with appropriate filters

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

    This will return the following JSON:

    {
      "data": [
        {
          "id": "84d08b83-6797-4898-b751-0900696ab0f1",
          "type": "moves",
          "attributes": {
            "additional_information": "example Police to Court transfer: Guildford Custody Suite to Huddersfield Youth Court",
            "cancellation_reason": null,
            "cancellation_reason_comment": null,
            "created_at": "2020-07-23T16:51:41+01:00",
            "date": "2020-07-24",
            "date_from": null,
            "date_to": null,
            "move_agreed": null,
            "move_agreed_by": null,
            "move_type": "court_appearance",
            "reference": "WYF1948A",
            "rejection_reason": null,
            "status": "requested",
            "time_due": "2020-07-24T09:00:00+01:00",
            "updated_at": "2020-07-23T16:51:41+01:00"
          },
          "relationships": {
            "profile": {
              "data": {
                "id": "d93c8000-f640-495a-958f-c3339b1ee5ac",
                "type": "profiles"
              }
            },
            "from_location": {
              "data": {
                "id": "8fadb516-f10a-45b1-91b7-a256196829f9",
                "type": "locations"
              }
            },
            "to_location": {
              "data": {
                "id": "00034e29-9ef8-4802-a2f5-09342bf9f174",
                "type": "locations"
              }
            },
            "prison_transfer_reason": {
              "data": null
            },
            "court_hearings": {
              "data": []
            },
            "allocation": {
              "data": null
            },
            "original_move": {
              "data": null
            }
          }
        }
      ],
      "included": [
        {
          "id": "d93c8000-f640-495a-958f-c3339b1ee5ac",
          "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": []
            },
            "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": "28087623-d310-4a1c-bf17-b992b74e30c2",
                  "type": "profiles"
                },
                {
                  "id": "f7769f3e-51e3-4b03-91b7-1eb4a79e98f6",
                  "type": "profiles"
                },
                {
                  "id": "d9a7e87e-b031-4da2-ae13-852aab708aac",
                  "type": "profiles"
                },
                {
                  "id": "da8e9326-a417-434a-b67e-66a4e15078d4",
                  "type": "profiles"
                },
                {
                  "id": "a631cf66-0ee8-4252-9ef0-408c27ba5c15",
                  "type": "profiles"
                },
                {
                  "id": "536068a5-a22e-4c5f-b078-f69c931cd9f1",
                  "type": "profiles"
                },
                {
                  "id": "98be8b71-eaf8-4563-bcd0-05af9a80f262",
                  "type": "profiles"
                },
                {
                  "id": "cee8cd95-656b-4967-a69e-0fa909b70727",
                  "type": "profiles"
                },
                {
                  "id": "28aa50ea-43be-4167-bd6f-6eb8aca74aa1",
                  "type": "profiles"
                },
                {
                  "id": "d93c8000-f640-495a-958f-c3339b1ee5ac",
                  "type": "profiles"
                }
              ]
            }
          }
        },
        {
          "id": "8fadb516-f10a-45b1-91b7-a256196829f9",
          "type": "locations",
          "attributes": {
            "key": "sry016",
            "title": "Guildford Custody Suite",
            "location_type": "police",
            "nomis_agency_id": "SRY016",
            "can_upload_documents": false,
            "disabled_at": null
          },
          "relationships": {
            "suppliers": {
              "data": [
                {
                  "id": "bccf4d77-984d-560c-9ffd-9badbb9157ca",
                  "type": "suppliers"
                }
              ]
            }
          }
        },
        {
          "id": "00034e29-9ef8-4802-a2f5-09342bf9f174",
          "type": "locations",
          "attributes": {
            "key": "hudryc",
            "title": "Huddersfield Youth Court",
            "location_type": "court",
            "nomis_agency_id": "HUDRYC",
            "can_upload_documents": false,
            "disabled_at": null
          },
          "relationships": {
            "suppliers": {
              "data": []
            }
          }
        }
      ],
      "links": {
        "self": "http://localhost:5001/api/moves?filter%5Bdate_from%5D=2020-07-24&filter%5Bdate_to%5D=2020-07-24&filter%5Bstatus%5D=requested&include=profile.person%2Cfrom_location%2Cto_location&page%5Bnumber%5D=1&page%5Bsize%5D=20",
        "first": "http://localhost:5001/api/moves?filter%5Bdate_from%5D=2020-07-24&filter%5Bdate_to%5D=2020-07-24&filter%5Bstatus%5D=requested&include=profile.person%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-07-24&filter%5Bdate_to%5D=2020-07-24&filter%5Bstatus%5D=requested&include=profile.person%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-07-24&filter%5Bdate_to%5D=2020-07-24&filter%5Bstatus%5D=requested&include=profile.person%2Cfrom_location%2Cto_location&page=1",
            "last": "/api/moves?filter%5Bdate_from%5D=2020-07-24&filter%5Bdate_to%5D=2020-07-24&filter%5Bstatus%5D=requested&include=profile.person%2Cfrom_location%2Cto_location&page=1"
          }
        }
      }
    }
  3. 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/84d08b83-6797-4898-b751-0900696ab0f1/accept \
      --header 'accept: application/vnd.api+json; version=2' \
      --header 'authorization: Bearer XXX' \
      --header 'content-type: application/json' \
      --header 'idempotency-key: a41e8360-55b2-42d1-b221-ab412cfc6990' \
      --data '{
      "data": {
        "type": "accepts",
        "attributes": {
          "timestamp": "2020-07-23T13:21:29.611Z"
        }
      }
    }'

    This will return a 204 No Content response.

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

  5. 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/84d08b83-6797-4898-b751-0900696ab0f1/start \
      --header 'accept: application/vnd.api+json; version=2' \
      --header 'authorization: Bearer XXX' \
      --header 'content-type: application/json' \
      --header 'idempotency-key: 2c920d50-ef81-4490-8448-1976b53ca477' \
      --data '{
      "data": {
        "type": "starts",
        "attributes": {
          "timestamp": "2020-07-23T13:22:25.083Z",
          "notes": "van on the way"
        }
      }
    }'

    This will return a 204 No Content response.

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

    curl --request POST \
      --url http://server/api/moves/84d08b83-6797-4898-b751-0900696ab0f1/complete \
      --header 'accept: application/vnd.api+json; version=2' \
      --header 'authorization: Bearer XXX' \
      --header 'content-type: application/json' \
      --header 'idempotency-key: 383541c6-e055-438c-8cba-075899c03d0f' \
      --data '{
      "data": {
        "type": "completes",
        "attributes": {
          "timestamp": "2020-07-23T13:23:28.826Z",
          "notes": "all is well"
        }
      }
    }'

    This will return a 204 No Content response.

Clone this wiki locally