Documentation
¶
Overview ¶
Package api provides the Forge-integrated HTTP API for Herald.
Index ¶
- type CreateProviderRequest
- type CreateTemplateRequest
- type CreateVersionRequest
- type DeleteInboxRequest
- type DeleteOrgConfigRequest
- type DeleteProviderRequest
- type DeleteTemplateRequest
- type DeleteUserConfigRequest
- type DeleteVersionRequest
- type EncryptProvidersRequest
- type ForgeAPI
- type GetConfigRequest
- type GetMessageRequest
- type GetPreferencesRequest
- type GetProviderRequest
- type GetTemplateRequest
- type ListInboxRequest
- type ListMessagesRequest
- type ListProvidersRequest
- type ListTemplatesRequest
- type ListVersionsRequest
- type MarkAllReadRequest
- type MarkReadRequest
- type ProviderResponse
- type SetAppConfigRequest
- type SetOrgConfigRequest
- type SetUserConfigRequest
- type UnreadCountRequest
- type UnreadCountResponse
- type UpdatePreferencesRequest
- type UpdateProviderRequest
- type UpdateTemplateRequest
- type UpdateVersionRequest
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CreateProviderRequest ¶
type CreateProviderRequest struct {
AppID string `description:"Application ID" json:"app_id"`
Name string `description:"Provider name" json:"name"`
Channel string `description:"Channel type" json:"channel"`
Driver string `description:"Driver name" json:"driver"`
Credentials map[string]string `description:"Driver credentials" json:"credentials"`
Settings map[string]string `description:"Driver settings" json:"settings"`
Priority int `description:"Priority order" json:"priority"`
Enabled bool `description:"Is enabled" json:"enabled"`
}
Provider requests
type CreateTemplateRequest ¶
type CreateTemplateRequest struct {
AppID string `description:"Application ID" json:"app_id"`
Slug string `description:"Template slug" json:"slug"`
Name string `description:"Template name" json:"name"`
Channel string `description:"Channel type" json:"channel"`
Category string `description:"Template category" json:"category,omitempty"`
Variables []template.Variable `description:"Template variables" json:"variables"`
Enabled bool `description:"Is enabled" json:"enabled"`
}
Template requests
type CreateVersionRequest ¶
type CreateVersionRequest struct {
AppID string `description:"Application ID" optional:"true" query:"app_id"`
TemplateID string `description:"Template ID" path:"id"`
Locale string `description:"Locale code" json:"locale"`
Subject string `description:"Subject" json:"subject,omitempty"`
HTML string `description:"HTML body" json:"html,omitempty"`
Text string `description:"Text body" json:"text,omitempty"`
Title string `description:"Title" json:"title,omitempty"`
}
type DeleteInboxRequest ¶
type DeleteOrgConfigRequest ¶
type DeleteProviderRequest ¶
type DeleteTemplateRequest ¶
type DeleteUserConfigRequest ¶
type DeleteVersionRequest ¶
type EncryptProvidersRequest ¶
type EncryptProvidersRequest struct {
AppID string `description:"Application ID" query:"app_id"`
}
EncryptProvidersRequest names the app whose credentials to encrypt.
type ForgeAPI ¶
type ForgeAPI struct {
// contains filtered or unexported fields
}
ForgeAPI is the Forge-integrated HTTP API handler for Herald.
func NewForgeAPI ¶
NewForgeAPI creates a new Forge API handler.
func (*ForgeAPI) RegisterRoutes ¶
RegisterRoutes registers all Herald API routes with a Forge router.
type GetConfigRequest ¶
type GetConfigRequest struct {
AppID string `description:"Application ID" query:"app_id"`
}
Config requests
type GetMessageRequest ¶
type GetPreferencesRequest ¶
type GetPreferencesRequest struct {
AppID string `description:"Application ID" query:"app_id"`
UserID string `description:"User ID" query:"user_id"`
}
Preference requests
type GetProviderRequest ¶
type GetTemplateRequest ¶
type ListInboxRequest ¶
type ListInboxRequest struct {
AppID string `description:"Application ID" query:"app_id"`
UserID string `description:"User ID" query:"user_id"`
Offset int `description:"Offset" optional:"true" query:"offset"`
Limit int `description:"Page size" optional:"true" query:"limit"`
}
Inbox requests
type ListMessagesRequest ¶
type ListMessagesRequest struct {
AppID string `description:"Filter by app" query:"app_id"`
Channel string `description:"Filter by channel" optional:"true" query:"channel"`
Status string `description:"Filter by status" optional:"true" query:"status"`
Offset int `description:"Pagination offset" optional:"true" query:"offset"`
Limit int `description:"Page size" optional:"true" query:"limit"`
}
Message requests
type ListProvidersRequest ¶
type ListTemplatesRequest ¶
type ListVersionsRequest ¶
type MarkAllReadRequest ¶
type MarkReadRequest ¶
type ProviderResponse ¶
type ProviderResponse struct {
ID string `json:"id"`
AppID string `json:"app_id"`
Name string `json:"name"`
Channel string `json:"channel"`
Driver string `json:"driver"`
Credentials []herald.CredentialState `json:"credentials"`
Settings map[string]string `json:"settings,omitempty"`
Priority int `json:"priority"`
Enabled bool `json:"enabled"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
ProviderResponse is a provider as the API shows it. Credentials are key names and how each is stored, never values. Settings the driver marks as secret are left out too, for rows written before that rule existed.
type SetAppConfigRequest ¶
type SetAppConfigRequest struct {
AppID string `description:"Application ID" json:"app_id"`
EmailProviderID string `description:"Email provider ID" json:"email_provider_id,omitempty"`
SMSProviderID string `description:"SMS provider ID" json:"sms_provider_id,omitempty"`
PushProviderID string `description:"Push provider ID" json:"push_provider_id,omitempty"`
FromEmail string `description:"Sender email" json:"from_email,omitempty"`
FromName string `description:"Sender name" json:"from_name,omitempty"`
FromPhone string `description:"Sender phone" json:"from_phone,omitempty"`
DefaultLocale string `description:"Default locale" json:"default_locale,omitempty"`
WebhookProviderID string `description:"Webhook provider ID" json:"webhook_provider_id,omitempty"`
ChatProviderID string `description:"Chat provider ID" json:"chat_provider_id,omitempty"`
}
type SetOrgConfigRequest ¶
type SetOrgConfigRequest struct {
OrgID string `description:"Organization ID" path:"orgId"`
AppID string `description:"Application ID" json:"app_id"`
EmailProviderID string `description:"Email provider ID" json:"email_provider_id,omitempty"`
SMSProviderID string `description:"SMS provider ID" json:"sms_provider_id,omitempty"`
PushProviderID string `description:"Push provider ID" json:"push_provider_id,omitempty"`
FromEmail string `description:"Sender email" json:"from_email,omitempty"`
FromName string `description:"Sender name" json:"from_name,omitempty"`
FromPhone string `description:"Sender phone" json:"from_phone,omitempty"`
DefaultLocale string `description:"Default locale" json:"default_locale,omitempty"`
WebhookProviderID string `description:"Webhook provider ID" json:"webhook_provider_id,omitempty"`
ChatProviderID string `description:"Chat provider ID" json:"chat_provider_id,omitempty"`
}
type SetUserConfigRequest ¶
type SetUserConfigRequest struct {
UserID string `description:"User ID" path:"userId"`
AppID string `description:"Application ID" json:"app_id"`
EmailProviderID string `description:"Email provider ID" json:"email_provider_id,omitempty"`
SMSProviderID string `description:"SMS provider ID" json:"sms_provider_id,omitempty"`
PushProviderID string `description:"Push provider ID" json:"push_provider_id,omitempty"`
FromEmail string `description:"Sender email" json:"from_email,omitempty"`
FromName string `description:"Sender name" json:"from_name,omitempty"`
FromPhone string `description:"Sender phone" json:"from_phone,omitempty"`
DefaultLocale string `description:"Default locale" json:"default_locale,omitempty"`
WebhookProviderID string `description:"Webhook provider ID" json:"webhook_provider_id,omitempty"`
ChatProviderID string `description:"Chat provider ID" json:"chat_provider_id,omitempty"`
}
type UnreadCountRequest ¶
type UnreadCountResponse ¶
type UnreadCountResponse struct {
Count int `json:"count"`
}
Response types
type UpdatePreferencesRequest ¶
type UpdatePreferencesRequest struct {
AppID string `description:"Application ID" json:"app_id"`
UserID string `description:"User ID" json:"user_id"`
Overrides map[string]preference.ChannelPreference `description:"Overrides" json:"overrides"`
}
type UpdateProviderRequest ¶
type UpdateProviderRequest struct {
ID string `description:"Provider ID" path:"id"`
AppID string `description:"Application ID" optional:"true" query:"app_id"`
Name *string `description:"Provider name" json:"name,omitempty"`
Priority *int `description:"Priority order" json:"priority,omitempty"`
Enabled *bool `description:"Is enabled" json:"enabled,omitempty"`
Credentials map[string]string `description:"Credentials to set" json:"credentials,omitempty"`
RemoveCredentials []string `description:"Credential keys to remove" json:"remove_credentials,omitempty"`
Settings map[string]string `description:"Settings to set" json:"settings,omitempty"`
RemoveSettings []string `description:"Setting keys to remove" json:"remove_settings,omitempty"`
}
UpdateProviderRequest changes only what it sends. Credentials and settings merge: keys sent are set, keys in the remove lists are deleted, and everything else is kept. A provider's channel and driver can't change; create a new provider instead.
type UpdateTemplateRequest ¶
type UpdateTemplateRequest struct {
ID string `description:"Template ID" path:"id"`
AppID string `description:"Application ID" optional:"true" query:"app_id"`
Slug *string `description:"Template slug" json:"slug,omitempty"`
Name *string `description:"Template name" json:"name,omitempty"`
Channel *string `description:"Channel type" json:"channel,omitempty"`
Category *string `description:"Template category" json:"category,omitempty"`
Variables *[]template.Variable `description:"Template variables" json:"variables,omitempty"`
Enabled *bool `description:"Is enabled" json:"enabled,omitempty"`
}
type UpdateVersionRequest ¶
type UpdateVersionRequest struct {
TemplateID string `description:"Template ID" path:"id"`
VersionID string `description:"Version ID" path:"versionId"`
AppID string `description:"Application ID" optional:"true" query:"app_id"`
Locale *string `description:"Locale code" json:"locale,omitempty"`
Subject *string `description:"Subject" json:"subject,omitempty"`
HTML *string `description:"HTML body" json:"html,omitempty"`
Text *string `description:"Text body" json:"text,omitempty"`
Title *string `description:"Title" json:"title,omitempty"`
Active *bool `description:"Is active" json:"active,omitempty"`
}