Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Specification for asynchronous callbacks #408

Open
cookeac opened this issue Aug 10, 2023 · 1 comment
Open

Specification for asynchronous callbacks #408

cookeac opened this issue Aug 10, 2023 · 1 comment

Comments

@cookeac
Copy link
Collaborator

cookeac commented Aug 10, 2023

Asynchronous services and tasks may result in data being updated outside of the usual timeframe of a GET message.
There may also be cases where exceptions should be raised.

@erwinspeybroeck gave some examples of how this works in the CRV system. An example is animal registration status notifications.

Possible solutions:

  • Update the original event, with its modified date/time and GET using normal methods (including synchronisation API)
  • Use Webhooks (potentially with a proxy)
  • Use Webhooks and also provide an API where an online/offline client can pick up notifications
  • Some other publish/subscribe mechanism

Two specific cases:

  • Status changes for external systems such as registration
  • Functional errors or validation errors (for instance, from external systems, a problem that needs to be resolved)
@erwinspeybroeck
Copy link
Collaborator

erwinspeybroeck commented Aug 10, 2023

Hereby the 2 use case regarding notifications

 

Animal-registration-statuses

 

{

description: Body for posting a (I&R) registration status notification
id* string Unique identifier for this registration, is generated by the source
registrationType string Type of registration Enum: [ ARRIVAL, DEPARTURE, BIRTH, DEATH, STILLBIRTH ]
animal* { description: Identifies an animal using a scheme and ID. id* string A unique identification for the resource issued under the auspices of the scheme. scheme* string The identifier (in reverse domain format) of an official scheme that manages unique identifiers. }
description: Identifies an animal using a scheme and ID.
id* string A unique identification for the resource issued under the auspices of the scheme.
scheme* string The identifier (in reverse domain format) of an official scheme that manages unique identifiers.
location { description: Location identifier based on a scheme and ID. id* string A unique identification for the resource issued under the auspices of the scheme. scheme* string The identifier (in reverse domain format) of an official scheme that manages unique identifiers. }
description: Location identifier based on a scheme and ID.
id* string A unique identification for the resource issued under the auspices of the scheme.
scheme* string The identifier (in reverse domain format) of an official scheme that manages unique identifiers.
eventDateTime* string($date-time) udt:DateTimeType | A particular point in the progression of time together with relevant supplementary information.
registrationDateTime string($date-time) udt:DateTimeType | A particular point in the progression of time together with relevant supplementary information.
statusDateTime string($date-time) udt:DateTimeType | A particular point in the progression of time together with relevant supplementary information.
registrationNumber string Number to identify the registration at RvO/FAVV
message string Message concerning the registration(status)
status* string Type of registration Enum: [ INITIAL_REQUEST, VALIDATION_MESSAGE_OFFERED, VALIDATION_ERROR, VALIDATED, VALIDATED_WITH_A_WARNING, SENT_TO_RVO, SENT_TO_FAVV, RECEIVED_AT_RVO, RECEIVED_AT_FAVV, ERROR_RVO, WARNING_RVO, ERROR_FAVV, WARNING_FAVV, NOT_PROCESSED, PROCESSED, PROCESSED_WITH_A_WARNING, WITHDRAWN, REPLACED, INFO_RVO, ERROR_CRV, PROVISIONALLY_PROCESSED, REPLACEMENT_REQUESTED, WITHDRAWAL_REQUESTED, WITHDRAWAL_ERROR_CRV, WITHDRAWAL_SENT_TO_RVO, WITHDRAWAL_WARNING_RVO, WITHDRAWAL_ERROR_RVO ]

}

Functional errors

 

{

description: Body for posting reproduction functional error
id* string($uuid) Unique identifier for this event, is generated by the source.
eventDateTime* string($date-time) udt:DateTimeType | A particular point in the progression of time together with relevant supplementary information.
animal* { description: Identifies an animal using a scheme and ID. id* string A unique identification for the resource issued under the auspices of the scheme. scheme* string The identifier (in reverse domain format) of an official scheme that manages unique identifiers. }
description: Identifies an animal using a scheme and ID.
id* string A unique identification for the resource issued under the auspices of the scheme.
scheme* string The identifier (in reverse domain format) of an official scheme that manages unique identifiers.
originalId string Unique identifier, which refers to the original id of the reproduction event.
message string Message concerning the functional error.
reproductionType string Reproduction type. Enum: [ ABORTION, DO_NOT_BREED, HEAT, PREGNANCY_CHECK, INSEMINATION, HEAT_REPORT ]

}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants