56 lines
2.0 KiB
Go
56 lines
2.0 KiB
Go
// Package api holds the JSON contract between mailqueuer, the daemon and
|
|
// counterctl, plus the request validators (the "fields" step of the HTTP
|
|
// validation layer).
|
|
package api
|
|
|
|
// OutRequest is the body of POST /out: one recipient of an authenticated
|
|
// submission.
|
|
type OutRequest struct {
|
|
TraceID string `json:"trace_id"` // mizu's X-Trace-Id; log correlation only
|
|
AuthUser string `json:"auth_user"` // SMTP AUTH user (mizu's X-Auth-User)
|
|
MailFrom string `json:"mail_from"` // envelope sender, optional
|
|
Recipient string `json:"recipient"`
|
|
}
|
|
|
|
// InRequest is the body of POST /in: one recipient of an inbound message.
|
|
type InRequest struct {
|
|
TraceID string `json:"trace_id"`
|
|
MailFrom string `json:"mail_from"` // "" for a bounce sender <>
|
|
Recipient string `json:"recipient"`
|
|
Junk bool `json:"junk"` // mizu's X-Junk: yes
|
|
}
|
|
|
|
// CountResponse answers /in and /out with 202: the request was validated and
|
|
// queued; counting happens off the request path. The counted values appear in
|
|
// the counting log and in GET /counters.
|
|
type CountResponse struct {
|
|
Accepted bool `json:"accepted"`
|
|
}
|
|
|
|
// ErrorResponse is the body of every non-2xx answer.
|
|
type ErrorResponse struct {
|
|
Error string `json:"error"`
|
|
}
|
|
|
|
// CountersLevel is one row of GET /counters.
|
|
type CountersLevel struct {
|
|
Level string `json:"level"`
|
|
ID string `json:"id"`
|
|
In int64 `json:"in"`
|
|
InLimit *int64 `json:"in_limit"` // null when unlimited or unmanaged
|
|
Out int64 `json:"out"`
|
|
OutLimit *int64 `json:"out_limit"`
|
|
}
|
|
|
|
// CountersResponse answers GET /counters?address=|domain=[&date=].
|
|
type CountersResponse struct {
|
|
Query string `json:"query"`
|
|
Mode string `json:"mode"` // address | domain
|
|
Date string `json:"date"` // UTC day
|
|
Managed bool `json:"managed"`
|
|
Exempt bool `json:"exempt"`
|
|
Domain string `json:"domain,omitempty"`
|
|
OrgID *int64 `json:"org_id,omitempty"`
|
|
Levels []CountersLevel `json:"levels"`
|
|
}
|