60 lines
1.5 KiB
Go
60 lines
1.5 KiB
Go
package serviceadapter
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// Upstream defines an upstream target.
|
|
type Upstream struct {
|
|
URL string `json:"url"`
|
|
TimeoutSeconds int32 `json:"timeoutSeconds"`
|
|
}
|
|
|
|
// Auth defines authentication requirements.
|
|
type Auth struct {
|
|
Required bool `json:"required"`
|
|
Capability string `json:"capability,omitempty"`
|
|
}
|
|
|
|
// Method defines an HTTP method endpoint.
|
|
type Method struct {
|
|
Verb string `json:"verb"`
|
|
UpstreamPath string `json:"upstreamPath"`
|
|
RequestSchema string `json:"requestSchema,omitempty"`
|
|
ResponseSchema string `json:"responseSchema,omitempty"`
|
|
Auth *Auth `json:"auth,omitempty"`
|
|
}
|
|
|
|
// Resource defines a resource with multiple methods.
|
|
type Resource struct {
|
|
Name string `json:"name"`
|
|
Methods []Method `json:"methods"`
|
|
Auth *Auth `json:"auth,omitempty"`
|
|
}
|
|
|
|
// Spec is the ServiceAdapter spec.
|
|
type Spec struct {
|
|
ServiceName string `json:"serviceName"`
|
|
Upstream Upstream `json:"upstream"`
|
|
Auth Auth `json:"auth"`
|
|
Retryable bool `json:"retryable,omitempty"`
|
|
Resources []Resource `json:"resources"`
|
|
}
|
|
|
|
// Status is the ServiceAdapter status.
|
|
type Status struct {
|
|
Ready bool `json:"ready,omitempty"`
|
|
Error string `json:"error,omitempty"`
|
|
LastSyncTime *time.Time `json:"lastSyncTime,omitempty"`
|
|
}
|
|
|
|
// ServiceAdapter is a gateway service adapter.
|
|
type ServiceAdapter struct {
|
|
Name string // namespace/name
|
|
Namespace string
|
|
ServiceName string
|
|
Spec Spec
|
|
Status Status
|
|
CreatedAt time.Time
|
|
}
|