assets

package
v0.184.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 8, 2023 License: AGPL-3.0, AGPL-3.0-or-later Imports: 7 Imported by: 30

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GroupReferenceValidation added in v0.15.1

func GroupReferenceValidation(sl validator.StructLevel)

GroupReferenceValidation validates that the given group reference is either a concrete reference or a name matcher

func LabelReferenceValidation added in v0.15.1

func LabelReferenceValidation(sl validator.StructLevel)

LabelReferenceValidation validates that the given label reference is either a concrete reference or a name matcher

func UserReferenceValidation added in v0.134.0

func UserReferenceValidation(sl validator.StructLevel)

UserReferenceValidation validates that the given user reference is either a concrete reference or an email matcher

Types

type Channel added in v0.15.0

type Channel interface {
	UUID() ChannelUUID
	Name() string
	Address() string
	Schemes() []string
	Roles() []ChannelRole
	Parent() *ChannelReference
	Country() envs.Country
	MatchPrefixes() []string
	AllowInternational() bool
}

Channel is something that can send/receive messages.

{
  "uuid": "14782905-81a6-4910-bc9f-93ad287b23c3",
  "name": "My Android",
  "address": "+593979011111",
  "schemes": ["tel"],
  "roles": ["send", "receive"],
  "country": "EC"
}

@asset channel

type ChannelReference added in v0.15.1

type ChannelReference struct {
	UUID ChannelUUID `json:"uuid" validate:"required,uuid"`
	Name string      `json:"name"`
}

ChannelReference is used to reference a channel

func NewChannelReference added in v0.15.1

func NewChannelReference(uuid ChannelUUID, name string) *ChannelReference

NewChannelReference creates a new channel reference with the given UUID and name

func (*ChannelReference) GenericUUID added in v0.39.4

func (r *ChannelReference) GenericUUID() uuids.UUID

GenericUUID returns the untyped UUID

func (*ChannelReference) Identity added in v0.26.0

func (r *ChannelReference) Identity() string

Identity returns the unique identity of the asset

func (*ChannelReference) String added in v0.26.0

func (r *ChannelReference) String() string

func (*ChannelReference) Type added in v0.26.0

func (r *ChannelReference) Type() string

Type returns the name of the asset type

func (*ChannelReference) Variable added in v0.29.0

func (r *ChannelReference) Variable() bool

Variable returns whether this a variable (vs concrete) reference

type ChannelRole added in v0.15.0

type ChannelRole string

ChannelRole is a role that a channel can perform

const (
	ChannelRoleSend    ChannelRole = "send"
	ChannelRoleReceive ChannelRole = "receive"
	ChannelRoleCall    ChannelRole = "call"
	ChannelRoleAnswer  ChannelRole = "answer"
	ChannelRoleUSSD    ChannelRole = "ussd"
)

different roles that channels can perform

type ChannelUUID added in v0.15.0

type ChannelUUID uuids.UUID

ChannelUUID is the UUID of a channel

type Classifier added in v0.51.0

type Classifier interface {
	UUID() ClassifierUUID
	Name() string
	Type() string
	Intents() []string
}

Classifier is an NLU classifier.

{
  "uuid": "37657cf7-5eab-4286-9cb0-bbf270587bad",
  "name": "Booking",
  "type": "wit",
  "intents": ["book_flight", "book_hotel"]
}

@asset classifier

type ClassifierReference added in v0.51.0

type ClassifierReference struct {
	UUID ClassifierUUID `json:"uuid" validate:"required,uuid"`
	Name string         `json:"name"`
}

ClassifierReference is used to reference a classifier

func NewClassifierReference added in v0.51.0

func NewClassifierReference(uuid ClassifierUUID, name string) *ClassifierReference

NewClassifierReference creates a new classifier reference with the given UUID and name

func (*ClassifierReference) GenericUUID added in v0.51.0

func (r *ClassifierReference) GenericUUID() uuids.UUID

GenericUUID returns the untyped UUID

func (*ClassifierReference) Identity added in v0.51.0

func (r *ClassifierReference) Identity() string

Identity returns the unique identity of the asset

func (*ClassifierReference) String added in v0.51.0

func (r *ClassifierReference) String() string

func (*ClassifierReference) Type added in v0.51.0

func (r *ClassifierReference) Type() string

Type returns the name of the asset type

func (*ClassifierReference) Variable added in v0.51.0

func (r *ClassifierReference) Variable() bool

Variable returns whether this a variable (vs concrete) reference

type ClassifierUUID added in v0.51.0

type ClassifierUUID uuids.UUID

