Transaction Management
Use these APIs to start and end a transaction that requires more than one API call. The primary use case is when adding a scheduler. If a transaction is started and never ended, the transaction will become invalid after a timeout period of 60 minutes (editable in config tool).
This page includes the following:
Requests
You can use the following transaction management requests:
| HTTP Verb | Resource | Input | Expected Output (HTTP/1.1) |
|---|---|---|---|
| GET | /apitransaction/{schedulerId} | Type=[String] |
Success Code:200 OK Content: {
"startIndex": [Integer],
"maxSize": [Integer],
"available": [Integer],
"results": [
{
“meta”: {
“type”: “APITransaction”,
“id”: [String],
“uri”: “http://.../apitransaction/{id}
},
“transactionType”: [String],
“schedulerId”: [String],
“expirationTime”: [TimeStamp],
“state”: [String]
}]}
|
| POST | /apitransaction | {
“schedulerId” : [String],
"transactionType" : [String]
}
|
Success Code:201 Created Content: {
"meta": {
"type": “APITransaction”,
"id": [String],
"uri": "http://.../apitransaction
/{id}"
}
|
| PUT | /apitransaction/{transactionId} | N/A | See Appendix D - API Transaction Result |
| PUT | /apitransaction/heartbeat/{transactionId} | N/A | Success Code:200 OK Content: {
“success” : [Boolean],
“message” : [String]
}
|
| DELETE | /apitransaction/{transactionId} | N/A | Success Code:200 OK Content: {
“success” : [Boolean],
“message” : [String]
}
|
Transaction Management Data Dictionary
-
scheduler
Allowed values: Any valid AAI schedulerId
-
transactionType
Allowed values: addScheduler
-
Type
Allowed values:
- addScheduler
- event
- schedulerDefinition
For information about the query parameter, see Appendix A - Query Parameters
Recommendations: Closing a Transaction
A PUT request is used to close a transaction. This request can take a long time when using AAI for versions up through 5.8.1. It starts the JAWS converter and completes once the converter is finished. In certain situations, the converter time-to-run can be very long and, as a result, the observed time of the PUT request can be very long as well.
A few questions arise when the PUT request is unexpectedly long. These are given below and answered. Recommendations to using PUT to close a transaction are provided:
-
How long should a user wait before retrying a PUT request to close a transaction?
If a PUT request for closing a transaction has not completed, then the user should wait for the transaction to finish.
-
How does a user know if a PUT request to close a transaction is still in progress?
A schedulerId is needed to determine if a PUT request for closing a transaction is still in progress. A schedulerId is provided when creating an empty scheduler with the POST request to /schedulers. It can be retrieved by a GET request to /schedulers.
The PUT request to close a transaction will be in progress if the associated transactionId can be retrieved. A user can retrieve the transactionId for a scheduler with a GET request to /apitransaction/{schedulerId}. This GET request will return any active transactionId associated with the given schedulerId. The PUT request to close a transaction remains in progress if the return value from the GET request is not an empty array; the ‘non-empty’ array could include the line, ‘ “state” : “CLOSED” ’, but still the transaction remains in progress. In contrast, an empty array indicates that the transaction is complete.
-
What happens when a user submits a transaction and there is a PUT transaction in progress?
A user should always wait for a PUT request for closing a transaction to finish before attempting to start another transaction. If a POST request is made to /apitransaction for a scheduler with a transaction in progress, the request will fail, and the response will indicate ‘Transaction in progress".