Change a warranty
maintenance.warranty.update
POST/api/v1/households/{household_id}/commands/maintenance.warranty.update
- Command
- Rigel runs it
- Applies offline
Changes only the fields given; null clears provider, coverage and the dates. New evidence replaces the old. Errors: invalid_range (it would end before it starts).
Parameters#
| Field | Description |
|---|---|
household_idpathstringrequired | The household's ID. |
Idempotency-Keyheaderstringoptional | The command's ID. Reuse it when retrying the same command. |
Request body#
JSON, as application/json.
| Field | Description |
|---|---|
warranty_idstringrequired | A warranty ID, such as wty_01JC0000000000000000000000. |
providerstring or nulloptional | Who provides the coverage, as written: "Carrier", "Home Depot protection plan". |
coveragestring or nulloptional | What it covers and its limits. |
starts_onstring (date) or nulloptional | When coverage starts, YYYY-MM-DD. |
ends_onstring (date) or nulloptional | When coverage ends, YYYY-MM-DD. |
evidenceobjectoptional | Where the coverage was read: the warranty card, the receipt. |
evidence.file_idstringoptional | A photo, manual or invoice already uploaded to the household's files. |
evidence.urlstring (uri)optional | A web address. |
evidence.said_by_person_idstringoptional | Who said it, when the source is something a person said. |
evidence.locatorstringoptional | Where in the source: "p. 14", "rating plate". |
evidence.excerptstringoptional | The exact text the value was read from. |
Response#
200 The command was applied.
| Field | Description |
|---|---|
resultobjectrequired | What the command returned, such as the IDs it created. |
versionintegerrequired | The household version after the command. |
Errors#
Every error has the same envelope: error.code, error.message, error.details, error.recovery and error.request_id.
| Status | Code | When |
|---|---|---|
400 | validation_failed | A field is missing, misspelled or out of range. details.fields lists each problem. |
401 | unauthenticated | The request has no valid session. |
404 | warranty_not_found | A warranty that isn't there. |
404 | not_found | The household doesn't exist, or you aren't a member of it. |
409 | invalid_range |
|
409 | idempotency_key_reused | The Idempotency-Key was already used for a different command. |
Examples#
These are real. Each scenario is one of the command's test cases, run on a household when this site was built, and the response is what the API returned.
Changes what's given; new evidence replaces the old
curl -X POST 'https://rigel.house/api/v1/households/hh_01K9BKKP003AHRZ6DMV29GQY5C/commands/maintenance.warranty.update' \
-H "Cookie: rigel_session=$RIGEL_SESSION" \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: cmd_01JC4N0000AAAAAAAAAAAAAAAA' \
-d '{
"warranty_id": "wty_01JC0000000000000000000001",
"coverage": "Parts and labor",
"evidence": {
"locator": "card"
}
}'const response = await fetch("https://rigel.house/api/v1/households/hh_01K9BKKP003AHRZ6DMV29GQY5C/commands/maintenance.warranty.update", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Idempotency-Key": "cmd_01JC4N0000AAAAAAAAAAAAAAAA",
Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
},
body: JSON.stringify({
warranty_id: "wty_01JC0000000000000000000001",
coverage: "Parts and labor",
evidence: {
locator: "card",
},
}),
});
const data = await response.json();POST /api/v1/households/hh_01K9BKKP003AHRZ6DMV29GQY5C/commands/maintenance.warranty.update HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>
Content-Type: application/json
Idempotency-Key: cmd_01JC4N0000AAAAAAAAAAAAAAAA
{
"warranty_id": "wty_01JC0000000000000000000001",
"coverage": "Parts and labor",
"evidence": {
"locator": "card"
}
}HTTP/1.1 200 OK
Content-Type: application/json
X-Request-Id: req_01K9D9S2R055B6QXKGXRW495V2
{
"result": {},
"version": 1
}Null clears a date
curl -X POST 'https://rigel.house/api/v1/households/hh_01K9BKKP003AHRZ6DMV29GQY5C/commands/maintenance.warranty.update' \
-H "Cookie: rigel_session=$RIGEL_SESSION" \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: cmd_01JC4N0000AAAAAAAAAAAAAAAA' \
-d '{
"warranty_id": "wty_01JC0000000000000000000001",
"ends_on": null
}'const response = await fetch("https://rigel.house/api/v1/households/hh_01K9BKKP003AHRZ6DMV29GQY5C/commands/maintenance.warranty.update", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Idempotency-Key": "cmd_01JC4N0000AAAAAAAAAAAAAAAA",
Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
},
body: JSON.stringify({
warranty_id: "wty_01JC0000000000000000000001",
ends_on: null,
}),
});
const data = await response.json();POST /api/v1/households/hh_01K9BKKP003AHRZ6DMV29GQY5C/commands/maintenance.warranty.update HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>
Content-Type: application/json
Idempotency-Key: cmd_01JC4N0000AAAAAAAAAAAAAAAA
{
"warranty_id": "wty_01JC0000000000000000000001",
"ends_on": null
}HTTP/1.1 200 OK
Content-Type: application/json
X-Request-Id: req_01K9D9S2R0RYM25P1RK2GDM2GY
{
"result": {},
"version": 1
}The new end is checked against the old start
curl -X POST 'https://rigel.house/api/v1/households/hh_01K9BKKP003AHRZ6DMV29GQY5C/commands/maintenance.warranty.update' \
-H "Cookie: rigel_session=$RIGEL_SESSION" \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: cmd_01JC4N0000AAAAAAAAAAAAAAAA' \
-d '{
"warranty_id": "wty_01JC0000000000000000000001",
"ends_on": "2019-06-14"
}'const response = await fetch("https://rigel.house/api/v1/households/hh_01K9BKKP003AHRZ6DMV29GQY5C/commands/maintenance.warranty.update", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Idempotency-Key": "cmd_01JC4N0000AAAAAAAAAAAAAAAA",
Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
},
body: JSON.stringify({
warranty_id: "wty_01JC0000000000000000000001",
ends_on: "2019-06-14",
}),
});
const data = await response.json();POST /api/v1/households/hh_01K9BKKP003AHRZ6DMV29GQY5C/commands/maintenance.warranty.update HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>
Content-Type: application/json
Idempotency-Key: cmd_01JC4N0000AAAAAAAAAAAAAAAA
{
"warranty_id": "wty_01JC0000000000000000000001",
"ends_on": "2019-06-14"
}HTTP/1.1 409 Conflict
Content-Type: application/json
X-Request-Id: req_01K9D9S2R0Q7NAT18NS4SW1SCA
{
"error": {
"code": "invalid_range",
"message": "The coverage can't end before it starts. No changes were applied.",
"details": {
"starts_on": "2019-06-15",
"ends_on": "2019-06-14"
},
"recovery": "Read the current state, then send a command that fits it.",
"request_id": "req_01K9D9S2R0Q7NAT18NS4SW1SCA"
}
}The new start is checked against the old end
curl -X POST 'https://rigel.house/api/v1/households/hh_01K9BKKP003AHRZ6DMV29GQY5C/commands/maintenance.warranty.update' \
-H "Cookie: rigel_session=$RIGEL_SESSION" \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: cmd_01JC4N0000AAAAAAAAAAAAAAAA' \
-d '{
"warranty_id": "wty_01JC0000000000000000000001",
"starts_on": "2019-06-16"
}'const response = await fetch("https://rigel.house/api/v1/households/hh_01K9BKKP003AHRZ6DMV29GQY5C/commands/maintenance.warranty.update", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Idempotency-Key": "cmd_01JC4N0000AAAAAAAAAAAAAAAA",
Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
},
body: JSON.stringify({
warranty_id: "wty_01JC0000000000000000000001",
starts_on: "2019-06-16",
}),
});
const data = await response.json();POST /api/v1/households/hh_01K9BKKP003AHRZ6DMV29GQY5C/commands/maintenance.warranty.update HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>
Content-Type: application/json
Idempotency-Key: cmd_01JC4N0000AAAAAAAAAAAAAAAA
{
"warranty_id": "wty_01JC0000000000000000000001",
"starts_on": "2019-06-16"
}HTTP/1.1 409 Conflict
Content-Type: application/json
X-Request-Id: req_01K9D9S2R05S9QZ6ATJ85HWX7A
{
"error": {
"code": "invalid_range",
"message": "The coverage can't end before it starts. No changes were applied.",
"details": {
"starts_on": "2019-06-16",
"ends_on": "2019-06-15"
},
"recovery": "Read the current state, then send a command that fits it.",
"request_id": "req_01K9D9S2R05S9QZ6ATJ85HWX7A"
}
}A warranty that isn't there
curl -X POST 'https://rigel.house/api/v1/households/hh_01K9BKKP003AHRZ6DMV29GQY5C/commands/maintenance.warranty.update' \
-H "Cookie: rigel_session=$RIGEL_SESSION" \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: cmd_01JC4N0000AAAAAAAAAAAAAAAA' \
-d '{
"warranty_id": "wty_01JC0000000000000000000001",
"coverage": "x"
}'const response = await fetch("https://rigel.house/api/v1/households/hh_01K9BKKP003AHRZ6DMV29GQY5C/commands/maintenance.warranty.update", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Idempotency-Key": "cmd_01JC4N0000AAAAAAAAAAAAAAAA",
Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
},
body: JSON.stringify({
warranty_id: "wty_01JC0000000000000000000001",
coverage: "x",
}),
});
const data = await response.json();POST /api/v1/households/hh_01K9BKKP003AHRZ6DMV29GQY5C/commands/maintenance.warranty.update HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>
Content-Type: application/json
Idempotency-Key: cmd_01JC4N0000AAAAAAAAAAAAAAAA
{
"warranty_id": "wty_01JC0000000000000000000001",
"coverage": "x"
}HTTP/1.1 404 Not Found
Content-Type: application/json
X-Request-Id: req_01K9D9S2R0S12VDN7QHQK4H8DS
{
"error": {
"code": "warranty_not_found",
"message": "That warranty isn't recorded any more. No changes were applied.",
"details": {
"warranty_id": "wty_01JC0000000000000000000001"
},
"recovery": "Read the current state, then send a command that fits it.",
"request_id": "req_01K9D9S2R0S12VDN7QHQK4H8DS"
}
}For Rigel#
Rigel's tool for this command is maintenance_warranty_update. Rigel runs this on its own, then says what it did. The agent guide has the rest.