ClassifierUUID is the UUID of an NLU classifier

type Field added in v0.15.0

type Field interface {
	UUID() FieldUUID
	Key() string
	Name() string
	Type() FieldType
}

Field is a custom contact property.

{
  "uuid": "d66a7823-eada-40e5-9a3a-57239d4690bf",
  "key": "gender",
  "name": "Gender",
  "type": "text"
}

@asset field

type FieldReference added in v0.15.1

type FieldReference struct {
	Key  string `json:"key" validate:"required"`
	Name string `json:"name"`
}

FieldReference is a reference to a field

func NewFieldReference added in v0.15.1

func NewFieldReference(key string, name string) *FieldReference

NewFieldReference creates a new field reference with the given key and name

func (*FieldReference) Identity added in v0.26.0

func (r *FieldReference) Identity() string

Identity returns the unique identity of the asset

func (*FieldReference) String added in v0.26.0

func (r *FieldReference) String() string

func (*FieldReference) Type added in v0.26.0

func (r *FieldReference) Type() string

Type returns the name of the asset type

func (*FieldReference) Variable added in v0.29.0

func (r *FieldReference) Variable() bool

Variable returns whether this a variable (vs concrete) reference

type FieldType added in v0.15.0

type FieldType string

FieldType is the data type of values for each field

const (
	FieldTypeText     FieldType = "text"
	FieldTypeNumber   FieldType = "number"
	FieldTypeDatetime FieldType = "datetime"
	FieldTypeWard     FieldType = "ward"
	FieldTypeDistrict FieldType = "district"
	FieldTypeState    FieldType = "state"
)

field value types

type FieldUUID added in v0.46.0

type FieldUUID uuids.UUID

FieldUUID is the UUID of a field

type Flow added in v0.15.0

type Flow interface {
	UUID() FlowUUID
	Name() string
	Definition() json.RawMessage
}

Flow is graph of nodes with actions and routers.

{
  "uuid": "14782905-81a6-4910-bc9f-93ad287b23c3",
  "name": "Registration",
  "definition": {
    "nodes": []
  }
}

@asset flow

type FlowReference added in v0.15.1

type FlowReference struct {
	UUID     FlowUUID `json:"uuid" validate:"required,uuid4"`
	Name     string   `json:"name"`
	Revision int      `json:"revision,omitempty"`
}

FlowReference is used to reference a flow from another flow

func NewFlowReference added in v0.15.1

func NewFlowReference(uuid FlowUUID, name string) *FlowReference

NewFlowReference creates a new flow reference with the given UUID and name

func NewFlowReferenceWithRevision added in v0.174.0

func NewFlowReferenceWithRevision(uuid FlowUUID, name string, revision int) *FlowReference

NewFlowReferenceWithRevision creates a new flow reference with the given UUID, name and revision number

func (*FlowReference) GenericUUID added in v0.39.4

func (r *FlowReference) GenericUUID() uuids.UUID

GenericUUID returns the untyped UUID

func (*FlowReference) Identity added in v0.26.0

func (r *FlowReference) Identity() string

Identity returns the unique identity of the asset

func (*FlowReference) String added in v0.26.0

func (r *FlowReference) String() string

func (*FlowReference) Type added in v0.26.0

func (r *FlowReference) Type() string

Type returns the name of the asset type

func (*FlowReference) Variable added in v0.29.0

func (r *FlowReference) Variable() bool

Variable returns whether this a variable (vs concrete) reference

type FlowUUID added in v0.15.0

type FlowUUID uuids.UUID

FlowUUID is the UUID of a flow

type Global added in v0.57.0

type Global interface {
	Key() string
	Name() string
	Value() string
}

Global is a named constant.

{
  "key": "organization_name",
  "name": "Organization Name",
  "value": "U-Report"
}

@asset global

type GlobalReference added in v0.57.0

type GlobalReference struct {
	Key  string `json:"key" validate:"required"`
	Name string `json:"name"`
}

GlobalReference is a reference to a global

func NewGlobalReference added in v0.57.0

func NewGlobalReference(key string, name string) *GlobalReference

NewGlobalReference creates a new global reference with the given key and name

func (*GlobalReference) Identity added in v0.57.0

func (r *GlobalReference) Identity() string

Identity returns the unique identity of the asset

func (*GlobalReference) String added in v0.57.0

func (r *GlobalReference) String() string

func (*GlobalReference) Type added in v0.57.0

func (r *GlobalReference) Type() string

Type returns the name of the asset type

func (*GlobalReference) Variable added in v0.57.0

