diff --git a/run.go b/run.go index 4a40b64..bf6686e 100644 --- a/run.go +++ b/run.go @@ -28,7 +28,7 @@ type runs struct { // RunStatus represents a run state. type RunStatus string -//List all available run statuses. +// List all available run statuses. const ( RunApplied RunStatus = "applied" RunApplyQueued RunStatus = "apply_queued" @@ -79,6 +79,7 @@ type Run struct { Plan *Plan `jsonapi:"relation,plan"` PolicyChecks []*PolicyCheck `jsonapi:"relation,policy-checks"` Workspace *Workspace `jsonapi:"relation,workspace"` + StatusTransitions []*StatusTransition `jsonapi:"relation,status-transitions"` } // RunCreateOptions represents the options for creating a new run. @@ -140,7 +141,7 @@ func (s *runs) Read(ctx context.Context, runID string) (*Run, error) { options := struct { Include string `url:"include"` }{ - Include: "vcs-revision", + Include: "vcs-revision,status-transitions", } u := fmt.Sprintf("runs/%s", url.QueryEscape(runID)) diff --git a/status_transition.go b/status_transition.go new file mode 100644 index 0000000..3bb3ac6 --- /dev/null +++ b/status_transition.go @@ -0,0 +1,10 @@ +package scalr + +import "time" + +type StatusTransition struct { + ID string `jsonapi:"primary,status-transitions"` + Status RunStatus `jsonapi:"attr,status"` + Reason *string `jsonapi:"attr,reason,omitempty"` + CreatedAt time.Time `jsonapi:"attr,occurred-at,iso8601"` +}