Skip to content
APIProductBuild and shipIssue

Issue routes: estimate, reopen, resolve

The Issue Verbs estimate, reopen, resolve as api.sb routes, with inputs, result, refusals and an example.

Reference for Issue, one group of Issue routes.

Issue.estimate

Estimate records the effort an Issue needs, in days, so a week holds only what fits. Verb page.

Text
POST /{namespace}/issues/{issue}/estimate

Path: issue. Body, as JSON: the other inputs. Emits Issue.estimated.

Inputs

InputTypeRequiredDescription
issueIssuerequiredThe Issue to size.
daysnumberrequiredThe effort in working days.

Returns

OutputTypeRequiredDescription
issueIssuerequiredThe estimated Issue.

Refuses when

CheckErrorFixThen call
The key is valid, but its scopes do not allow this operation.forbiddenUse a key whose scopes cover the operation, or ask an owner of the namespace to grant them.None.

Example

Terminal
curl -X POST https://api.sb/leaseline.app/issues/issue_vWekeqrXCN/estimate \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"days":1}'
JSON
{
  "api": "https://api.sb/leaseline.app",
  "issue": {
    "$id": "https://api.sb/leaseline.app/issues/issue_vWekeqrXCN",
    "$type": "Issue",
    "status": "pending",
    "mode": "try"
  },
  "action": {
    "$id": "https://api.sb/leaseline.app/actions/act_br07HsG8MG",
    "operation": "Issue.estimate",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/leaseline.app/actions/act_br07HsG8MG"
  }
}

Issue.reopen

Reopen returns a resolved Issue to its owning Role when the fix does not hold. Verb page.

Text
POST /{namespace}/issues/{issue}/reopen

Path: issue. Body, as JSON: the other inputs. Emits Issue.reopened.

Inputs

InputTypeRequiredDescription
issueIssuerequiredThe resolved Issue.
reasontextrequiredWhat still fails.

Returns

OutputTypeRequiredDescription
issueIssuerequiredThe reopened Issue.

Refuses when

CheckErrorFixThen call
The key is valid, but its scopes do not allow this operation.forbiddenUse a key whose scopes cover the operation, or ask an owner of the namespace to grant them.None.
The record is not in a state that allows this Verb, so the call is refused.refusedRead the record, run the Verb that moves it to an allowed state, then retry.None.

Example

Terminal
curl -X POST https://api.sb/leaseline.app/issues/issue_vWekeqrXCN/reopen \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"reason":"Example reason"}'
JSON
{
  "api": "https://api.sb/leaseline.app",
  "issue": {
    "$id": "https://api.sb/leaseline.app/issues/issue_vWekeqrXCN",
    "$type": "Issue",
    "status": "pending",
    "mode": "try"
  },
  "action": {
    "$id": "https://api.sb/leaseline.app/actions/act_br07HsG8MG",
    "operation": "Issue.reopen",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/leaseline.app/actions/act_br07HsG8MG"
  }
}

Issue.resolve

Resolve closes an Issue with its fix recorded and tells every Customer who reported it. Verb page.

Text
POST /{namespace}/issues/{issue}/resolve

Path: issue. Body, as JSON: the other inputs. Emits Issue.resolved.

Inputs

InputTypeRequiredDescription
issueIssuerequiredThe Issue to close.
resolutiontextrequiredWhat fixed it.
changeChangeThe Change whose full rollout fixed the Issue; its Version is recorded as the resolution.

Returns

OutputTypeRequiredDescription
issueIssuerequiredThe resolved Issue.

Refuses when

CheckErrorFixThen call
The key is valid, but its scopes do not allow this operation.forbiddenUse a key whose scopes cover the operation, or ask an owner of the namespace to grant them.None.
The record is not in a state that allows this Verb, so the call is refused.refusedRead the record, run the Verb that moves it to an allowed state, then retry.None.

Example

Terminal
curl -X POST https://api.sb/leaseline.app/issues/issue_vWekeqrXCN/resolve \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"resolution":"Example resolution"}'
JSON
{
  "api": "https://api.sb/leaseline.app",
  "issue": {
    "$id": "https://api.sb/leaseline.app/issues/issue_vWekeqrXCN",
    "$type": "Issue",
    "status": "pending",
    "mode": "try"
  },
  "action": {
    "$id": "https://api.sb/leaseline.app/actions/act_br07HsG8MG",
    "operation": "Issue.resolve",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/leaseline.app/actions/act_br07HsG8MG"
  }
}