func (r *GlobalReference) Variable() bool

Variable returns whether this a variable (vs concrete) reference

type Group added in v0.15.0

type Group interface {
	UUID() GroupUUID
	Name() string
	Query() string
}

Group is a set of contacts which can be added to and removed from manually, or based on a query.

{
  "uuid": "14782905-81a6-4910-bc9f-93ad287b23c3",
  "name": "Youth",
  "query": "age <= 18"
}

@asset group

type GroupReference added in v0.15.1

type GroupReference struct {
	UUID      GroupUUID `json:"uuid,omitempty" validate:"omitempty,uuid4"`
	Name      string    `json:"name,omitempty"`
	NameMatch string    `json:"name_match,omitempty" engine:"evaluated"`
}

GroupReference is used to reference a group

func NewGroupReference added in v0.15.1

func NewGroupReference(uuid GroupUUID, name string) *GroupReference

NewGroupReference creates a new group reference with the given UUID and name

func NewVariableGroupReference added in v0.15.1

func NewVariableGroupReference(nameMatch string) *GroupReference

NewVariableGroupReference creates a new group reference from the given templatized name match

func (*GroupReference) GenericUUID added in v0.39.4

func (r *GroupReference) GenericUUID() uuids.UUID

GenericUUID returns the untyped UUID

func (*GroupReference) Identity added in v0.26.0

func (r *GroupReference) Identity() string

Identity returns the unique identity of the asset

func (*GroupReference) String added in v0.26.0

func (r *GroupReference) String() string

func (*GroupReference) Type added in v0.26.0

func (r *GroupReference) Type() string

Type returns the name of the asset type

func (*GroupReference) Variable added in v0.29.0

func (r *GroupReference) Variable() bool

Variable returns whether this a variable (vs concrete) reference

type GroupUUID added in v0.15.0

type GroupUUID uuids.UUID

GroupUUID is the UUID of a group

type Label added in v0.15.0

type Label interface {
	UUID() LabelUUID
	Name() string
}

Label is an organizational tag that can be applied to a message.

{
  "uuid": "14782905-81a6-4910-bc9f-93ad287b23c3",
  "name": "Spam"
}

@asset label

type LabelReference added in v0.15.1

type LabelReference struct {
	UUID      LabelUUID `json:"uuid,omitempty" validate:"omitempty,uuid4"`
	Name      string    `json:"name,omitempty"`
	NameMatch string    `json:"name_match,omitempty" engine:"evaluated"`
}

LabelReference is used to reference a label

func NewLabelReference added in v0.15.1

func NewLabelReference(uuid LabelUUID, name string) *LabelReference

NewLabelReference creates a new label reference with the given UUID and name

func NewVariableLabelReference added in v0.15.1

func NewVariableLabelReference(nameMatch string) *LabelReference

NewVariableLabelReference creates a new label reference from the given templatized name match

func (*LabelReference) GenericUUID added in v0.39.4

func (r *LabelReference) GenericUUID() uuids.UUID

GenericUUID returns the untyped UUID

func (*LabelReference) Identity added in v0.26.0

func (r *LabelReference) Identity() string

Identity returns the unique identity of the asset

func (*LabelReference) String added in v0.26.0

func (r *LabelReference) String() string

func (*LabelReference) Type added in v0.26.0

func (r *LabelReference) Type() string

Type returns the name of the asset type

func (*LabelReference) Variable added in v0.29.0

func (r *LabelReference) Variable() bool

Variable returns whether this a variable (vs concrete) reference

type LabelUUID added in v0.15.0

type LabelUUID uuids.UUID

LabelUUID is the UUID of a label

type LocationHierarchy added in v0.15.0

type LocationHierarchy interface {
	FindByPath(path envs.LocationPath) *envs.Location
	FindByName(name string, level envs.LocationLevel, parent *envs.Location) []*envs.Location
}

LocationHierarchy is a searchable hierarchy of locations.

{
  "name": "Rwanda",
  "aliases": ["Ruanda"],
  "children": [
    {
      "name": "Kigali City",
      "aliases": ["Kigali", "Kigari"],
      "children": [
        {
          "name": "Gasabo",
          "children": [
            {
              "id": "575743222",
              "name": "Gisozi"
            },
            {
              "id": "457378732",
              "name": "Ndera"
            }
          ]
        },
        {
          "name": "Nyarugenge",
          "children": []
        }
      ]
    },
    {
      "name": "Eastern Province"
    }
  ]
}

@asset location

type MissingCallback added in v0.26.0

type MissingCallback func(Reference, error)

