Documentation
¶
Index ¶
- Constants
- Variables
- func FieldTypeError(field string, t string) error
- func InvalidFieldError(field string) error
- func NotAllowed(c *gin.Context)
- func NotFound(c *gin.Context)
- func ReplyQuarterdeckError(c *gin.Context, err error)
- type APIKey
- type APIKeyPage
- type APIKeyPreview
- type APIv1
- func (s *APIv1) APIKeyCreate(ctx context.Context, in *APIKey) (out *APIKey, err error)
- func (s *APIv1) APIKeyDelete(ctx context.Context, id string) (err error)
- func (s *APIv1) APIKeyDetail(ctx context.Context, id string) (out *APIKey, err error)
- func (s *APIv1) APIKeyList(ctx context.Context, in *PageQuery) (out *APIKeyPage, err error)
- func (s *APIv1) APIKeyPermissions(ctx context.Context) (out []string, err error)
- func (s *APIv1) APIKeyUpdate(ctx context.Context, in *APIKey) (out *APIKey, err error)
- func (s *APIv1) Do(req *http.Request, data interface{}, checkStatus bool) (rep *http.Response, err error)
- func (s *APIv1) InvitePreview(ctx context.Context, token string) (out *MemberInvitePreview, err error)
- func (s *APIv1) Login(ctx context.Context, in *LoginRequest) (out *AuthReply, err error)
- func (s *APIv1) MemberCreate(ctx context.Context, in *Member) (out *Member, err error)
- func (s *APIv1) MemberDelete(ctx context.Context, id string) (out *MemberDeleteReply, err error)
- func (s *APIv1) MemberDetail(ctx context.Context, id string) (out *Member, err error)
- func (s *APIv1) MemberList(ctx context.Context, in *PageQuery) (out *MemberPage, err error)
- func (s *APIv1) MemberRoleUpdate(ctx context.Context, id string, in *UpdateRoleParams) (out *Member, err error)
- func (s *APIv1) MemberUpdate(ctx context.Context, in *Member) (out *Member, err error)
- func (s *APIv1) NewRequest(ctx context.Context, method, path string, data interface{}, params *url.Values) (req *http.Request, err error)
- func (s *APIv1) OrganizationDetail(ctx context.Context, id string) (out *Organization, err error)
- func (s *APIv1) OrganizationList(ctx context.Context, in *PageQuery) (out *OrganizationPage, err error)
- func (s *APIv1) ProjectAPIKeyCreate(ctx context.Context, id string, in *APIKey) (out *APIKey, err error)
- func (s *APIv1) ProjectAPIKeyList(ctx context.Context, id string, in *PageQuery) (out *ProjectAPIKeyPage, err error)
- func (s *APIv1) ProjectCreate(ctx context.Context, in *Project) (out *Project, err error)
- func (s *APIv1) ProjectDelete(ctx context.Context, id string) (err error)
- func (s *APIv1) ProjectDetail(ctx context.Context, id string) (out *Project, err error)
- func (s *APIv1) ProjectList(ctx context.Context, in *PageQuery) (out *ProjectPage, err error)
- func (s *APIv1) ProjectPatch(ctx context.Context, id string, in *Project) (out *Project, err error)
- func (s *APIv1) ProjectTopicCreate(ctx context.Context, id string, in *Topic) (out *Topic, err error)
- func (s *APIv1) ProjectTopicList(ctx context.Context, id string, in *PageQuery) (out *ProjectTopicPage, err error)
- func (s *APIv1) ProjectUpdate(ctx context.Context, in *Project) (out *Project, err error)
- func (s *APIv1) Refresh(ctx context.Context, in *RefreshRequest) (out *AuthReply, err error)
- func (s *APIv1) Register(ctx context.Context, in *RegisterRequest) (err error)
- func (c *APIv1) SetCSRFProtect(protect bool) error
- func (c *APIv1) SetCredentials(token string)
- func (s *APIv1) SignUp(ctx context.Context, in *ContactInfo) (err error)
- func (s *APIv1) Status(ctx context.Context) (out *StatusReply, err error)
- func (s *APIv1) Switch(ctx context.Context, in *SwitchRequest) (out *AuthReply, err error)
- func (s *APIv1) TenantCreate(ctx context.Context, in *Tenant) (out *Tenant, err error)
- func (s *APIv1) TenantDelete(ctx context.Context, id string) (err error)
- func (s *APIv1) TenantDetail(ctx context.Context, id string) (out *Tenant, err error)
- func (s *APIv1) TenantList(ctx context.Context, in *PageQuery) (out *TenantPage, err error)
- func (s *APIv1) TenantProjectCreate(ctx context.Context, id string, in *Project) (out *Project, err error)
- func (s *APIv1) TenantProjectList(ctx context.Context, id string, in *PageQuery) (out *TenantProjectPage, err error)
- func (s *APIv1) TenantProjectPatch(ctx context.Context, tenantID, projectID string, in *Project) (out *Project, err error)
- func (s *APIv1) TenantProjectStats(ctx context.Context, id string) (out []*StatValue, err error)
- func (s *APIv1) TenantStats(ctx context.Context, id string) (out []*StatValue, err error)
- func (s *APIv1) TenantUpdate(ctx context.Context, in *Tenant) (out *Tenant, err error)
- func (s *APIv1) TopicDelete(ctx context.Context, in *Confirmation) (out *Confirmation, err error)
- func (s *APIv1) TopicDetail(ctx context.Context, id string) (out *Topic, err error)
- func (s *APIv1) TopicList(ctx context.Context, in *PageQuery) (out *TopicPage, err error)
- func (s *APIv1) TopicStats(ctx context.Context, id string) (out []*StatValue, err error)
- func (s *APIv1) TopicUpdate(ctx context.Context, in *Topic) (out *Topic, err error)
- func (s *APIv1) VerifyEmail(ctx context.Context, in *VerifyRequest) (err error)
- type AuthReply
- type ClientOption
- type Confirmation
- type ContactInfo
- type LoginRequest
- type Member
- type MemberDeleteReply
- type MemberInvitePreview
- type MemberPage
- type Organization
- type OrganizationPage
- type PageQuery
- type Project
- type ProjectAPIKeyPage
- type ProjectPage
- type ProjectTopicPage
- type RefreshRequest
- type RegisterRequest
- type Reply
- type StatValue
- type StatusReply
- type SwitchRequest
- type Tenant
- type TenantClient
- type TenantPage
- type TenantProjectPage
- type Topic
- type TopicPage
- type UpdateRoleParams
- type VerifyRequest
Constants ¶
const ( PartialPermissions = "Partial" FullPermissions = "Full" )
Variables ¶
var ( ErrOrganizationIDRequired = errors.New("organization id is required for this endpoint") ErrAPIKeyIDRequired = errors.New("apikey id is required for this endpoint") ErrMemberIDRequired = errors.New("member id is required for this endpoint") ErrProjectIDRequired = errors.New("project id is required for this endpoint") ErrTenantIDRequired = errors.New("tenant id is required for this endpoint") ErrTopicIDRequired = errors.New("topic id is required for this endpoint") ErrTokenRequired = errors.New("token is required for this endpoint") ErrInvalidTenantField = errors.New("invalid tenant field") ErrInvalidUserClaims = errors.New("user claims invalid or unavailable") ErrUnparsable = errors.New("could not parse request") )
Functions ¶
func FieldTypeError ¶ added in v0.7.0
func InvalidFieldError ¶ added in v0.7.0
func NotAllowed ¶
NotAllowed returns a JSON 405 response for the API.
func NotFound ¶
NotFound returns a JSON response for the API. NOTE: we know it's weird to put server-side handlers like NotFound and NotAllowed here in the client/api side package but it unifies where we keep our error handling mechanisms.
func ReplyQuarterdeckError ¶ added in v0.5.0
ReplyQuarterdeckError returns a JSON response for a Quarterdeck error by attempting to decode a generic error into a StatusError. If the error is not a StatusError, then a JSON 500 response is returned. TODO: Does this need to have more user-friendly error messaging? :point-down:
Types ¶
type APIKey ¶ added in v0.2.0
type APIKey struct {
ID string `json:"id,omitempty"`
ClientID string `json:"client_id"`
ClientSecret string `json:"client_secret,omitempty"`
Name string `json:"name"`
Owner string `json:"owner,omitempty"`
Permissions []string `json:"permissions,omitempty"`
Created string `json:"created,omitempty"`
}
type APIKeyPage ¶ added in v0.2.0
type APIKeyPreview ¶ added in v0.5.0
type APIKeyPreview struct {
ID string `json:"id"`
ClientID string `json:"client_id"`
Name string `json:"name,omitempty"`
Permissions string `json:"permissions"`
Status string `json:"status"`
LastUsed string `json:"last_used,omitempty"`
Created string `json:"created"`
Modified string `json:"modified"`
}
type APIv1 ¶
type APIv1 struct {
// contains filtered or unexported fields
}
APIv1 implements the TenantClient interface
func (*APIv1) APIKeyCreate ¶ added in v0.3.0
func (*APIv1) APIKeyDelete ¶ added in v0.2.0
func (*APIv1) APIKeyDetail ¶ added in v0.2.0
func (*APIv1) APIKeyList ¶ added in v0.2.0
func (*APIv1) APIKeyPermissions ¶ added in v0.5.0
func (*APIv1) APIKeyUpdate ¶ added in v0.2.0
func (*APIv1) Do ¶
func (s *APIv1) Do(req *http.Request, data interface{}, checkStatus bool) (rep *http.Response, err error)
Do executes an http request against the server, performs error checking, and deserializes response data into the specified struct.
func (*APIv1) InvitePreview ¶ added in v0.5.2
func (*APIv1) MemberCreate ¶ added in v0.2.0
func (*APIv1) MemberDelete ¶ added in v0.2.0
func (*APIv1) MemberDetail ¶ added in v0.2.0
func (*APIv1) MemberList ¶ added in v0.2.0
func (*APIv1) MemberRoleUpdate ¶ added in v0.5.2
func (*APIv1) MemberUpdate ¶ added in v0.2.0
func (*APIv1) NewRequest ¶
func (*APIv1) OrganizationDetail ¶ added in v0.4.0
func (*APIv1) OrganizationList ¶ added in v0.5.2
func (*APIv1) ProjectAPIKeyCreate ¶ added in v0.2.0
func (*APIv1) ProjectAPIKeyList ¶ added in v0.2.0
func (*APIv1) ProjectCreate ¶ added in v0.2.0
func (*APIv1) ProjectDelete ¶ added in v0.2.0
func (*APIv1) ProjectDetail ¶ added in v0.2.0
func (*APIv1) ProjectList ¶ added in v0.2.0
func (*APIv1) ProjectPatch ¶ added in v0.7.0
func (*APIv1) ProjectTopicCreate ¶ added in v0.2.0
func (*APIv1) ProjectTopicList ¶ added in v0.2.0
func (*APIv1) ProjectUpdate ¶ added in v0.2.0
func (*APIv1) Register ¶ added in v0.3.0
func (s *APIv1) Register(ctx context.Context, in *RegisterRequest) (err error)
func (*APIv1) SetCSRFProtect ¶ added in v0.2.0
SetCSRFProtect is a helper function to set CSRF cookies on the client. This is not possible in a browser because of the HttpOnly flag. This method should only be used for testing purposes and an error is returned if the URL is not localhost. For live clients - the server should set these cookies. If protect is false, then the cookies are removed from the client by setting the cookies to an empty slice.
func (*APIv1) SetCredentials ¶ added in v0.2.0
SetCredentials is a helper function for external users to override credentials at runtime by directly passing in the token, which is useful for testing. TODO: Pass in a credentials interface instead of the token string.
func (*APIv1) TenantCreate ¶ added in v0.1.1
func (*APIv1) TenantDelete ¶ added in v0.2.0
func (*APIv1) TenantDetail ¶ added in v0.2.0
func (*APIv1) TenantList ¶ added in v0.1.1
func (*APIv1) TenantProjectCreate ¶ added in v0.2.0
func (*APIv1) TenantProjectList ¶ added in v0.2.0
func (*APIv1) TenantProjectPatch ¶ added in v0.7.0
func (*APIv1) TenantProjectStats ¶ added in v0.7.0
func (*APIv1) TenantStats ¶ added in v0.3.0
func (*APIv1) TenantUpdate ¶ added in v0.2.0
func (*APIv1) TopicDelete ¶
func (s *APIv1) TopicDelete(ctx context.Context, in *Confirmation) (out *Confirmation, err error)
func (*APIv1) TopicDetail ¶
func (*APIv1) TopicStats ¶ added in v0.8.0
func (*APIv1) TopicUpdate ¶ added in v0.2.0
func (*APIv1) VerifyEmail ¶ added in v0.5.0
func (s *APIv1) VerifyEmail(ctx context.Context, in *VerifyRequest) (err error)
type ClientOption ¶
ClientOptions allows us to configure the APIv1 client when it is created.
func WithClient ¶
func WithClient(client *http.Client) ClientOption
type Confirmation ¶ added in v0.5.0
type Confirmation struct {
ID string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Token string `json:"token,omitempty"`
Status string `json:"status,omitempty"`
}
Confirmation allows APIs to protect users from unintended actions such as deleting data by including a confirmation token in the request.
type ContactInfo ¶
type ContactInfo struct {
FirstName string `json:"firstName"`
LastName string `json:"lastName"`
Email string `json:"email"`
Country string `json:"country"`
Title string `json:"title"`
Organization string `json:"organization"`
CloudServiceProvider string `json:"cloudServiceProvider"`
}
ContactInfo allows users to sign up for email notifications from SendGrid and is specifically used to allow users to request Ensign Private Beta access.
type LoginRequest ¶ added in v0.3.0
type Member ¶ added in v0.2.0
type Member struct {
ID string `json:"id,omitempty" uri:"id"`
Email string `json:"email"`
Name string `json:"name"`
Picture string `json:"picture"`
Role string `json:"role"`
Status string `json:"status"`
Created string `json:"created,omitempty"`
DateAdded string `json:"date_added,omitempty"`
LastActivity string `json:"last_activity,omitempty"`
}
ID must be omitempty so that project owners can be updated on patch.
type MemberDeleteReply ¶ added in v0.7.0
type MemberInvitePreview ¶ added in v0.5.2
type MemberPage ¶ added in v0.2.0
type Organization ¶ added in v0.4.0
type OrganizationPage ¶ added in v0.5.2
type OrganizationPage struct {
Organizations []*Organization `json:"organizations"`
NextPageToken string `json:"next_page_token,omitempty"`
}
type Project ¶ added in v0.2.0
type Project struct {
ID string `json:"id,omitempty" uri:"id"`
TenantID string `json:"tenant_id,omitempty"`
Name string `json:"name,omitempty"`
Description string `json:"description,omitempty"`
Owner Member `json:"owner,omitempty"`
Status string `json:"status,omitempty"`
ActiveTopics uint64 `json:"active_topics,omitempty"`
DataStorage StatValue `json:"data_storage,omitempty"`
Created string `json:"created,omitempty"`
Modified string `json:"modified,omitempty"`
}
Omitempty should be set on all fields to make sure the project patch endpoints only parse fields that were provided in the JSON request.
type ProjectAPIKeyPage ¶ added in v0.2.0
type ProjectAPIKeyPage struct {
ProjectID string `json:"project_id"`
APIKeys []*APIKeyPreview `json:"api_keys"`
PrevPageToken string `json:"prev_page_token"`
NextPageToken string `json:"next_page_token"`
}
type ProjectPage ¶ added in v0.2.0
type ProjectTopicPage ¶ added in v0.2.0
type RefreshRequest ¶ added in v0.3.0
type RegisterRequest ¶ added in v0.3.0
type RegisterRequest struct {
Name string `json:"name"`
Email string `json:"email"`
Password string `json:"password"`
PwCheck string `json:"pwcheck"`
Organization string `json:"organization"`
Domain string `json:"domain"`
AgreeToS bool `json:"terms_agreement"`
AgreePrivacy bool `json:"privacy_agreement"`
InviteToken string `json:"invite_token"`
}
func (*RegisterRequest) Validate ¶ added in v0.3.0
func (r *RegisterRequest) Validate() error
Validate ensures that all required fields are present without performing complete validation checks such as the password strength.
type Reply ¶
Reply contains standard fields that are used for generic API responses and errors.
func ErrorResponse ¶
func ErrorResponse(err interface{}) Reply
Constructs a new response for an error or returns unsuccessful.
type StatValue ¶ added in v0.5.0
type StatValue struct {
Name string `json:"name"`
Value float64 `json:"value"`
Units string `json:"units,omitempty"`
Percent float64 `json:"percent,omitempty"`
}
StatValue contains a value for a named statistic which is meant to support a variety of statistics endpoints.
type StatusReply ¶
type StatusReply struct {
Status string `json:"status"`
Uptime string `json:"uptime,omitempty"`
Version string `json:"version,omitempty"`
}
Returned on status requests.
type SwitchRequest ¶ added in v0.5.2
type SwitchRequest struct {
OrgID string `json:"org_id"`
}
type TenantClient ¶
type TenantClient interface {
Status(context.Context) (*StatusReply, error)
Register(context.Context, *RegisterRequest) error
Login(context.Context, *LoginRequest) (*AuthReply, error)
Refresh(context.Context, *RefreshRequest) (*AuthReply, error)
Switch(context.Context, *SwitchRequest) (*AuthReply, error)
VerifyEmail(context.Context, *VerifyRequest) error
InvitePreview(context.Context, string) (*MemberInvitePreview, error)
OrganizationList(context.Context, *PageQuery) (*OrganizationPage, error)
OrganizationDetail(context.Context, string) (*Organization, error)
TenantList(context.Context, *PageQuery) (*TenantPage, error)
TenantCreate(context.Context, *Tenant) (*Tenant, error)
TenantDetail(ctx context.Context, id string) (*Tenant, error)
TenantUpdate(context.Context, *Tenant) (*Tenant, error)
TenantDelete(ctx context.Context, id string) error
TenantStats(ctx context.Context, id string) ([]*StatValue, error)
MemberList(context.Context, *PageQuery) (*MemberPage, error)
MemberCreate(context.Context, *Member) (*Member, error)
MemberDetail(ctx context.Context, id string) (*Member, error)
MemberUpdate(context.Context, *Member) (*Member, error)
MemberRoleUpdate(ctx context.Context, id string, in *UpdateRoleParams) (*Member, error)
MemberDelete(ctx context.Context, id string) (*MemberDeleteReply, error)
TenantProjectList(ctx context.Context, id string, in *PageQuery) (*TenantProjectPage, error)
TenantProjectCreate(ctx context.Context, id string, in *Project) (*Project, error)
TenantProjectPatch(ctx context.Context, tenantID, projectID string, in *Project) (*Project, error)
TenantProjectStats(ctx context.Context, id string) ([]*StatValue, error)
ProjectList(context.Context, *PageQuery) (*ProjectPage, error)
ProjectCreate(context.Context, *Project) (*Project, error)
ProjectDetail(ctx context.Context, id string) (*Project, error)
ProjectUpdate(context.Context, *Project) (*Project, error)
ProjectPatch(ctx context.Context, id string, in *Project) (*Project, error)
ProjectDelete(ctx context.Context, id string) error
ProjectTopicList(ctx context.Context, id string, in *PageQuery) (*ProjectTopicPage, error)
ProjectTopicCreate(ctx context.Context, id string, in *Topic) (*Topic, error)
TopicList(context.Context, *PageQuery) (*TopicPage, error)
TopicDetail(ctx context.Context, id string) (*Topic, error)
TopicStats(ctx context.Context, id string) ([]*StatValue, error)
TopicUpdate(context.Context, *Topic) (*Topic, error)
TopicDelete(ctx context.Context, in *Confirmation) (*Confirmation, error)
ProjectAPIKeyList(ctx context.Context, id string, in *PageQuery) (*ProjectAPIKeyPage, error)
ProjectAPIKeyCreate(ctx context.Context, id string, in *APIKey) (*APIKey, error)
APIKeyCreate(context.Context, *APIKey) (*APIKey, error)
APIKeyList(context.Context, *PageQuery) (*APIKeyPage, error)
APIKeyDetail(ctx context.Context, id string) (*APIKey, error)
APIKeyUpdate(context.Context, *APIKey) (*APIKey, error)
APIKeyDelete(ctx context.Context, id string) error
APIKeyPermissions(context.Context) ([]string, error)
}
func New ¶
func New(endpoint string, opts ...ClientOption) (_ TenantClient, err error)
New creates a new API v1 client that implements the Tenant Client interface.
type TenantPage ¶ added in v0.1.1
type TenantProjectPage ¶ added in v0.2.0
type UpdateRoleParams ¶ added in v0.5.2
type UpdateRoleParams struct {
Role string `json:"role"`
}
type VerifyRequest ¶ added in v0.5.0
type VerifyRequest struct {
Token string `json:"token"`
}