Magrathea::API::Emergency - Access to the Magrathea 999 Interface


    use Magrathea::API;
    my $mt = new Magrathea::API($username, $password);
    my $emerg = $mt->emergency_info($phone_number);
    # Get the status, print it and check it
    my $status = $emerg->status;
    say "Status is: $status" if $status != 0;
    # Print the thoroughfare, update it and print it again
    say "Thoroughfare is currently: ", $emerg->thoroughfare;
    $emerg->thoroughfare("He is a justice of the peace and in accommodation.");
    say "Thoroughfare is now ", $emerg->thoroughfare;
    # prints: He is a J.P. & in Accom.
    # Update the changes


This module represents the Magrathea 999 API Appendix.

It should not be constructed by user code; it is only avalible through the main Magrathea::API code as follows:

    my $mt = new Magrathea::API($username, $password);
    my $emerg = $mt->emergency_info($phone_number, $is_ported);



This is used the first time a number is put onto the database and then only if the owner changes. It needs to be followed by an "update" after entering all the data.


This returns the number currently being worked on as a Phone::Number.


This is a boolean which can be tested to find out if the number already exists on the Magrathea database. It is set during the call to "emergency_info" in Magrathea::API and updated after a successful call to "create".


This returns all the fields in a hash or as a pointer to a hash depending on list or scalar context. The fields are as documented for methods below.


This returns a single value for status. The valuse returned can be used as a string and returns the message or as a number which returns the status code. The possible statuses are curently as below but they are returned from Magrathea so the 999 Appendix should be treated as authoritive.

0 Accepted
1 Info received
2 Info awaiting further validation
3 Info submitted
6 Submitted – Awaiting manual processing
8 Rejected
9 No record found










The above methods will get or set a field in the 999 record.

Abbreviations are substituted and they are then checked for maximum length. These routines will croak if an invalid length (or invalid postcode) is passed

To get the data, simply call the method, to change the data, pass it as a parameter.

Nothing is sent to Magrathea until "update" is called.


This is a boolean value showing whether or not the number has been ported in from another provider. It will always evaluate to false though unless set by this method as there is no way to store the information on the Magrathea database.

        $emerge->ported(true);      # Assuming true is set to 1
        my $ported = $emerg->ported;


This will take the current data and send it to Magrathea. The possible valid responses are Information Valid (0 in numeric context) or Parsed OK. Check later for status. (1 in numeric context).

If Magrathea's validation fails, the update will croak.


Cliff Stanford, <>


Please open any issues with this code on the Github Issues Page.

Copyright (C) 2012 - 2018 by Cliff Stanford

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.1 or, at your option, any later version of Perl 5 you may have available.