MissingCallback is callback to be invoked when an asset is missing

var IgnoreMissing MissingCallback = func(Reference, error) {}

IgnoreMissing does nothing if an asset is reported missing

var PanicOnMissing MissingCallback = func(a Reference, err error) { panic(fmt.Sprintf("missing asset: %s, due to: %s", a, err)) }

PanicOnMissing panics if an asset is reported missing

type Reference added in v0.26.0

type Reference interface {
	fmt.Stringer

	Type() string
	Identity() string
	Variable() bool
}

Reference is interface for all reference types

type Resthook added in v0.15.0

type Resthook interface {
	Slug() string
	Subscribers() []string
}

Resthook is a set of URLs which are subscribed to the named event.

{
  "slug": "new-registration",
  "subscribers": [
    "http://example.com/record.php?@contact.uuid"
  ]
}

@asset resthook

type Source added in v0.48.1

type Source interface {
	Channels() ([]Channel, error)
	Classifiers() ([]Classifier, error)
	Fields() ([]Field, error)
	FlowByUUID(FlowUUID) (Flow, error)
	FlowByName(string) (Flow, error)
	Globals() ([]Global, error)
	Groups() ([]Group, error)
	Labels() ([]Label, error)
	Locations() ([]LocationHierarchy, error)
	Resthooks() ([]Resthook, error)
	Templates() ([]Template, error)
	Ticketers() ([]Ticketer, error)
	Topics() ([]Topic, error)
	Users() ([]User, error)
}

Source is a source of assets

type Template added in v0.32.0

type Template interface {
	UUID() TemplateUUID
	Name() string
	Translations() []TemplateTranslation
}

Template is a message template, currently only used by WhatsApp channels

{
  "name": "revive-issue",
  "uuid": "14782905-81a6-4910-bc9f-93ad287b23c3",
  "translations": [
    {
       "locale": "eng-US",
       "content": "Hi {{1}}, are you still experiencing your issue?",
       "channel": {
         "uuid": "cf26be4c-875f-4094-9e08-162c3c9dcb5b",
         "name": "Twilio Channel"
       }
    },
    {
       "locale": "fra",
       "content": "Bonjour {{1}}",
       "channel": {
         "uuid": "cf26be4c-875f-4094-9e08-162c3c9dcb5b",
         "name": "Twilio Channel"
       }
    }
  ]
}

@asset template

type TemplateReference added in v0.32.0

type TemplateReference struct {
	UUID TemplateUUID `json:"uuid" validate:"required,uuid"`
	Name string       `json:"name"`
}

TemplateReference is used to reference a Template

func NewTemplateReference added in v0.38.1

func NewTemplateReference(uuid TemplateUUID, name string) *TemplateReference

NewTemplateReference creates a new template reference with the given UUID and name

func (*TemplateReference) GenericUUID added in v0.39.4

func (r *TemplateReference) GenericUUID() uuids.UUID

GenericUUID returns the untyped UUID

func (*TemplateReference) Identity added in v0.32.0

func (r *TemplateReference) Identity() string

Identity returns the unique identity of the asset

func (*TemplateReference) String added in v0.32.0

func (r *TemplateReference) String() string

func (*TemplateReference) Type added in v0.32.0

func (r *TemplateReference) Type() string

Type returns the name of the asset type

func (*TemplateReference) Variable added in v0.32.0

func (r *TemplateReference) Variable() bool

Variable returns whether this a variable (vs concrete) reference

type TemplateTranslation added in v0.32.0

type TemplateTranslation interface {
	Content() string
	Locale() envs.Locale
	Namespace() string
	VariableCount() int
	Channel() ChannelReference
}

TemplateTranslation represents a single translation for a specific template and channel

type TemplateUUID added in v0.32.0

type TemplateUUID uuids.UUID

TemplateUUID is the UUID of a template

type Ticketer added in v0.86.0

type Ticketer interface {
	UUID() TicketerUUID
	Name() string
	Type() string
}

Ticketer is a system which can open or close tickets

{
  "uuid": "37657cf7-5eab-4286-9cb0-bbf270587bad",
  "name": "Support Tickets",
  "type": "mailgun"
}

@asset ticketer

type TicketerReference added in v0.86.0

type TicketerReference struct {
	UUID TicketerUUID `json:"uuid" validate:"required,uuid"`
	Name string       `json:"name"`
}

TicketerReference is used to reference a ticketer

func NewTicketerReference added in v0.86.0

func NewTicketerReference(uuid TicketerUUID, name string) *TicketerReference

