diff --git a/collections/icarDailyFeedReportCollection.json b/collections/icarDailyFeedReportCollection.json new file mode 100644 index 0000000..4eeb2a8 --- /dev/null +++ b/collections/icarDailyFeedReportCollection.json @@ -0,0 +1,21 @@ +{ + "description": "Represents a collection of daily feed reports. Based on icarResourceCollection to provide paging etc.", + + "allOf": [{ + "$ref": "../icarResourceCollection.json" + }, + { + "type": "object", + + "properties": { + "member": { + "type": "array", + "items": { + "$ref": "../resources/icarDailyFeedReportResource.json" + }, + "description": "As per JSON-LD Hydra syntax, member provides the array of objects, in this case daily feed reports." + } + } + } + ] +} diff --git a/collections/icarFeedCollection.json b/collections/icarFeedCollection.json new file mode 100644 index 0000000..f63e35c --- /dev/null +++ b/collections/icarFeedCollection.json @@ -0,0 +1,21 @@ +{ + "description": "Represents a collection of feeds. Based on icarResourceCollection to provide paging etc.", + + "allOf": [{ + "$ref": "../collections/icarResourceCollection.json" + }, + { + "type": "object", + + "properties": { + "member": { + "type": "array", + "items": { + "$ref": "../resources/icarFeedResource.json" + }, + "description": "As per JSON-LD Hydra syntax, member provides the array of objects, in this case feeds." + } + } + } + ] +} diff --git a/collections/icarFeedIntakeEventCollection.json b/collections/icarFeedIntakeEventCollection.json new file mode 100644 index 0000000..4de436b --- /dev/null +++ b/collections/icarFeedIntakeEventCollection.json @@ -0,0 +1,21 @@ +{ + "description": "Represents a collection of feed intakes. Based on icarResourceCollection to provide paging etc.", + + "allOf": [{ + "$ref": "../collections/icarResourceCollection.json" + }, + { + "type": "object", + + "properties": { + "member": { + "type": "array", + "items": { + "$ref": "../resources/icarFeedIntakeEventResource.json" + }, + "description": "As per JSON-LD Hydra syntax, member provides the array of objects, in this case feed intakes." + } + } + } + ] +} diff --git a/collections/icarFeedRecommendationCollection.json b/collections/icarFeedRecommendationCollection.json new file mode 100644 index 0000000..b3d6ba7 --- /dev/null +++ b/collections/icarFeedRecommendationCollection.json @@ -0,0 +1,21 @@ +{ + "description": "Represents a collection of feed recommendations. Based on icarResourceCollection to provide paging etc.", + + "allOf": [{ + "$ref": "../collections/icarResourceCollection.json" + }, + { + "type": "object", + + "properties": { + "member": { + "type": "array", + "items": { + "$ref": "../resources/icarFeedRecommendationResource.json" + }, + "description": "As per JSON-LD Hydra syntax, member provides the array of objects, in this case feed recommendations." + } + } + } + ] +} diff --git a/collections/icarFeedReportCollection.json b/collections/icarFeedReportCollection.json new file mode 100644 index 0000000..e9cdffe --- /dev/null +++ b/collections/icarFeedReportCollection.json @@ -0,0 +1,21 @@ +{ + "description": "Represents a collection of feed reports. Based on icarResourceCollection to provide paging etc.", + + "allOf": [{ + "$ref": "../collections/icarResourceCollection.json" + }, + { + "type": "object", + + "properties": { + "member": { + "type": "array", + "items": { + "$ref": "../resources/icarFeedReportResource.json" + }, + "description": "As per JSON-LD Hydra syntax, member provides the array of objects, in this case feed reports." + } + } + } + ] +} diff --git a/collections/icarRationCollection.json b/collections/icarRationCollection.json new file mode 100644 index 0000000..84c232f --- /dev/null +++ b/collections/icarRationCollection.json @@ -0,0 +1,21 @@ +{ + "description": "Represents a collection of rations. Based on icarResourceCollection to provide paging etc.", + + "allOf": [{ + "$ref": "../collections/icarResourceCollection.json" + }, + { + "type": "object", + + "properties": { + "member": { + "type": "array", + "items": { + "$ref": "../resources/icarRationResource.json" + }, + "description": "As per JSON-LD Hydra syntax, member provides the array of objects, in this case rations." + } + } + } + ] +} diff --git a/enums/icarFeedCategoryType.json b/enums/icarFeedCategoryType.json new file mode 100644 index 0000000..1be900d --- /dev/null +++ b/enums/icarFeedCategoryType.json @@ -0,0 +1,12 @@ +{ + "description": "Enumeration for feed categories. Each category can have more detail in a type specification.", + + "type": "string", + + "enum": [ + "Concentrate", + "Roughage", + "Additives", + "Other" + ] +} diff --git a/enums/icarMethodType.json b/enums/icarMethodType.json new file mode 100644 index 0000000..75d1e28 --- /dev/null +++ b/enums/icarMethodType.json @@ -0,0 +1,10 @@ +{ + "description": "Enumeration for the method with which a value was determined.", + + "type": "string", + + "enum": [ + "Analyzed", + "Derived" + ] +} diff --git a/location-scheme.md b/location-scheme.md index 9f9a2d5..2f64391 100644 --- a/location-scheme.md +++ b/location-scheme.md @@ -55,7 +55,9 @@ These schemes point to a specific animal. | id | name | example| region & issuing party | RegEx | |---|---|---|---|---| | eu.animalId | LOM | 276000312312345 | EU wide scheme with a country prefix, combining multiple national schemes. Is used by transponders. First 3 positions is country code , e.g. 276=DE, is numeric, 15 digits. | | -| nl-v1 (rename to eu-??) | animal life number |NL 6802 *5082* 9 | EU wide scheme with a countryprefix, but different than the one above? [RVO on levensnummers](http://www.rvo.nl/onderwerpen/agrarisch-ondernemen/dieren/dieren-registreren/runderen/oormerken-voor-runderen) | | +| eu.bovine | European animal life time number |NL 6802 *5082* 9 | EU wide scheme with a countryprefix, but different than the one above? [RVO on levensnummers](http://www.rvo.nl/onderwerpen/agrarisch-ondernemen/dieren/dieren-registreren/runderen/oormerken-voor-runderen) | | +| us.bovine | US animal life time number |US 123456789 | US herdbook number | | + ## Legal entities / companies @@ -66,6 +68,66 @@ These schemes point to a legal entity. One that can be authenticated and is auth | nl.kvk | Chamber of commerce number (Kamer van Koophandel nummer) |64039641 | Used in the Netherlands. Issued by the 'Kamer van Koophandel', can be checked at e.g. [OpenKVK](www.openkvk.nl) | | | be.kbo | Chamber of commerce number (Ondernemersnummer) | | Used in Belgium. Issued by the 'Kruispuntbank voor Ondernemingen', can be checked at e.g. [fgov](https://kbopub.economie.fgov.be/kbopub/zoeknummerform.html?lang=nl) | | +## Feed types + +We recommend to use the org.fao scheme for identifying feed types. + +FAO also has a list of "feed materials for ruminant species" (see http://www.fao.org/fileadmin/user_upload/gleam/docs/GLEAM_2.0_Model_description.pdf) table 3.2. +There are 30 items: + +Category roughages (and cereals) +| Number | Material | Desciption | +|---|---|---| +| 1 | GRASSF | Any type of natural or cultivated fresh grass grazed or fed to the animals. | +| 2 | GRASSH | Hay (grass is cut, dried and stored) or silage (grass is cut and fermented) from any natural or cultivated grass. | +| 3 | GRASSH2 | Hay from adjacent areas. | +| 4 | GRASSLEGF | Fresh mixture of any type of grass and leguminous plants that is fed to the animals. | +| 5 | GRASSLEGH | Hay or silage produced from a mixture of any type of grass and leguminous plants. | +| 6 | ALFALFAH | Hay or silage from alfalfa (Medicago sativa). | +| 7 | GRAINSIL | Silage from whole barley (Hordeum vulgare), oat (Avena sativa), buckwheat (Fagopyrum esculentum) and fonio (Digitaria spp.) plants. | +| 8 | MAIZESIL | Silage from whole maize (Zea mays) plants. | +| 9 | RSTRAW | Fibrous residual plant material such as straw, brans, leaves, etc. from rice (Oryza spp.) cultivation. | +| 10 | WSTRAW | Fibrous residual plant material such as straw, brans, leaves, etc. from wheat (Triticum spp.) cultivation. | +| 11 | BSTRAW | Fibrous residual plant material such as straw, brans, leaves, etc. from barley (Hordeum vulgare), rye (Secale cereale) or oat (Avena sativa) cultivation. | +| 12 | ZSTOVER | Fibrous residual plant material such as straw, brans, leaves, etc. from maize (Zea mays) cultivation. | +| 13 | MSTOVER | Fibrous residual plant material such as straw, brans, leaves, etc. from millet (Pennisetum glaucum, Eleusine coracana, Panicum miliaceum, etc) cultivation. | +| 14 | SSTOVER | Fibrous residual plant material such as straw, brans, leaves, etc. from sorghum (Sorghum spp.) cultivation. | +| 15 | TOPS | Top portion of sugarcane (Saccharum spp.) plants, consisting of green leaves, bundle sheath and variable proportions of immature cane. | +| 16 | LEAVES | Leaves from natural, uncultivated vegetation found in trees, forest, lanes etc. | +| 17 | FDDRBEET | Fodder beet (Beta vulgaris), also known as mangel beet or field beet, used as animal feed. | +| 18 | GRAINS | Grains from barley (Hordeum vulgare), oat (Avena sativa), buckwheat (Fagopyrum esculentum) and fonio (Digitaria spp.). | +| 19 | CORN | Grains from maize (Zea mays) plant. | + +Category others (by-products) +| Number | Material | Desciption | +|---|---|---| +| 20 | MLSOY | By-product from soy (Glycine max) oil production, commonly referred to as ‘soy cakes’ or ‘soybean meal’. | +| 21 | MLRAPE | By-product from rape (Brassica napus) oil production, commonly referred to as ‘rape cakes’ or ‘rapeseed meal’. | +| 22 | MLCTTN | By-product from cottonseed (Gossypium spp.) oil production, commonly referred to as ‘cottonseed meal’. | +| 23 | PKEXP | By-products from the production of kernel palm oil (Elaeis guineensis), commonly referred to as 'kernel cake'. | +| 24 | MZGLTM | By-product from maize processing. It is a protein-rich feed, with about 65% crude protein content. | +| 25 | MZGLTF | By-product from maize processing. Unlike the gluten meal, its protein content is lower, of about 25% crude protein content. | +| 26 | BPULP | Also known as ‘beet pulp’, is the remaining material after the juice extraction for sugar production from the sugar beet (Beta vulgaris). | +| 27 | MOLASSES | By-product from the sugarcane sugar extraction. | +| 28 | GRNBYDRY | ‘Dry’ by-products of grain industries such as brans, middlings, etc. | +| 29 | GRNBYWET | ‘Wet’ by-products of grain industries such as biofuels, distilleries, breweries, etc. | + +Category concentrate +| Number | Material | Desciption | +|---|---|---| +| 30 | CONC | Concentrate feed from feed mills. | + +## Feed properties + +We recommend to use the org.icar scheme for identifying feed properties. + +As ICAR we propose the following list of possible feed properties: + +| Analysis | Material | Desciption | Units | +|---|---|---| ---| +| DM | Dry Matter | The part of food which would remain if all its water content was removed. | % (of feed) | +| CP | Crude protein | Crude protein is the amount of protein of animal feed | % (of DM) | +| CF | Crude fibre | crude fibre is the insoluble residue of an acid hydrolysis followed by an alkaline one. This residue contains true cellulose and insoluble lignin.| % (of DM) | ## Others diff --git a/resources/icarDailyFeedReportResource.json b/resources/icarDailyFeedReportResource.json new file mode 100644 index 0000000..272ce30 --- /dev/null +++ b/resources/icarDailyFeedReportResource.json @@ -0,0 +1,33 @@ +{ + "description": "Reporting the feed consumed during a certain time period", + + "allOf": [{ + "$ref": "../resources/icarResource.json" + }, + { + "type": "object", + + "properties": { + "eventDate": { + "$ref": "../types/icarDateType.json", + "description": "date of the feeding" + }, + "feedVisitDuration": { + "$ref": "../types/icarFeedDurationType.json" + }, + "consumedFeed": { + "type": "array", + "items": { + "$ref": "../types/icarConsumedFeedType.json" + } + }, + "consumedRation": { + "type": "array", + "items": { + "$ref": "../types/icarConsumedRationType.json" + } + } + } + } + ] + } diff --git a/resources/icarFeedIntakeEventResource.json b/resources/icarFeedIntakeEventResource.json new file mode 100644 index 0000000..6957b74 --- /dev/null +++ b/resources/icarFeedIntakeEventResource.json @@ -0,0 +1,40 @@ +{ + "description": "Event for recording a feed intake", + + "allOf": [{ + "$ref": "../resources/icarEventCoreResource.json" + }, + { + "type": "object", + + "required": [ + "feedingStartingDateTime", + "feedVisitDuration" + ], + + "properties": { + "feedingStartingDateTime": { + "$ref": "../types/icarDateTimeType.json", + "description": "The moment the feeding started" + }, + "feedVisitDuration": { + "$ref": "../types/icarFeedDurationType.json" + }, + "consumedFeed": { + "type": "array", + "items": { + "$ref": "../types/icarConsumedFeedType.json" + } + }, + "consumedRation": { + "$ref": "../types/icarConsumedRationType.json", + "description": "The eventual ration that has been consumed" + }, + "device": { + "$ref": "../types/icarDeviceReferenceType.json", + "description": "Optional information about the device used for the feeding." + } + } + } + ] + } diff --git a/resources/icarFeedRecommendationResource.json b/resources/icarFeedRecommendationResource.json new file mode 100644 index 0000000..c151af8 --- /dev/null +++ b/resources/icarFeedRecommendationResource.json @@ -0,0 +1,51 @@ +{ + "description": "An overview of the recommended feeding of animals", + + "allOf": [{ + "$ref": "../resources/icarResource.json" + }, + { + "type": "object", + + "required": [ + "id", + "animal" + ], + + "properties": { + "id": { + "$ref": "../types/icarFeedRecommendationIdType.json", + "description": "Unique identifier in the source system for this recommendation." + }, + "animal": { + "$ref": "../types/icarAnimalIdentifierType.json", + "description": "Unique animal scheme and identifier combination." + }, + "recommendationDateTime ": { + "$ref": "../types/icarDateTimeType.json", + "description": "The timestamp of the recommendation." + }, + "startDateTime": { + "$ref": "../types/icarDateTimeType.json", + "description": "The date of the beginning of the recommendation." + }, + "endDateTime": { + "$ref": "../types/icarDateTimeType.json", + "description": "The end date of the recommendation." + }, + "recommendedFeed": { + "type": "array", + "items": { + "$ref": "../types/icarRecommendedFeedType.json" + } + }, + "recommendedRation": { + "type": "array", + "items": { + "$ref": "../types/icarRecommendedRationType.json" + } + } + } + } + ] +} diff --git a/resources/icarFeedReportResource.json b/resources/icarFeedReportResource.json new file mode 100644 index 0000000..459999f --- /dev/null +++ b/resources/icarFeedReportResource.json @@ -0,0 +1,48 @@ +{ + "description": "Reporting the feed consumed during a certain time period", + + "allOf": [{ + "$ref": "../resources/icarResource.json" + }, + { + "type": "object", + + "properties": { + "eventDate": { + "$ref": "../types/icarDateType.json", + "description": "date of the feeding" + }, + "animals": { + "type": "array", + "items": { + "$ref": "../types/icarAnimalIdentifierType.json" + }, + "description": "As per JSON-LD Hydra syntax, animals provides the array of animals part of the feeding report. This could also be a report for one animal." + }, + "reportStartDateTime": { + "$ref": "../types/icarDateTimeType.json", + "description": "The moment the period of the reporting started" + }, + "reportEndDateTime": { + "$ref": "../types/icarDateTimeType.json", + "description": "The moment the period of the reporting ended" + }, + "feedVisitDuration": { + "$ref": "../types/icarFeedDurationType.json" + }, + "consumedFeed": { + "type": "array", + "items": { + "$ref": "../types/icarConsumedFeedType.json" + } + }, + "consumedRation": { + "type": "array", + "items": { + "$ref": "../types/icarConsumedRationType.json" + } + } + } + } + ] + } diff --git a/resources/icarFeedResource.json b/resources/icarFeedResource.json new file mode 100644 index 0000000..0eb911f --- /dev/null +++ b/resources/icarFeedResource.json @@ -0,0 +1,40 @@ +{ + "description": "Feeds available on a location.", + + "allOf": [{ + "$ref": "../resources/icarResource.json" + }, + { + "type": "object", + + "required": [ + "id" + ], + + "properties": { + "id": { + "type": "string", + "description": "Unique identifier in the source system for this resource." + }, + "category": { + "$ref": "../enums/icarFeedCategoryType.json", + "description": "The scheme and the id of the category of the feed." + }, + "type": { + "$ref": "../types/icarFeedIdentifierType.json", + "description": "The scheme and the id of the type of the feed. ICAR recommends the use of the list of the scheme org.fao" + }, + "name": { + "type": "string", + "description": "Name of the feed as it is known on the location." + }, + "properties": { + "type": "array", + "items": { + "$ref": "../types/icarFeedPropertyType.json" + } + } + } + } + ] +} diff --git a/resources/icarRationResource.json b/resources/icarRationResource.json new file mode 100644 index 0000000..3b82d06 --- /dev/null +++ b/resources/icarRationResource.json @@ -0,0 +1,32 @@ +{ + "description": "Rations defined on a location.", + + "allOf": [{ + "$ref": "../resources/icarResource.json" + }, + { + "type": "object", + + "required": [ + "id" + ], + + "properties": { + "id": { + "$ref": "../types/icarRationIdType.json", + "description": "Unique identifier in the source system for this resource." + }, + "name": { + "type": "string", + "description": "Name of the feed as it is known on the location." + }, + "feeds": { + "type": "array", + "items": { + "$ref": "../types/icarFeedsInRationType.json" + } + } + } + } + ] +} diff --git a/types/icarConsumedFeedType.json b/types/icarConsumedFeedType.json new file mode 100644 index 0000000..9e2ac76 --- /dev/null +++ b/types/icarConsumedFeedType.json @@ -0,0 +1,22 @@ +{ + "description": "gives the consumed feed and the amount the animal was entitled to. Amounts are real weights", + "type": "object", + "required": [ + "feedId" + ], + + "properties": { + "feedId": { + "$ref": "../types/icarFeedIdentifierType.json", + "description": "The identifier for the feed consumed" + }, + "entitlement": { + "$ref": "../types/icarFeedQuantityType.json", + "description": "The amount of feed the animal was entitled to reveive" + }, + "feedConsumption": { + "$ref": "../types/icarFeedQuantityType.json", + "description": "The amount of feed the animal has consumed" + } + } +} diff --git a/types/icarConsumedRationType.json b/types/icarConsumedRationType.json new file mode 100644 index 0000000..e7bec9e --- /dev/null +++ b/types/icarConsumedRationType.json @@ -0,0 +1,23 @@ +{ + "description": "Gives the consumed amount of feed and the amount the animal was entitled to. Amounts are real weights.", + + "type": "object", + "required": [ + "rationId" + ], + + "properties": { + "rationId": { + "$ref": "../types/icarRationIdType.json", + "description": "The identifier for the ration consumed" + }, + "entitlement": { + "$ref": "../types/icarFeedQuantityType.json", + "description": "The amount of feed the animal was entitled to reveive" + }, + "feedConsumption": { + "$ref": "../types/icarFeedQuantityType.json", + "description": "The amount of feed the animal has consumed" + } + } +} diff --git a/types/icarDateType.json b/types/icarDateType.json new file mode 100644 index 0000000..79c431a --- /dev/null +++ b/types/icarDateType.json @@ -0,0 +1,7 @@ +{ + "description": "A particular day.", + + "type": "string", + + "format": "date" +} diff --git a/types/icarFeedDurationType.json b/types/icarFeedDurationType.json new file mode 100644 index 0000000..071a6b7 --- /dev/null +++ b/types/icarFeedDurationType.json @@ -0,0 +1,20 @@ +{ + "description": "The length in time of the feeding", + + "type": "object", + + "properties": { + "unitCode": { + "type": "string", + "description": "UN/CEFACT Common Code for Units of Measurement.", + "enum": [ + "SEC", + "MIN" + ] + }, + "value": { + "type": "number", + "format": "double" + } + } +} diff --git a/types/icarFeedIdentifierType.json b/types/icarFeedIdentifierType.json new file mode 100644 index 0000000..e9d60b4 --- /dev/null +++ b/types/icarFeedIdentifierType.json @@ -0,0 +1,9 @@ +{ + "description": "Provides a scheme + identifier mechanism for feed types (see location-scheme.md for the icar list for scheme fao.org).).", + + "allOf": [ + { + "$ref": "../types/icarIdentifierType.json" + } + ] +} diff --git a/types/icarFeedPropertyType.json b/types/icarFeedPropertyType.json new file mode 100644 index 0000000..aa71bc9 --- /dev/null +++ b/types/icarFeedPropertyType.json @@ -0,0 +1,29 @@ +{ + "description": "property of the feed.", + + "type": "object", + + "properties": { + "propertyIdentifier": { + "$ref": "../types/icarPropertyIdentifierType.json", + "description": "identifies the property of the feed" + }, + "value": { + "type": "number", + "format": "double", + "description": "the value of the property." + }, + "unit": { + "type": "string", + "description": "The unit of the value of the property" + }, + "method": { + "$ref": "../enums/icarMethodType.json", + "description": "The method to come to the value of the property" + }, + "name": { + "type": "string", + "description": "name of the property (used on the location)." + } + } +} diff --git a/types/icarFeedQuantityType.json b/types/icarFeedQuantityType.json new file mode 100644 index 0000000..3417ce2 --- /dev/null +++ b/types/icarFeedQuantityType.json @@ -0,0 +1,27 @@ +{ + "description": "The amount of feed", + + "type": "object", + + "required": [ + "unitCode", + "value" + ], + + "properties": { + "unitCode": { + "type": "string", + "description": "UN/CEFACT Common Code for Units of Measurement.", + "enum": [ + "KGM", + "GRM", + "PN", + "ONZ" + ] + }, + "value": { + "type": "number", + "format": "double" + } + } +} diff --git a/types/icarFeedRecommendationIdType.json b/types/icarFeedRecommendationIdType.json new file mode 100644 index 0000000..28ac6e8 --- /dev/null +++ b/types/icarFeedRecommendationIdType.json @@ -0,0 +1,3 @@ +{ + "type": "string" +} diff --git a/types/icarFeedsInRationType.json b/types/icarFeedsInRationType.json new file mode 100644 index 0000000..ef5508a --- /dev/null +++ b/types/icarFeedsInRationType.json @@ -0,0 +1,17 @@ +{ + "description": "Feeds that are added to a specific ration.", + + "type": "object", + + "properties": { + "feedId": { + "$ref": "../types/icarFeedIdentifierType.json", + "description": "identifies the feed" + }, + "percentage": { + "type": "number", + "format": "double", + "description": "the percentage of the feed in the ration." + } + } +} diff --git a/types/icarPropertyIdentifierType.json b/types/icarPropertyIdentifierType.json new file mode 100644 index 0000000..10f34d5 --- /dev/null +++ b/types/icarPropertyIdentifierType.json @@ -0,0 +1,9 @@ +{ + "description": "Provides a scheme + identifier mechanism for feed properties (see location-scheme.md for the icar list for scheme icar.org).", + + "allOf": [ + { + "$ref": "../types/icarIdentifierType.json" + } + ] +} diff --git a/types/icarRationIdType.json b/types/icarRationIdType.json new file mode 100644 index 0000000..28ac6e8 --- /dev/null +++ b/types/icarRationIdType.json @@ -0,0 +1,3 @@ +{ + "type": "string" +} diff --git a/types/icarRecommendedFeedType.json b/types/icarRecommendedFeedType.json new file mode 100644 index 0000000..408aa30 --- /dev/null +++ b/types/icarRecommendedFeedType.json @@ -0,0 +1,15 @@ +{ + "description": "Gives the recommendation to be fed to an animal or group of animals of a certain feed.", + "type": "object", + + "properties": { + "feedId": { + "$ref": "../types/icarFeedIdentifierType.json", + "description": "The identifier for the feed recommended" + }, + "entitlement": { + "$ref": "../types/icarFeedQuantityType.json", + "description": "The amount of feed the animal is recommended to reveive" + } + } +} diff --git a/types/icarRecommendedRationType.json b/types/icarRecommendedRationType.json new file mode 100644 index 0000000..948d9d8 --- /dev/null +++ b/types/icarRecommendedRationType.json @@ -0,0 +1,16 @@ +{ + "description": "Gives the recommendation to be fed to an animal or group of animals of a certain ration.", + + "type": "object", + + "properties": { + "rationId": { + "$ref": "../types/icarRationIdType.json", + "description": "The identifier for the ration recommended" + }, + "entitlement": { + "$ref": "../types/icarFeedQuantityType.json", + "description": "The amount of this ration the animal is recommended to receive" + } + } +} diff --git a/url-schemes/exampleUrlScheme.json b/url-schemes/exampleUrlScheme.json index 55d3233..631ee59 100644 --- a/url-schemes/exampleUrlScheme.json +++ b/url-schemes/exampleUrlScheme.json @@ -17,6 +17,10 @@ "name": "ADE-1.2 additions", "description": "new endpoints not yet approved" }, + { + "name": "ADE-1.2-feed", + "description": "Feed messages approved by the working group" + }, { "name": "ADE-1.1-health", "description": "Health messages approved by the working group" @@ -1215,6 +1219,196 @@ } } }, + "/locations/{location-scheme}/{location-id}/feeds": { + "get": { + "operationId": "get-feeds", + "summary": "Get the feeds available on a certain location", + "description": "# Purpose\nProvides the feeds for a location. We recommend using the fao.org scheme for the type of feeds and the icar.org scheme for the feed properties\n", + "tags": [ + "ADE-1.2-feed" + ], + "parameters": [{ + "$ref": "#/components/parameters/location-scheme" + }, + { + "$ref": "#/components/parameters/location-id" + }, + { + "$ref": "#/components/parameters/start-date-time" + }, + { + "$ref": "#/components/parameters/end-date-time" + } + ], + "responses": { + "200": { + "description": "Successful. The response contains the feeds for the given location.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/icarFeedCollection" + } + } + } + }, + "default": { + "$ref": "#/components/responses/default" + } + } + } + }, + "/locations/{location-scheme}/{location-id}/rations": { + "get": { + "operationId": "get-Rations", + "summary": "Get the rations for a certain location", + "description": "# Purpose\nProvides the rations for a location\n", + "tags": [ + "ADE-1.2-feed" + ], + "parameters": [{ + "$ref": "#/components/parameters/location-scheme" + }, + { + "$ref": "#/components/parameters/location-id" + }, + { + "$ref": "#/components/parameters/start-date-time" + }, + { + "$ref": "#/components/parameters/end-date-time" + } + ], + "responses": { + "200": { + "description": "Successful. The response contains the rations for the given location.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/icarRationCollection" + } + } + } + }, + "default": { + "$ref": "#/components/responses/default" + } + } + } + }, + "/locations/{location-scheme}/{location-id}/feed-intakes": { + "get": { + "operationId": "get-Feed-Intakes", + "summary": "Get the feed intakes for a certain location", + "description": "# Purpose\nProvides the feed intakes for a location\n", + "tags": [ + "ADE-1.2-feed" + ], + "parameters": [{ + "$ref": "#/components/parameters/location-scheme" + }, + { + "$ref": "#/components/parameters/location-id" + }, + { + "$ref": "#/components/parameters/start-date-time" + }, + { + "$ref": "#/components/parameters/end-date-time" + } + ], + "responses": { + "200": { + "description": "Successful. The response contains the feed intakes for the given location.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/icarFeedIntakeEventCollection" + } + } + } + }, + "default": { + "$ref": "#/components/responses/default" + } + } + } + }, + "/locations/{location-scheme}/{location-id}/feed-recommendations": { + "get": { + "operationId": "get-Feed-Recommendations", + "summary": "Get the feed recommendations for a certain location", + "description": "# Purpose\nProvides the feed recommendations for a location\n", + "tags": [ + "ADE-1.2-feed" + ], + "parameters": [{ + "$ref": "#/components/parameters/location-scheme" + }, + { + "$ref": "#/components/parameters/location-id" + }, + { + "$ref": "#/components/parameters/start-date-time" + }, + { + "$ref": "#/components/parameters/end-date-time" + } + ], + "responses": { + "200": { + "description": "Successful. The response contains the rations for the given location.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/icarFeedRecommendationCollection" + } + } + } + }, + "default": { + "$ref": "#/components/responses/default" + } + } + } + }, + "/locations/{location-scheme}/{location-id}/feed-reports": { + "get": { + "operationId": "get-Feed-Report", + "summary": "Get the feed reports for animals on a certain location for a certain period", + "description": "# Purpose\nProvides the feed reports for animal on a location\n", + "tags": [ + "ADE-1.2-feed" + ], + "parameters": [{ + "$ref": "#/components/parameters/location-scheme" + }, + { + "$ref": "#/components/parameters/location-id" + }, + { + "$ref": "#/components/parameters/start-date-time" + }, + { + "$ref": "#/components/parameters/end-date-time" + } + ], + "responses": { + "200": { + "description": "Successful. The response contains the feed reports for animals on the given location.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/icarFeedReportCollection" + } + } + } + }, + "default": { + "$ref": "#/components/responses/default" + } + } + } + }, "/locations/{location-scheme}/{location-id}/repro-status-observations": { "get": { "operationId": "get-repro-status-observations", @@ -1346,6 +1540,21 @@ "icarGestationCollection": { "$ref": "../collections/icarGestationCollection.json" }, + "icarFeedCollection": { + "$ref": "../collections/icarFeedCollection.json" + }, + "icarRationCollection": { + "$ref": "../collections/icarRationCollection.json" + }, + "icarFeedIntakeEventCollection": { + "$ref": "../collections/icarFeedIntakeEventCollection.json" + }, + "icarFeedReportCollection": { + "$ref": "../collections/icarFeedReportCollection.json" + }, + "icarFeedRecommendationCollection": { + "$ref": "../collections/icarFeedRecommendationCollection.json" + }, "icarLactationStatusObservedEventCollection": { "$ref": "../collections/icarLactationStatusObservedEventCollection.json" },