diff --git a/Providers/Resgrid.Providers.Number/Resgrid.Providers.Number.csproj b/Providers/Resgrid.Providers.Number/Resgrid.Providers.Number.csproj
index 84cd870a..0ca17597 100644
--- a/Providers/Resgrid.Providers.Number/Resgrid.Providers.Number.csproj
+++ b/Providers/Resgrid.Providers.Number/Resgrid.Providers.Number.csproj
@@ -13,6 +13,9 @@
+
+
diff --git a/Tests/Resgrid.Tests/Providers/PhoneNumberLibraryBindingTests.cs b/Tests/Resgrid.Tests/Providers/PhoneNumberLibraryBindingTests.cs
new file mode 100644
index 00000000..1cde2e53
--- /dev/null
+++ b/Tests/Resgrid.Tests/Providers/PhoneNumberLibraryBindingTests.cs
@@ -0,0 +1,27 @@
+using System.Linq;
+using FluentAssertions;
+using NUnit.Framework;
+
+namespace Resgrid.Tests.Providers
+{
+ ///
+ /// GlobalPhone is compiled against a specific PhoneNumbers assembly version. When the restore graph resolves an older
+ /// one, the web and worker hosts cannot load it: every parse throws, PhoneNumberProcesserProvider swallows the
+ /// exception, and every phone number (a valid +1 number included) is reported invalid — which blocks every profile
+ /// save that carries a phone number. NUnit loads test assemblies with a lenient resolver, so the parsing tests pass
+ /// either way; this compares the versions directly.
+ ///
+ [TestFixture]
+ public class PhoneNumberLibraryBindingTests
+ {
+ [Test]
+ public void Resolved_PhoneNumbers_assembly_satisfies_GlobalPhone_reference()
+ {
+ var required = typeof(GlobalPhone.GlobalPhone).Assembly.GetReferencedAssemblies()
+ .Single(a => a.Name == "PhoneNumbers").Version;
+ var resolved = typeof(PhoneNumbers.PhoneNumberUtil).Assembly.GetName().Version;
+
+ resolved.Should().BeGreaterThanOrEqualTo(required);
+ }
+ }
+}
diff --git a/Web/Resgrid.Web.Services/Resgrid.Web.Services.xml b/Web/Resgrid.Web.Services/Resgrid.Web.Services.xml
index ac6b6eb0..5224dd16 100644
--- a/Web/Resgrid.Web.Services/Resgrid.Web.Services.xml
+++ b/Web/Resgrid.Web.Services/Resgrid.Web.Services.xml
@@ -6179,52 +6179,6 @@
Is the user a group admin
-
-
- UserId (GUID/UUID) of the User to set. This field will be ignored if the input is used on a
- function that is setting status for the current user.
-
-
-
-
- The state/staffing level of the user to set for the user.
-
-
-
-
- Note for the staffing level
-
-
-
-
- The result object for a state/staffing level request.
-
-
-
-
- The UserId GUID/UUID for the user state/staffing level being return
-
-
-
-
- The full name of the user for the state/staffing level being returned
-
-
-
-
- The current staffing level (state) type for the user
-
-
-
-
- The timestamp of the last state/staffing level. This is converted UTC to the departments, or users, TimeZone.
-
-
-
-
- Staffing note for the User's staffing
-
-
Input data to add a staffing schedule in the Resgrid system
@@ -6330,6 +6284,52 @@
Note for this staffing schedule
+
+
+ UserId (GUID/UUID) of the User to set. This field will be ignored if the input is used on a
+ function that is setting status for the current user.
+
+
+
+
+ The state/staffing level of the user to set for the user.
+
+
+
+
+ Note for the staffing level
+
+
+
+
+ The result object for a state/staffing level request.
+
+
+
+
+ The UserId GUID/UUID for the user state/staffing level being return
+
+
+
+
+ The full name of the user for the state/staffing level being returned
+
+
+
+
+ The current staffing level (state) type for the user
+
+
+
+
+ The timestamp of the last state/staffing level. This is converted UTC to the departments, or users, TimeZone.
+
+
+
+
+ Staffing note for the User's staffing
+
+
A resrouce in the system this could be a user or unit
@@ -13192,379 +13192,209 @@
Identifier of the new npte
-
+
- The result of getting all personnel filters for the system
+ A GPS location for a point in time of a specificed person
-
+
- The Id value of the filter
+ PersonId of the person that the location is for
-
+
- The type of the filter
+ The timestamp of the location in UTC
-
+
- The filters name
+ GPS Latitude of the Person
-
+
- Result containing all the data required to populate the New Call form
+ GPS Longitude of the Person
-
+
- Response Data
+ GPS Latitude\Longitude Accuracy of the Person
-
+
- Result that contains all the options available to filter personnel against compatible Resgrid APIs
+ GPS Altitude of the Person
-
+
- Response Data
+ GPS Altitude Accuracy of the Person
-
+
- Result containing all the data required to populate the New Call form
+ GPS Speed of the Person
-
+
- Response Data
+ GPS Heading of the Person
-
+
- Information about a User
+ A unit location in the Resgrid system
-
+
- The UserId GUID/UUID for the user
+ Response Data
-
+
- DepartmentId of the deparment the user belongs to
+ The information about a specific unit's location
-
+
- Department specificed ID number for this user
+ Id of the Person
-
+
- The Users First Name
+ The Timestamp for the location in UTC
-
+
- The Users Last Name
+ GPS Latitude of the Person
-
+
- The Users Email Address
+ GPS Longitude of the Person
-
+
- The Users Mobile Telephone Number
+ GPS Latitude\Longitude Accuracy of the Person
-
+
- GroupId the user is assigned to (0 for no group)
+ GPS Altitude of the Person
-
+
- Name of the group the user is assigned to
+ GPS Altitude Accuracy of the Person
-
+
- Enumeration/List of roles the user currently holds
+ GPS Speed of the Person
-
+
- The current action/status type for the user
+ GPS Heading of the Person
-
+
- The current action/status string for the user
+ The result of getting the current staffing for a user
-
+
- The current action/status color hex string for the user
+ Response Data
-
+
- The timestamp of the last action. This is converted UTC to the departments, or users, TimeZone.
+ Information about a User staffing
-
+
- The current action/status destination id for the user
+ The UserId GUID/UUID for the user status being return
-
+
- The current action/status destination name for the user
+ DepartmentId of the deparment the user belongs to
-
+
- The current staffing level (state) type for the user
+ The current staffing type for the user
-
+
- The current staffing level (state) string for the user
+ The timestamp of the last staffing. This is converted UTC version of the timestamp.
-
+
- The current staffing level (state) color hex string for the user
+ The timestamp of the last staffing. This is converted UTC to the departments, or users, TimeZone.
-
+
- The timestamp of the last state/staffing level. This is converted UTC to the departments, or users, TimeZone.
+ Note for this staffing
-
+
- Users last known location
+ Saves (sets) and Personnel Staffing in the system, for a single user
-
+
- Sorting weight for the user
+ UnitId of the apparatus that the state is being set for
-
+
- User Defined Field values for this personnel record
+ The UnitStateType of the Unit
-
+
- A GPS location for a point in time of a specificed person
+ The timestamp of the status event in UTC
-
+
- PersonId of the person that the location is for
+ The timestamp of the status event in the local time of the device
-
+
- The timestamp of the location in UTC
+ User provided note for this event
-
+
- GPS Latitude of the Person
+ The event id used for queuing on mobile applications
-
+
- GPS Longitude of the Person
+ Depicts a result after saving a person status
-
+
- GPS Latitude\Longitude Accuracy of the Person
+ Response Data
-
+
- GPS Altitude of the Person
-
-
-
-
- GPS Altitude Accuracy of the Person
-
-
-
-
- GPS Speed of the Person
-
-
-
-
- GPS Heading of the Person
-
-
-
-
- A unit location in the Resgrid system
-
-
-
-
- Response Data
-
-
-
-
- The information about a specific unit's location
-
-
-
-
- Id of the Person
-
-
-
-
- The Timestamp for the location in UTC
-
-
-
-
- GPS Latitude of the Person
-
-
-
-
- GPS Longitude of the Person
-
-
-
-
- GPS Latitude\Longitude Accuracy of the Person
-
-
-
-
- GPS Altitude of the Person
-
-
-
-
- GPS Altitude Accuracy of the Person
-
-
-
-
- GPS Speed of the Person
-
-
-
-
- GPS Heading of the Person
-
-
-
-
- The result of getting the current staffing for a user
-
-
-
-
- Response Data
-
-
-
-
- Information about a User staffing
-
-
-
-
- The UserId GUID/UUID for the user status being return
-
-
-
-
- DepartmentId of the deparment the user belongs to
-
-
-
-
- The current staffing type for the user
-
-
-
-
- The timestamp of the last staffing. This is converted UTC version of the timestamp.
-
-
-
-
- The timestamp of the last staffing. This is converted UTC to the departments, or users, TimeZone.
-
-
-
-
- Note for this staffing
-
-
-
-
- Saves (sets) and Personnel Staffing in the system, for a single user
-
-
-
-
- UnitId of the apparatus that the state is being set for
-
-
-
-
- The UnitStateType of the Unit
-
-
-
-
- The timestamp of the status event in UTC
-
-
-
-
- The timestamp of the status event in the local time of the device
-
-
-
-
- User provided note for this event
-
-
-
-
- The event id used for queuing on mobile applications
-
-
-
-
- Depicts a result after saving a person status
-
-
-
-
- Response Data
-
-
-
-
- Saves (sets) and Personnel Status in the system, for a single user
+ Saves (sets) and Personnel Status in the system, for a single user
@@ -13865,113 +13695,283 @@
Response Data
-
+
- Result containing all the data required to populate the New Call form
+ The result of getting all personnel filters for the system
-
+
- Response Data
+ The Id value of the filter
-
+
- Details of a protocol
+ The type of the filter
-
+
- Protocol id
+ The filters name
-
+
- Department id
+ Result containing all the data required to populate the New Call form
-
+
- Name of the Protocol
+ Response Data
-
+
- Protocol code
+ Result that contains all the options available to filter personnel against compatible Resgrid APIs
-
+
- This this protocol disabled
+ Response Data
-
+
- Protocol description
+ Result containing all the data required to populate the New Call form
-
+
- Text of the protocol
+ Response Data
-
+
- UTC date and time when the Protocol was created
+ Information about a User
-
+
- UserId of the user who created the protocol
+ The UserId GUID/UUID for the user
-
+
- UTC timestamp of when the Protocol was updated
+ DepartmentId of the deparment the user belongs to
-
+
- Minimum triggering Weight of the Protocol
+ Department specificed ID number for this user
-
+
- UserId that last updated the Protocol
+ The Users First Name
-
+
- Triggers used to activate this Protocol
+ The Users Last Name
-
+
- Attachments for this Protocol
+ The Users Email Address
-
+
- Questions used to determine if this Protocol needs to be used or not
+ The Users Mobile Telephone Number
-
+
- State type
+ GroupId the user is assigned to (0 for no group)
-
+
- Result containing all the data required to populate the New Call form
+ Name of the group the user is assigned to
-
+
- Response Data
+ Enumeration/List of roles the user currently holds
-
- : 2 Responder, 3 Unit, 4 IncidentCommand, 5 Dispatch.
+
+
+ The current action/status type for the user
+
+
+
+
+ The current action/status string for the user
+
+
+
+
+ The current action/status color hex string for the user
+
+
+
+
+ The timestamp of the last action. This is converted UTC to the departments, or users, TimeZone.
+
+
+
+
+ The current action/status destination id for the user
+
+
+
+
+ The current action/status destination name for the user
+
+
+
+
+ The current staffing level (state) type for the user
+
+
+
+
+ The current staffing level (state) string for the user
+
+
+
+
+ The current staffing level (state) color hex string for the user
+
+
+
+
+ The timestamp of the last state/staffing level. This is converted UTC to the departments, or users, TimeZone.
+
+
+
+
+ Users last known location
+
+
+
+
+ Sorting weight for the user
+
+
+
+
+ User Defined Field values for this personnel record
+
+
+
+
+ Result containing all the data required to populate the New Call form
+
+
+
+
+ Response Data
+
+
+
+
+ Details of a protocol
+
+
+
+
+ Protocol id
+
+
+
+
+ Department id
+
+
+
+
+ Name of the Protocol
+
+
+
+
+ Protocol code
+
+
+
+
+ This this protocol disabled
+
+
+
+
+ Protocol description
+
+
+
+
+ Text of the protocol
+
+
+
+
+ UTC date and time when the Protocol was created
+
+
+
+
+ UserId of the user who created the protocol
+
+
+
+
+ UTC timestamp of when the Protocol was updated
+
+
+
+
+ Minimum triggering Weight of the Protocol
+
+
+
+
+ UserId that last updated the Protocol
+
+
+
+
+ Triggers used to activate this Protocol
+
+
+
+
+ Attachments for this Protocol
+
+
+
+
+ Questions used to determine if this Protocol needs to be used or not
+
+
+
+
+ State type
+
+
+
+
+ Result containing all the data required to populate the New Call form
+
+
+
+
+ Response Data
+
+
+
+ : 2 Responder, 3 Unit, 4 IncidentCommand, 5 Dispatch.
records.v1 / records.v1b / records.v1c; an unknown value is treated as the oldest.
@@ -15947,554 +15947,554 @@
Default constructor
-
+
- Result that contains all the options available to filter units against compatible Resgrid APIs
+ Depicts a result after saving a unit status
-
+
Response Data
-
+
- A unit in the Resgrid system
+ Object inputs for setting a users Status/Action. If this object is used in an operation that sets
+ a status for the current user the UserId value in this object will be ignored.
-
+
- Response Data
+ UnitId of the apparatus that the state is being set for
-
+
- The information about a specific unit
+ The UnitStateType of the Unit
-
+
- Id of the Unit
+ The Call/Station the unit is responding to
-
+
- The Id of the department the unit is under
+ Destination type for RespondingTo (Station = 1, Call = 2, POI = 3).
-
+
- Name of the Unit
+ The timestamp of the status event in UTC
-
+
- Department assigned type for the unit
+ The timestamp of the status event in the local time of the device
-
+
- Department assigned type id for the unit
+ User provided note for this event
-
+
- Custom Statuses Set Id
+ GPS Latitude of the Unit
-
+
- Station Id of the station housing the unit (0 means no station)
+ GPS Longitude of the Unit
-
+
- Name of the station the unit is under
+ GPS Latitude\Longitude Accuracy of the Unit
-
+
- Vehicle Identification Number for the unit
+ GPS Altitude of the Unit
-
+
- Plate Number for the Unit
+ GPS Altitude Accuracy of the Unit
-
+
- Is the unit 4-Wheel drive
+ GPS Speed of the Unit
-
+
- Does the unit require a special permit to drive
+ GPS Heading of the Unit
-
+
- Id number of the units current destionation (0 means no destination)
+ The event id used for queuing on mobile applications
-
+
- The current status/state of the Unit
+ The accountability roles filed for this event
-
+
- The Timestamp of the status
+ Role filled by a User on a Unit for an event
-
+
- The units current Latitude
+ Id of the locally stored event
-
+
- The units current Longitude
+ Local Event Id
-
+
- Current user provide status note
+ UserId of the user filling the role
-
+
- User Defined Field values for this unit
+ RoleId of the role being filled
-
+
- Unit role information for roles on a unit
+ The name of the Role
-
+
- Unit Role Id
+ Depicts a unit status in the Resgrid system.
-
+
- User Id of the user in the role (could be null)
+ Response Data
-
+
- Name of the Role
+ Depicts a unit's status
-
+
- Name of the user in the role (could be null)
+ Unit Id
-
+
- Multiple Unit infos Result
+ Units Name
-
+
- Response Data
+ The Type of the Unit
-
+
- Default constructor
+ Units current Status (State)
-
+
- The information about a specific unit
+ CSS for status (for display)
-
+
- Id of the Unit
+ CSS Style for status (for display)
-
+
- The Id of the department the unit is under
+ Timestamp of this Unit State
-
+
- Name of the Unit
+ Timestamp in Utc of this Unit State
-
+
- Department assigned type for the unit
+ Destination Id (Station or Call)
-
+
- Department assigned type id for the unit
+ Destination type (Station, Call, or POI).
-
+
- Custom Statuses Set Id
+ Name of the Desination (Call or Station)
-
+
- Station Id of the station housing the unit (0 means no station)
+ Destination address.
-
+
- Name of the station the unit is under
+ Localized display label for the destination type (e.g. "Station", "Call", "POI"). Not
+ suitable for programmatic branching; use as the
+ machine-readable discriminator instead.
-
+
- Vehicle Identification Number for the unit
+ Note for the State
-
+
- Plate Number for the Unit
+ Latitude
-
+
- Is the unit 4-Wheel drive
+ Longitude
-
+
- Does the unit require a special permit to drive
+ Name of the Group the Unit is in
-
+
- Id number of the units current destination (0 means no destination)
+ Id of the Group the Unit is in
-
+
- Name of the units current destination (0 means no destination)
+ Unit statuses (states)
-
+
- The current status/state of the Unit
+ Response Data
-
+
- The current status/state of the Unit as a name
+ Default constructor
-
+
- The current status/state of the Unit color, always a CSS hex colour ("#5CB85C").
+ Result that contains all the options available to filter units against compatible Resgrid APIs
-
+
- The base type the unit's current custom status maps to (see ),
- or null when the status has no base type. Clients need this to answer "is this unit
- available/responding/on scene" -- the status id itself is department-specific and the unit's
- TypeId is the unit type, not a status.
+ Response Data
-
+
- The Timestamp of the status, in the department's timezone.
+ A unit in the Resgrid system
-
+
- The Timestamp of the status in UTC/GMT. Serialised with an explicit "Z" -- without it clients
- parsed the value as local time and reported unit statuses hours stale.
+ Response Data
-
+
- The units current Latitude
+ The information about a specific unit
-
+
- The units current Longitude
+ Id of the Unit
-
+
- Current user provide status note
+ The Id of the department the unit is under
-
+
- Units Roles
+ Name of the Unit
-
+
- Multiple Units Result
+ Department assigned type for the unit
-
+
- Response Data
+ Department assigned type id for the unit
-
+
- Default constructor
+ Custom Statuses Set Id
-
+
- Depicts a result after saving a unit status
+ Station Id of the station housing the unit (0 means no station)
-
+
- Response Data
+ Name of the station the unit is under
-
+
- Object inputs for setting a users Status/Action. If this object is used in an operation that sets
- a status for the current user the UserId value in this object will be ignored.
+ Vehicle Identification Number for the unit
-
+
- UnitId of the apparatus that the state is being set for
+ Plate Number for the Unit
-
+
- The UnitStateType of the Unit
+ Is the unit 4-Wheel drive
-
+
- The Call/Station the unit is responding to
+ Does the unit require a special permit to drive
-
+
- Destination type for RespondingTo (Station = 1, Call = 2, POI = 3).
+ Id number of the units current destionation (0 means no destination)
-
+
- The timestamp of the status event in UTC
+ The current status/state of the Unit
-
+
- The timestamp of the status event in the local time of the device
+ The Timestamp of the status
-
+
- User provided note for this event
+ The units current Latitude
-
+
- GPS Latitude of the Unit
+ The units current Longitude
-
+
- GPS Longitude of the Unit
+ Current user provide status note
-
+
- GPS Latitude\Longitude Accuracy of the Unit
+ User Defined Field values for this unit
-
+
- GPS Altitude of the Unit
+ Unit role information for roles on a unit
-
+
- GPS Altitude Accuracy of the Unit
+ Unit Role Id
-
+
- GPS Speed of the Unit
+ User Id of the user in the role (could be null)
-
+
- GPS Heading of the Unit
+ Name of the Role
-
+
- The event id used for queuing on mobile applications
+ Name of the user in the role (could be null)
-
+
- The accountability roles filed for this event
+ Multiple Unit infos Result
-
+
- Role filled by a User on a Unit for an event
+ Response Data
-
+
- Id of the locally stored event
+ Default constructor
-
+
- Local Event Id
+ The information about a specific unit
-
+
- UserId of the user filling the role
+ Id of the Unit
-
+
- RoleId of the role being filled
+ The Id of the department the unit is under
-
+
- The name of the Role
+ Name of the Unit
-
+
- Depicts a unit status in the Resgrid system.
+ Department assigned type for the unit
-
+
- Response Data
+ Department assigned type id for the unit
-
+
- Depicts a unit's status
+ Custom Statuses Set Id
-
+
- Unit Id
+ Station Id of the station housing the unit (0 means no station)
-
+
- Units Name
+ Name of the station the unit is under
-
+
- The Type of the Unit
+ Vehicle Identification Number for the unit
-
+
- Units current Status (State)
+ Plate Number for the Unit
-
+
- CSS for status (for display)
+ Is the unit 4-Wheel drive
-
+
- CSS Style for status (for display)
+ Does the unit require a special permit to drive
-
+
- Timestamp of this Unit State
+ Id number of the units current destination (0 means no destination)
-
+
- Timestamp in Utc of this Unit State
+ Name of the units current destination (0 means no destination)
-
+
- Destination Id (Station or Call)
+ The current status/state of the Unit
-
+
- Destination type (Station, Call, or POI).
+ The current status/state of the Unit as a name
-
+
- Name of the Desination (Call or Station)
+ The current status/state of the Unit color, always a CSS hex colour ("#5CB85C").
-
+
- Destination address.
+ The base type the unit's current custom status maps to (see ),
+ or null when the status has no base type. Clients need this to answer "is this unit
+ available/responding/on scene" -- the status id itself is department-specific and the unit's
+ TypeId is the unit type, not a status.
-
+
- Localized display label for the destination type (e.g. "Station", "Call", "POI"). Not
- suitable for programmatic branching; use as the
- machine-readable discriminator instead.
+ The Timestamp of the status, in the department's timezone.
-
+
- Note for the State
+ The Timestamp of the status in UTC/GMT. Serialised with an explicit "Z" -- without it clients
+ parsed the value as local time and reported unit statuses hours stale.
-
+
- Latitude
+ The units current Latitude
-
+
- Longitude
+ The units current Longitude
-
+
- Name of the Group the Unit is in
+ Current user provide status note
-
+
- Id of the Group the Unit is in
+ Units Roles
-
+
- Unit statuses (states)
+ Multiple Units Result
-
+
Response Data
-
+
Default constructor