Movement Services | NAIT
Overview
NAIT (National Animal Identification and Tracing) is New Zealand’s livestock identification and tracing system for cattle and deer. The NAIT service implementation provides comprehensive support for animal registration, movement tracking, tag replacement, and death reporting across New Zealand farming properties.
| Property | Value |
|---|---|
| Service ID | 097300bb-790d-4452-85b8-de642b20a984 |
| Service Tag | NAIT |
| Countries | New Zealand |
| Property Types | Farm |
| Supported Species | Cattle, Deer |
| Property Identifier | NAIT Location Number |
| Credentials Required | Service Provider Username & Password |
Transaction Types & Capabilities
The NAIT service supports the following transaction types and operations:
| Transaction Type | Create | Update | Delete | Description |
|---|---|---|---|---|
| Movement (MoveOff) | ✓ | ✓ | ✓ | Animal movement OUT - sending animals from a property |
| Movement (MoveOn) | ✓ | ✓ | ✓ | Animal movement IN - receiving animals at a property |
| Register | ✓ | ✓ | ✓ | Initial animal registration with the NAIT system |
| Retag | ✓ | - | ✓ | Tag replacement for existing animals |
| Death | ✓ | ✓ | ✓ | Animal death reporting |
Field Keys Namespace Reference:
All field keys referenced in this document use the full namespace prefix NAIT.Domain.FieldName for clarity and consistency with the codebase.
Field Keys Explanation
Field keys are used to identify and access specific data fields within transactions. They are referenced using the namespace format: NAIT.Movement.Sending.Date, NAIT.Death.IsSlaughter, etc.
Field Key Categories
- Movement Fields - Identifiers for animal movement operations (sending and receiving locations, dates)
- Register Fields - Identifiers for animal registration (birthplace, production type, import/export)
- Retag Fields - Identifiers for tag replacement operations
- Death Fields - Identifiers for animal death reporting (slaughter status, disposal method)
Common Field Key Patterns
NAIT.Movement.Sending.Date- Date animals leave a propertyNAIT.Movement.Sending.Location- Sending NAIT location numberNAIT.Movement.Receiving.Location- Receiving NAIT location numberNAIT.Register.ProductionType- Production purpose (Beef, Dairy, Venison)NAIT.Death.IsSlaughter- Boolean: whether death is slaughter-relatedNAIT.Retag.Reason- Reason for tag replacement (TL=Tag Lost, TD=Tag Damaged, WR=Wrong Tag Registered)
Movement - MOV-OFF (Sending Animals)
Capability: Sending animals OUT from a property to another location
Transaction Fields
| Field Key | Type | Required | Description | Example |
|---|---|---|---|---|
NAIT.Movement.Sending.Location |
NAIT Number | Optional | Sending NAIT location number (defaults to property identifier) | 123456 |
NAIT.Movement.Receiving.Location |
NAIT Number | Yes | Receiving NAIT location number (destination) | 987654 |
NAIT.Movement.Sending.Date |
DateTime | Optional | Date animals sent (defaults to transaction date) | 2024-01-15T09:00:00+12:00 |
NAIT.Movement.PreviousDateSent |
DateTime | Update Only | Previous date sent (for updates) | 2024-01-14T09:00:00+12:00 |
NAIT.Movement.UpdatedDateSent |
DateTime | Update Only | Updated date sent (for updates) | 2024-01-15T10:00:00+12:00 |
NAIT.Movement.NaitTransactionIdentifier |
String | Update/Delete Only | NAIT transaction ID for tracking | txn-12345-abcde |
Animal Identifiers
Each animal in a MoveOff transaction must have:
- RFID - Electronic ID tag with header (e.g.,
826 0543210 00600) - Visual Tag - Visual identifier (e.g.,
NZ123456/001/24)
JSON Request Example - Create
{
"transactionType": "MOV-OFF",
"transactionDate": "2024-01-15T09:00:00+12:00",
"propertyIdentifier": "123456",
"speciesCode": "C",
"fields": {
"NAIT.Movement.Receiving.Location": "987654",
"NAIT.Movement.Sending.Date": "2024-01-15T09:00:00+12:00"
},
"animals": [
{
"rfid": "826 0543210 00600",
"visualTag": "NZ123456/001/24"
},
{
"rfid": "826 0543210 00601",
"visualTag": "NZ123456/003/24"
}
]
}
JSON Request Example - Update
{
"transactionType": "UPDATEMOV-OFF",
"transactionDate": "2024-01-15T10:30:00+12:00",
"propertyIdentifier": "123456",
"speciesCode": "C",
"fields": {
"NAIT.Movement.NaitTransactionIdentifier": "txn-12345-abcde",
"NAIT.Movement.PreviousDateSent": "2024-01-15T09:00:00+12:00",
"NAIT.Movement.UpdatedDateSent": "2024-01-15T10:30:00+12:00",
"NAIT.Movement.Receiving.Location": "987654"
},
"animals": [
{
"rfid": "826 0543210 00600",
"visualTag": "NZ123456/001/24"
}
]
}
Movement - MOV-ON (Receiving Animals)
Capability: Receiving animals INTO a property from another location
Transaction Fields
| Field Key | Type | Required | Description | Example |
|---|---|---|---|---|
NAIT.Movement.Sending.Location |
NAIT Number | Yes | Sending NAIT location number (origin) | 123456 |
NAIT.Movement.Receiving.Location |
NAIT Number | Optional | Receiving NAIT location number (defaults to property identifier) | 987654 |
NAIT.Movement.Receiving.Date |
DateTime | Optional | Date animals received (defaults to transaction date) | 2024-01-15T14:00:00+12:00 |
NAIT.Movement.PreviousDateReceived |
DateTime | Update Only | Previous date received (for updates) | 2024-01-15T13:00:00+12:00 |
NAIT.Movement.UpdatedDateReceived |
DateTime | Update Only | Updated date received (for updates) | 2024-01-15T14:30:00+12:00 |
NAIT.Movement.NaitTransactionIdentifier |
String | Update/Delete Only | NAIT transaction ID for tracking | txn-67890-fghij |
JSON Request Example - Create
{
"transactionType": "MOV-ON",
"transactionDate": "2024-01-15T14:00:00+12:00",
"propertyIdentifier": "987654",
"speciesCode": "D",
"fields": {
"NAIT.Movement.Sending.Location": "123456",
"NAIT.Movement.Receiving.Date": "2024-01-15T14:00:00+12:00"
},
"animals": [
{
"rfid": "826 0543210 00600",
"visualTag": "NZ123456/001/24"
},
{
"rfid": "826 0543210 00601",
"visualTag": "NZ123456/003/24"
}
]
}
Register REG - (Animal Registration)
Capability: Initial registration of animals into the NAIT system
Transaction Fields
| Field Key | Type | Required | Species | Description | Example |
|---|---|---|---|---|---|
NAIT.Register.BirthplaceLocation |
NAIT Number | Optional | Both | NAIT number of birthplace location | 111111 |
NAIT.Register.ProductionType |
Enumeration | Yes | Cattle | Cattle: Beef, Dairy | B or D |
NAIT.Register.ProductionType |
Enumeration | Yes | Deer | Deer: Venison, Breeding | V or BR |
NAIT.Register.Import.Origin |
Country Code | Optional | Both | Country of origin (ISO 3-letter code) | AUS, USA |
NAIT.Register.Import.Date |
DateTime | Optional | Both | Import date if animal imported | 2024-01-01 |
NAIT.Register.Export.DestinationCountry |
Country Code | Optional | Both | Export destination country | AUS |
NAIT.Register.Export.Date |
DateTime | Optional | Both | Export date | 2024-06-01 |
NAIT.Register.MissingDate |
DateTime | Optional | Both | Date animal went missing | 2024-03-15 |
NAIT.Register.FoundDate |
DateTime | Optional | Both | Date missing animal was found | 2024-03-20 |
Additional Animal Attributes
Beyond the transaction fields, each registered animal includes:
- Breed Code (e.g.,
RDfor Red Deer,HFfor Holstein Friesian) - Sex Code (e.g.,
mfor male,ffor female) - Birth Date - Date of birth
- Dam Official ID - Mother’s official identifier (optional)
- Sire Official ID - Father’s official identifier (optional)
JSON Request Example - Create (Cattle)
{
"transactionType": "REG",
"transactionDate": "2024-01-15T09:00:00+12:00",
"propertyIdentifier": "222222",
"speciesCode": "C",
"fields": {
"NAIT.Register.BirthplaceLocation": "111111",
"NAIT.Register.ProductionType": "D",
"NAIT.Register.Import.Date": "2024-01-01",
"NAIT.Register.Import.Origin": "AUS"
},
"animals": [
{
"rfid": "826 0543210 00600",
"visualTag": "NZ222222/001/24",
"birthDate": "2024-01-01T00:00:00",
"breedCode": "HF",
"sexCode": "f",
"damOfficialId": "826 0543210 D001",
"sireOfficialId": "826 0543210 S001"
}
]
}
JSON Request Example - Create (Deer)
{
"transactionDate": "2024-01-15T09:00:00+12:00",
"propertyIdentifier": "222222",
"speciesCode": "D",
"fields": {
"NAIT.Register.BirthplaceLocation": "111111",
"NAIT.Register.ProductionType": "V"
},
"animals": [
{
"rfid": "826 0543210 00600",
"visualTag": "NZ222222/001/24",
"birthDate": "2024-01-01T00:00:00",
"breedCode": "RD",
"sexCode": "m"
}
]
}
Retag RET (Tag Replacement)
Capability: Replace an existing RFID tag with a new one
Transaction Fields
| Field Key | Type | Required | Description | Valid Values | Example |
|---|---|---|---|---|---|
NAIT.Retag.Reason |
Enumeration | Yes | Reason for tag replacement | TL (Tag Lost), TD (Tag Damaged), WR (Wrong Tag Registered) |
TL |
NAIT.Retag.CurrentLocation |
NAIT Number | Optional | Current location of animal | NAIT location number | 222222 |
Animal Requirements
Each animal in a Retag transaction must have:
- RFID - Current electronic ID tag
- Visual Tag - Current visual identifier
- Replacement RFID - New tag to replace the current RFID
JSON Request Example - Create
{
"transactionType": "RET",
"transactionDate": "2024-02-01T10:00:00+12:00",
"propertyIdentifier": "222222",
"speciesCode": "D",
"fields": {
"NAIT.Retag.Reason": "TL"
},
"animals": [
{
"rfid": "826 0543210 00600",
"visualTag": "NZ222222/001/24",
"replacementRfid": "826 0543210 00602"
},
{
"rfid": "826 0543210 00601",
"visualTag": "NZ222222/002/24",
"replacementRfid": "826 0543210 00603"
}
]
}
Delete RET-DEL (Undo Replacement)
To delete/undo a Retag operation:
{
"transactionType": "RET-DEL",
"transactionDate": "2024-02-01T10:00:00+12:00",
"propertyIdentifier": "222222",
"speciesCode": "D",
"fields": {
"NAIT.Retag.Reason": "TL"
},
"animals": [
{
"rfid": "826 0543210 00600",
"visualTag": "NZ222222/001/24",
"replacementRfid": "826 0543210 00602"
},
{
"rfid": "826 0543210 00601",
"visualTag": "NZ222222/002/24",
"replacementRfid": "826 0543210 00603"
}
]
}
Death - DTH (Animal Death Reporting)
Capability: Report animal death, including slaughter records
Transaction Fields
| Field Key | Type | Required | Description | Valid Values | Example |
|---|---|---|---|---|---|
NAIT.Death.IsSlaughter |
Boolean | Optional | Whether death is slaughter-related | true, false |
true |
NAIT.Death.DisposalMethod |
Enumeration | Yes | Method of carcass disposal | A (Approved), B (Burial), C (Burning), O (Other), I (Incineration) |
A |
NAIT.Death.ExternalReference |
String | Optional | External reference identifier | Free text | SR-12345 |
NAIT.Death.AnimalType |
Enumeration | Optional | Animal type | C (Cattle), D (Deer) |
C |
NAIT.Death.KillDate |
DateTime | Optional | Date of killing/slaughter | ISO format | 2024-01-15T09:00:00 |
NAIT.Death.SentFromLocation |
NAIT Number | Optional | Location animal sent from (for slaughter) | NAIT number | 123456 |
NAIT.Death.SlaughterLocation |
NAIT Number | Optional | Location of slaughter | NAIT number | 999999 |
NAIT.Death.CarcaseDiseaseStatus |
String | Optional | Disease status of carcass | Free text | Healthy |
NAIT.Death.ExemptCategory |
String | Optional | Exemption category | Free text | N/A |
NAIT.Death.NAITNumberCurrentLocation |
NAIT Number | Optional | Current location NAIT number | NAIT number | 222222 |
JSON Request Example - Create
{
"transactionType": "DTH",
"transactionDate": "2024-03-10T09:00:00+12:00",
"propertyIdentifier": "222222",
"speciesCode": "C",
"fields": {
"NAIT.Death.IsSlaughter": "false",
"NAIT.Death.DisposalMethod": "B"
},
"animals": [
{
"rfid": "826 0543210 00600",
"visualTag": "NZ222222/001/24"
},
{
"rfid": "826 0543210 00601",
"visualTag": "NZ222222/002/24"
}
]
}
JSON Request Example - Create (Slaughter)
{
"transactionType": "DTH",
"transactionDate": "2024-03-10T09:00:00+12:00",
"propertyIdentifier": "222222",
"speciesCode": "C",
"fields": {
"NAIT.Death.IsSlaughter": "true",
"NAIT.Death.DisposalMethod": "A",
"NAIT.Death.KillDate": "2024-03-10T09:00:00+12:00",
"NAIT.Death.SlaughterLocation": "999999"
},
"animals": [
{
"rfid": "826 0543210 00600",
"visualTag": "NZ222222/001/24"
}
]
}
Delete - DTH-DEL (Remove Death Record)
To delete/remove a death record:
{
"transactionType": "DTH-DEL",
"transactionDate": "2024-03-10T09:00:00+12:00",
"propertyIdentifier": "222222",
"speciesCode": "C",
"fields": null,
"animals": [
{
"rfid": "826 0543210 00600",
"visualTag": "NZ222222/001/24"
}
]
}
Species Support
NAIT supports the following livestock species:
| Species Code | Name | Register Fields | Movement Support | Notes |
|---|---|---|---|---|
| C | Cattle | Production Type: Beef, Dairy | Full (MoveOn, MoveOff, Death) | Primary species for NAIT |
| D | Deer | Production Type: Venison, Breeding | Full (MoveOn, MoveOff, Death) | Growing NAIT participation |
Breed Code Examples
Cattle Breeds:
HF- Holstein FriesianJE- JerseyANG- AngusHER- HerefordSIM- Simmental
Deer Breeds:
RD- Red DeerFD- Fallow DeerWD- WapitiSG- Sika/Sika Germplasm
Property Identifier Format (NAIT Location Number)
Format Specification
| Property | Value |
|---|---|
| Kind | NAIT |
| Description | NAIT Number (NN) - unique identifier for livestock-keeping properties |
| Format | Numeric only (integers) |
| Pattern | ^[0-9]+$ |
| Length | 1-8 digits (typically 6-8) |
| Validation | Must be numeric; no special characters or letters allowed |
Examples
- Valid:
123456,1234567,12345678,22222 - Invalid:
NZ123456(contains letters),123-456(contains hyphen),1 2 3 4 5 6(contains spaces)
Usage
The NAIT location number is:
- Used as the propertyIdentifier in transaction requests
- Referenced in movement transactions as Sending NAIT Number and Receiving NAIT Number
- Used in Register transactions as the current location
- Defaults for sending/receiving locations if not explicitly specified in transaction fields
Authentication
Required Credentials
NAIT service requires two categories of authentication:
1. Property Authentication
The submitting farmer must have granted access for the NAIT property to the Service Provider (Rezare) to allow them to submit transations on their behalf.
2. Service Provider Authentication
Authenticates the software/system submitting the transaction.
POST https://test-api.easytrace.com/api/service-providers/credentials
Content-Type: application/json
X-ServiceProvider-API-Key: << API Key here >>
{
"username": "<< Username here >>",
"password": "<< Password here >>",
"service": "NAIT"
}
Error Handling
Authentication failures typically return:
- Invalid Property Credentials - Property NAIT number or password incorrect
- Unauthorized Service Provider - Service provider not registered with NAIT
- Invalid Schema Version - Schema version not supported by NAIT system
Implementation Notes
Transaction ID Management
- Create Operations - NAIT generates transaction ID in response
- Update Operations - Must include
NAIT.Movement.NaitTransactionIdentifieror appropriate transaction ID field - Delete Operations - Must include transaction ID to identify the record to delete
Date/Time Handling
- Dates should be in ISO 8601 format:
YYYY-MM-DD(dates) orYYYY-MM-DDTHH:mm:ss+HH:mm(datetimes) - All timestamps are timezone-aware; New Zealand (+12:00/+13:00) is default
- If not provided, transaction date defaults to submission date
Animal Identifiers
- RFID (Electronic Tag) - Required for all transactions; format varies by species
- Format includes spaces and header (e.g.,
826 0543210 00600)
- Format includes spaces and header (e.g.,
- Visual Tag - Optional but recommended; alphanumeric format
- Format: New Zealand dairy herd tag format (e.g.,
NZ123456/001/24)
- Format: New Zealand dairy herd tag format (e.g.,
Field Defaults
Several fields have default behaviors if not provided:
- Sending NAIT Number (MoveOff) → defaults to property identifier
- Receiving NAIT Number (MoveOn) → defaults to property identifier
- Date Sent/Received → defaults to transaction date
- Is Slaughter (Death) → defaults to false
Validation Rules
- All required fields must be present for transactions to be accepted
- NAIT location numbers must be numeric and exist in the NAIT registry
- Animal identifiers (RFID, Visual) must be properly formatted
- Dates must be valid and in proper sequence (received date ≥ sent date)
- Production types must match the species being registered