NewTicketerReference creates a new classifier reference with the given UUID and name

func (*TicketerReference) GenericUUID added in v0.86.0

func (r *TicketerReference) GenericUUID() uuids.UUID

GenericUUID returns the untyped UUID

func (*TicketerReference) Identity added in v0.86.0

func (r *TicketerReference) Identity() string

Identity returns the unique identity of the asset

func (*TicketerReference) String added in v0.86.0

func (r *TicketerReference) String() string

func (*TicketerReference) Type added in v0.86.0

func (r *TicketerReference) Type() string

Type returns the name of the asset type

func (*TicketerReference) Variable added in v0.86.0

func (r *TicketerReference) Variable() bool

Variable returns whether this a variable (vs concrete) reference

type TicketerUUID added in v0.86.0

type TicketerUUID uuids.UUID

TicketerUUID is the UUID of a ticketer

type Topic added in v0.132.0

type Topic interface {
	UUID() TopicUUID
	Name() string
}

Topic categorizes tickets

{
  "uuid": "cd48bd11-08b9-44e3-9778-8e26adf08a7a",
  "name": "Weather"
}

@asset topic

type TopicReference added in v0.132.0

type TopicReference struct {
	UUID TopicUUID `json:"uuid" validate:"required,uuid"`
	Name string    `json:"name"`
}

TopicReference is used to reference a topic

func NewTopicReference added in v0.132.0

func NewTopicReference(uuid TopicUUID, name string) *TopicReference

NewTopicReference creates a new topic reference with the given UUID and name

func (*TopicReference) GenericUUID added in v0.132.0

func (r *TopicReference) GenericUUID() uuids.UUID

GenericUUID returns the untyped UUID

func (*TopicReference) Identity added in v0.132.0

func (r *TopicReference) Identity() string

Identity returns the unique identity of the asset

func (*TopicReference) String added in v0.132.0

func (r *TopicReference) String() string

func (*TopicReference) Type added in v0.132.0

func (r *TopicReference) Type() string

Type returns the name of the asset type

func (*TopicReference) Variable added in v0.132.0

func (r *TopicReference) Variable() bool

Variable returns whether this a variable (vs concrete) reference

type TopicUUID added in v0.132.0

type TopicUUID uuids.UUID

TopicUUID is the UUID of a topic

type TypedReference added in v0.71.3

type TypedReference struct {
	Reference Reference `json:"-"`
	Type      string    `json:"type"`
}

TypedReference is a utility struct for when we need to serialize a reference with a type

func NewTypedReference added in v0.71.3

func NewTypedReference(r Reference) TypedReference

NewTypedReference creates a new typed reference

func (TypedReference) MarshalJSON added in v0.71.3

func (r TypedReference) MarshalJSON() ([]byte, error)

type UUIDReference added in v0.39.4

type UUIDReference interface {
	Reference
	GenericUUID() uuids.UUID
}

UUIDReference is interface for all reference types that contain a UUID

type User added in v0.124.0

type User interface {
	Email() string
	Name() string
}

User is an person who can trigger flows or be assigned tickets etc.

{
  "email": "bob@nyaruka.com",
  "name": "Bob"
}

@asset user

type UserReference added in v0.124.0

type UserReference struct {
	Email      string `json:"email,omitempty" validate:"omitempty,email"`
	Name       string `json:"name,omitempty"`
	EmailMatch string `json:"email_match,omitempty" engine:"evaluated"`
}

UserReference is used to reference a user

func NewUserReference added in v0.124.0

func NewUserReference(email, name string) *UserReference

NewUserReference creates a new user reference with the given key and name

func NewVariableUserReference added in v0.134.0

func NewVariableUserReference(emailMatch string) *UserReference

NewVariableUserReference creates a new user reference from the given templatized email match

func (*UserReference) Identity added in v0.124.0

func (r *UserReference) Identity() string

Identity returns the unique identity of the asset

func (*UserReference) String added in v0.124.0

func (r *UserReference) String() string

func (*UserReference) Type added in v0.124.0

func (r *UserReference) Type() string

Type returns the name of the asset type

func (*UserReference) UnmarshalJSON added in v0.124.0

func (r *UserReference) UnmarshalJSON(data []byte) error

UmarshalJSON unmarshals this object from JSON

func (*UserReference) Variable added in v0.124.0

func (r *UserReference) Variable() bool

Variable returns whether this a variable (vs concrete) reference

Directories

Path Synopsis
Package static is an implementation of Source which loads assets from a static JSON file.
Package static is an implementation of Source which loads assets from a static JSON file.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL