amocrm

package module
v1.0.1 Latest Latest
Warning

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

Go to latest
Published: Sep 5, 2020 License: MIT Imports: 13 Imported by: 0

README

AmoCRM Go Client

Examples

import(
    "fmt"

    "github.com/ogi4i/amocrm-client"
)
//Connect AMO
amo, err := amocrm.New("https://example.amocrm.ru", "example@gmail.com", "453af17f1fdsfsd7792aec4676690567")

// Search contact
contacts, err := amo.GetContacts(amocrm.ContactRequestParams{Query: "79999999999"})
fmt.Println(contacts)
fmt.Println(contacts[0].ID)

//Add note
resp, err := amo.AddNote(amocrm.Note{ElementID: contacts[0].ID, ElementType: 1, NoteType: 4, Text: "test4"})

// Get Account info
account, err := amo.GetAccount(amocrm.AccountRequestParams{With: "users"})

//Add lead
resp, err := amo.AddLead(amocrm.Lead{Name: "Call to XXXXX", StatusID: "12345687", ResponsibleUserID: "123456", ContactsID: []string{"24248411"}})

//Get Pipelines
pipelines, err := amo.GetPipelines(amocrm.PipelineRequestParams{ID: ""})

Documentation

Index

Constants

View Source
const (
	AccountNotFoundCode          = 101
	BodyMustBeJSONCode           = 102
	InvalidRequestParametersCode = 103
	InvalidRequestMethodCode     = 104

	InvalidCredentialsCode    = 110
	CaptchaInputRequiredCode  = 111
	DisabledAccountCode       = 112
	UnauthorizedIPAddressCode = 113

	ContactAddEmptyArrayCode                = 201
	ContactAddInsufficientAccessRightsCode  = 202
	ContactAddCustomFieldsInternalErrorCode = 203
	ContactAddCustomFieldNotFoundCode       = 204
	ContactAddNotProcessedCode              = 205

	ContactsEmptyRequestCode         = 206
	ContactsInvalidRequestMethodCode = 207

	ContactUpdateEmptyArrayCode                 = 208
	ContactUpdatedRequiredParametersMissingCode = 209
	ContactUpdateCustomFieldsInternalErrorCode  = 210
	ContactUpdateCustomFieldNotFoundCode        = 211
	ContactUpdateNotProcessedCode               = 212

	LeadAddEmptyArrayCode                   = 213
	LeadEmptyRequestCode                    = 214
	LeadInvalidRequestMethodCode            = 215
	LeadUpdateEmptyArrayCode                = 216
	LeadUpdateRequiredParametersMissingCode = 217

	ContactGetSearchErrorCode = 219

	LeadCustomFieldInvalidIDCode = 240

	TooManyLinkedEntitiesCode = 330

	InvalidRequestCode          = 400
	AccountNotFoundOnServerCode = 401
	SubscriptionExpireCode      = 402
	AccountBlockedCode          = 403

	RateLimitExceededCode = 429

	NoContentCode = 2002

	AccountNotFound          = "account_not_found"
	BodyMustBeJSON           = "body_must_be_json"
	InvalidRequestParameters = "invalid_request_params"
	InvalidRequestMethod     = "invalid_request_method"

	InvalidCredentials    = "invalid_credentials"
	CaptchaInputRequired  = "captcha_input_required"
	DisabledAccount       = "disabled_account"
	UnauthorizedIPAddress = "unauthorized_ip_address"

	ContactAddEmptyArray                = "contact_add_empty_array"
	ContactAddInsufficientAccessRights  = "contact_add_insufficient_access_rights"
	ContactAddCustomFieldsInternalError = "contact_add_custom_fields_internal_error"
	ContactAddCustomFieldNotFound       = "contact_add_custom_field_not_found"
	ContactAddNotProcessed              = "contact_add_not_processed"

	ContactsEmptyRequest         = "contacts_empty_request"
	ContactsInvalidRequestMethod = "contacts_invalid_request_method"

	ContactUpdateEmptyArray                 = "contact_update_empty_array"
	ContactUpdatedRequiredParametersMissing = "contact_update_required_params_missing"
	ContactUpdateCustomFieldsInternalError  = "contact_update_custom_fields_internal_error"
	ContactUpdateCustomFieldNotFound        = "contact_update_custom_field_not_found"
	ContactUpdateNotProcessed               = "contact_update_not_processed"

	LeadAddEmptyArray                   = "lead_add_empty_array"
	LeadEmptyRequest                    = "leads_empty_request"
	LeadInvalidRequestMethod            = "leads_invalid_request_method"
	LeadUpdateEmptyArray                = "lead_update_empty_array"
	LeadUpdateRequiredParametersMissing = "lead_update_required_params_missing"

	ContactGetSearchError = "contact_get_search_error"

	LeadCustomFieldInvalidID = "leads_custom_field_invalid_id"

	TooManyLinkedEntities = "too_many_linked_entities"

	InvalidRequest          = "invalid_request"
	AccountNotFoundOnServer = "account_not_found_on_server"
	SubscriptionExpire      = "subscription_expired"
	AccountBlocked          = "account_blocked"

	RateLimitExceeded = "rate_limit_exceeded"

	NoContent = "no_content"
)
View Source
const (
	NoTasksLeadFilter         LeadRequestTasksFilter = 1
	InProgressTasksLeadFilter LeadRequestTasksFilter = 2

	ActiveLeadsLeadFilter LeadRequestActiveFilter = 1
)
View Source
const (
	ContactTaskElementType  TaskElementType = 1
	LeadTaskElementType     TaskElementType = 2
	CompanyTaskElementType  TaskElementType = 3
	CustomerTaskElementType TaskElementType = 12

	ContactTaskType  TaskRequestType = "contact"
	LeadTaskType     TaskRequestType = "lead"
	CompanyTaskType  TaskRequestType = "company"
	CustomerTaskType TaskRequestType = "customer"

	CompletedStatusTaskFilter  TaskRequestStatusFilter = 1
	InProgressStatusTaskFilter TaskRequestStatusFilter = 0
)

Variables

This section is empty.

Functions

This section is empty.

Types

type AccountRequestParams

type AccountRequestParams struct {
	With []AccountWithType `validate:"omitempty,dive,oneof=custom_fields users messenger notifications pipelines groups note_types task_types"`
}

type AccountResponse

type AccountResponse struct {
	ID             int    `json:"id,omitempty" validate:"required,omitempty"`
	Name           string `json:"name" validate:"required"`
	Subdomain      string `json:"subdomain" validate:"required"`
	Currency       string `json:"currency" validate:"required"`
	Timezone       string `json:"timezone" validate:"required"`
	TimezoneOffset string `json:"timezone_offset" validate:"required"`
	Language       string `json:"language" validate:"required"`
	DatePattern    struct {
		Date     string `json:"date" validate:"required"`
		Time     string `json:"time" validate:"required"`
		DateTime string `json:"date_time" validate:"required"`
		TimeFull string `json:"time_full" validate:"required"`
	} `json:"date_pattern" validate:"required"`
	CurrentUser int `json:"current_user" validate:"required"`
	Embedded    struct {
		Users        map[string]*User `json:"users" validate:"omitempty,dive,required"`
		CustomFields struct {
			Contacts  map[string]*CustomFieldInfo `json:"contacts" validate:"omitempty,dive,required"`
			Leads     map[string]*CustomFieldInfo `json:"leads,omitempty" validate:"omitempty,dive,required"`
			Companies map[string]*CustomFieldInfo `json:"companies,omitempty" validate:"omitempty,dive,required"`
			Customers []interface{}               `json:"customers,omitempty" validate:"omitempty,dive,required"`
		} `json:"custom_fields" validate:"omitempty"`
		NoteTypes map[string]*NoteType `json:"note_types" validate:"omitempty,dive,required"`
		Groups    map[string]*Group    `json:"groups" validate:"omitempty,dive,required"`
		TaskTypes map[string]*TaskType `json:"task_types" validate:"omitempty,dive,required"`
		Pipelines map[string]*Pipeline `json:"pipelines" validate:"omitempty,dive,required"`
	} `json:"_embedded" validate:"omitempty"`
}

type AccountWithType

type AccountWithType string
const (
	AccountWithCustomFields  AccountWithType = "custom_fields"
	AccountWithUsers         AccountWithType = "users"
	AccountWithMessenger     AccountWithType = "messenger"
	AccountWithNotifications AccountWithType = "notifications"
	AccountWithPipelines     AccountWithType = "pipelines"
	AccountWithGroups        AccountWithType = "groups"
	AccountWithNoteTypes     AccountWithType = "note_types"
	AccountWithTaskTypes     AccountWithType = "task_types"
)

type AddContactRequest

type AddContactRequest struct {
	Add []*ContactAdd `json:"add" validate:"required,dive,required"`
}

type AddLeadRequest

type AddLeadRequest struct {
	Add []*LeadAdd `json:"add" validate:"required,dive,required"`
}

type AddNoteRequest

type AddNoteRequest struct {
	Add []*NoteAdd `json:"add" validate:"required"`
}

type AddTaskRequest

type AddTaskRequest struct {
	Add []*TaskAdd `json:"add" validate:"required,dive,required"`
}

type AmoError

type AmoError struct {
	ErrorDetail string `json:"error" validate:"required"`
	ErrorCode   int    `json:"error_code,string" validate:"required"`
}

func (*AmoError) Error

func (e *AmoError) Error() string

type AuthAccount

type AuthAccount struct {
	ID        int    `json:"id" validate:"required"`
	Name      string `json:"name" validate:"required"`
	Subdomain string `json:"subdomain" validate:"required"`
	Language  string `json:"language" validate:"required"`
	Timezone  string `json:"timezone" validate:"required"`
}

type AuthResponse

type AuthResponse struct {
	Response struct {
		Auth       bool           `json:"auth" validate:"required"`
		Accounts   []*AuthAccount `json:"accounts" validate:"omitempty,dive,required"`
		User       *AuthUser      `json:"user" validate:"required"`
		ServerTime int            `json:"server_time" validate:"required"`
		Error      string         `json:"error" validate:"omitempty"`
	} `json:"response" validate:"required"`
}

type AuthUser

type AuthUser struct {
	ID       int    `json:"id" validate:"required"`
	Language string `json:"language" validate:"required"`
}

type Client

type Client struct {
	// contains filtered or unexported fields
}

func NewClient

func NewClient(accountURL string, login string, hash string, opts ...ClientOption) (*Client, error)

func (*Client) AddContact

func (c *Client) AddContact(ctx context.Context, contact *ContactAdd) (int, error)

func (*Client) AddLead

func (c *Client) AddLead(ctx context.Context, lead *LeadAdd) (int, error)

func (*Client) AddNote

func (c *Client) AddNote(ctx context.Context, note *NoteAdd) (int, error)

func (*Client) AddTask

func (c *Client) AddTask(ctx context.Context, task *TaskAdd) (int, error)

func (*Client) Authorize

func (c *Client) Authorize(ctx context.Context) error

func (*Client) DownloadAttachment

func (c *Client) DownloadAttachment(ctx context.Context, attachment string) ([]byte, error)

func (*Client) GetAccount

func (c *Client) GetAccount(ctx context.Context, reqParams *AccountRequestParams) (*AccountResponse, error)

func (*Client) GetContacts

func (c *Client) GetContacts(ctx context.Context, reqParams *ContactRequestParams) ([]*Contact, error)

func (*Client) GetLeads

func (c *Client) GetLeads(ctx context.Context, reqParams *LeadRequestParams) ([]*Lead, error)

func (*Client) GetNotes

func (c *Client) GetNotes(ctx context.Context, reqParams *NoteRequestParams) ([]*Note, error)

func (*Client) GetPipelines

func (c *Client) GetPipelines(ctx context.Context, reqParams *PipelineRequestParams) (map[string]*Pipeline, error)

func (*Client) GetTasks

func (c *Client) GetTasks(ctx context.Context, reqParams *TaskRequestParams) ([]*Task, error)

func (*Client) UpdateContact

func (c *Client) UpdateContact(ctx context.Context, contact *ContactUpdate) (int, error)

func (*Client) UpdateLead

func (c *Client) UpdateLead(ctx context.Context, lead *LeadUpdate) (int, error)

func (*Client) UpdateTask

func (c *Client) UpdateTask(ctx context.Context, task *TaskUpdate) (int, error)

type ClientOption

type ClientOption func(c *Client)

func WithHTTPTimeout

func WithHTTPTimeout(d time.Duration) ClientOption

type Contact

type Contact struct {
	ID                int    `json:"id" validate:"required"`
	Name              string `json:"name" validate:"required"`
	ResponsibleUserID int    `json:"responsible_user_id" validate:"required"`
	CreatedBy         int    `json:"created_by" validate:"required"`
	CreatedAt         int    `json:"created_at" validate:"required"`
	UpdatedAt         int    `json:"updated_at" validate:"required"`
	AccountID         int    `json:"account_id" validate:"required"`
	UpdatedBy         int    `json:"updated_by" validate:"required"`
	GroupID           int    `json:"group_id,omitempty" validate:"omitempty"`
	Company           struct {
		ID    int    `json:"id" validate:"omitempty"`
		Name  string `json:"name" validate:"omitempty"`
		Links *Links `json:"_links" validate:"omitempty"`
	} `json:"company,omitempty" validate:"omitempty"`
	Leads struct {
		ID    []int  `json:"id" validate:"omitempty,dive,required"`
		Links *Links `json:"_links" validate:"omitempty"`
	} `json:"leads,omitempty" validate:"omitempty"`
	ClosestTaskAt int            `json:"closest_task_at,omitempty" validate:"omitempty"`
	Tags          []*Tag         `json:"tags,omitempty" validate:"omitempty,dive,required"`
	CustomFields  []*CustomField `json:"custom_fields,omitempty" validate:"omitempty,dive,required"`
	Customers     struct {
	} `json:"customers,omitempty" validate:"omitempty"`
	Links *Links `json:"_links" validate:"required"`
}

type ContactAdd

type ContactAdd struct {
	Name              string               `json:"name" validate:"required"`
	CreatedAt         int                  `json:"created_at,string,omitempty" validate:"omitempty"`
	UpdatedAt         int                  `json:"updated_at,string,omitempty" validate:"omitempty"`
	ResponsibleUserID int                  `json:"responsible_user_id,string,omitempty" validate:"omitempty"`
	CreatedBy         int                  `json:"created_by,string,omitempty" validate:"omitempty"`
	CompanyName       string               `json:"company_name,omitempty" validate:"omitempty"`
	Tags              string               `json:"tags,omitempty" validate:"omitempty"`
	LeadsID           []string             `json:"leads_id,omitempty" validate:"omitempty,gt=0,dive,required"`
	CustomersID       int                  `json:"customers_id,string,omitempty" validate:"omitempty"`
	CompanyID         int                  `json:"company_id,string,omitempty" validate:"omitempty"`
	CustomFields      []*UpdateCustomField `json:"custom_fields,omitempty" validate:"omitempty,gt=0,required"`
}

type ContactRequestParams

type ContactRequestParams struct {
	ID                []int  `validate:"omitempty,gt=0,dive,required"`
	LimitRows         int    `validate:"required_with=LimitOffset,lte=500"`
	LimitOffset       int    `validate:"omitempty"`
	ResponsibleUserID int    `validate:"omitempty"`
	Query             string `validate:"omitempty"`
}

type ContactUpdate

type ContactUpdate struct {
	ID                int                  `json:"id,string" validate:"required"`
	Name              string               `json:"name,omitempty" validate:"omitempty"`
	CreatedAt         int                  `json:"created_at,string,omitempty" validate:"omitempty"`
	UpdatedAt         int                  `json:"updated_at,string" validate:"required"`
	ResponsibleUserID int                  `json:"responsible_user_id,string,omitempty" validate:"omitempty"`
	CreatedBy         int                  `json:"created_by,string,omitempty" validate:"omitempty"`
	CompanyName       string               `json:"company_name,omitempty" validate:"omitempty"`
	Tags              string               `json:"tags,omitempty" validate:"omitempty"`
	LeadsID           []string             `json:"leads_id,omitempty" validate:"omitempty,gt=0,required"`
	CustomersID       int                  `json:"customers_id,string,omitempty" validate:"omitempty"`
	CompanyID         int                  `json:"company_id,string,omitempty" validate:"omitempty"`
	CustomFields      []*UpdateCustomField `json:"custom_fields,omitempty" validate:"omitempty,gt=0,required"`
	Unlink            *Unlink              `json:"unlink,omitempty" validate:"omitempty"`
}

type CustomField

type CustomField struct {
	ID       int            `json:"id" validate:"required"`
	Name     string         `json:"name" validate:"required"`
	Values   []*CustomValue `json:"values" validate:"required,dive,required"`
	IsSystem bool           `json:"is_system" validate:"omitempty"`
}

type CustomFieldInfo

type CustomFieldInfo struct {
	ID          int             `json:"id" validate:"required"`
	Name        string          `json:"name" validate:"required"`
	FieldType   CustomFieldType `json:"field_type" validate:"required"`
	Sort        int             `json:"sort" validate:"required"`
	Code        string          `json:"code" validate:"omitempty"`
	IsMultiple  bool            `json:"is_multiple" validate:"omitempty"`
	IsSystem    bool            `json:"is_system" validate:"omitempty"`
	IsEditable  bool            `json:"is_editable" validate:"omitempty"`
	IsRequired  bool            `json:"is_required" validate:"omitempty"`
	IsDeletable bool            `json:"is_deletable" validate:"omitempty"`
	IsVisible   bool            `json:"is_visible" validate:"omitempty"`
	Params      struct {
	} `json:"params" validate:"omitempty"`
	Enums map[string]string `json:"enums" validate:"omitempty,dive,required"`
}

type CustomFieldType

type CustomFieldType int
const (
	TextCustomFieldType CustomFieldType = iota + 1
	NumericCustomFieldType
	CheckboxCustomFieldType
	SelectCustomFieldType
	MultiSelectCustomFieldType
	DateCustomFieldType
	URLCustomFieldType
	MultiTextCustomFieldType
	TextAreaCustomFieldType
	RadioButtonCustomFieldType
	StreetAddressCustomFieldType
	SmartAddressCustomFieldType
	BirthDayCustomFieldType
	LegalEntityCustomFieldType
	ItemsCustomFieldType
	OrgLegalNameCustomFieldType
)

type CustomValue

type CustomValue struct {
	Value   string `json:"value" validate:"required"`
	Enum    int    `json:"enum,omitempty" validate:"omitempty"`
	Subtype string `json:"subtype,omitempty" validate:"omitempty"`
}

type Error

type Error string
var (
	ErrEmptyLogin         Error = "empty_login"
	ErrEmptyAPIHash       Error = "empty_api_hash"
	ErrEmptyPhoneNumber   Error = "empty_phone_number"
	ErrInvalidEventType   Error = "invalid_event_type"
	ErrEmptyResponseItems Error = "empty_response_items"
)

func (Error) Error

func (e Error) Error() string

type GetContactResponse

type GetContactResponse struct {
	Links    *Links `json:"_links" validate:"omitempty"`
	Embedded struct {
		Items []*Contact `json:"items" validate:"required,dive,required"`
	} `json:"_embedded" validate:"omitempty"`
	Response *AmoError `json:"response,omitempty" validate:"omitempty"`
}

type GetLeadResponse

type GetLeadResponse struct {
	Links    *Links `json:"_links" validate:"omitempty"`
	Embedded struct {
		Items []*Lead `json:"items" validate:"required,dive,required"`
	} `json:"_embedded" validate:"omitempty"`
	Response *AmoError `json:"response" validate:"omitempty"`
}

type GetNoteResponse

type GetNoteResponse struct {
	Links    *Links `json:"_links" validate:"omitempty"`
	Embedded struct {
		Items []*Note `json:"items" validate:"required"`
	} `json:"_embedded" validate:"omitempty"`
	Response *AmoError `json:"response" validate:"omitempty"`
}

type GetPipelineResponse

type GetPipelineResponse struct {
	Links    *Links `json:"_links" validate:"omitempty"`
	Embedded struct {
		Items map[string]*Pipeline `json:"items" validate:"required"`
	} `json:"_embedded" validate:"omitempty"`
	Response *AmoError `json:"response" validate:"omitempty"`
}

type GetTaskResponse

type GetTaskResponse struct {
	Links    *Links `json:"_links" validate:"omitempty"`
	Embedded struct {
		Items []*Task `json:"items" validate:"required,dive,required"`
	} `json:"_embedded" validate:"omitempty"`
	Response *AmoError `json:"response" validate:"omitempty"`
}

type Group

type Group struct {
	ID   int    `json:"id" validate:"required"`
	Name string `json:"name" validate:"required"`
}

type Lead

type Lead struct {
	ID                int    `json:"id" validate:"required"`
	Name              string `json:"name" validate:"required"`
	ResponsibleUserID int    `json:"responsible_user_id" validate:"required"`
	CreatedBy         int    `json:"created_by" validate:"required"`
	CreatedAt         int    `json:"created_at" validate:"required"`
	UpdatedAt         int    `json:"updated_at" validate:"required"`
	AccountID         int    `json:"account_id" validate:"required"`
	IsDeleted         bool   `json:"is_deleted" validate:"omitempty"`
	MainContact       struct {
		ID    int    `json:"id" validate:"omitempty"`
		Links *Links `json:"_links" validate:"omitempty"`
	} `json:"main_contact,omitempty" validate:"omitempty"`
	GroupID       int            `json:"group_id,omitempty" validate:"omitempty"`
	ClosedAt      int            `json:"closed_at,omitempty" validate:"omitempty"`
	ClosestTaskAt int            `json:"closest_task_at,omitempty" validate:"omitempty"`
	Tags          []*Tag         `json:"tags,omitempty" validate:"omitempty,dive,required"`
	CustomFields  []*CustomField `json:"custom_fields,omitempty" validate:"omitempty"`
	Contact       struct {
		ID    []int  `json:"id" validate:"omitempty,dive,required"`
		Links *Links `json:"_links" validate:"omitempty"`
	} `json:"contacts,omitempty" validate:"omitempty"`
	StatusID int `json:"status_id" validate:"required"`
	Sale     int `json:"sale,omitempty" validate:"omitempty"`
	Pipeline struct {
		ID    int    `json:"id" validate:"required"`
		Links *Links `json:"_links" validate:"required"`
	} `json:"pipeline" validate:"required"`
	Links *Links `json:"_links" validate:"required"`
}

type LeadAdd

type LeadAdd struct {
	Name              string               `json:"name" validate:"required"`
	CreatedAt         int                  `json:"created_at,string,omitempty" validate:"omitempty"`
	UpdatedAt         int                  `json:"updated_at,string,omitempty" validate:"omitempty"`
	StatusID          int                  `json:"status_id,string" validate:"required"`
	PipelineID        int                  `json:"pipeline_id,string,omitempty" validate:"omitempty"`
	ResponsibleUserID int                  `json:"responsible_user_id,string,omitempty" validate:"omitempty"`
	Sale              int                  `json:"sale,string,omitempty" validate:"omitempty"`
	Tags              string               `json:"tags,omitempty" validate:"omitempty"`
	CustomFields      []*UpdateCustomField `json:"custom_fields,omitempty" validate:"omitempty,gt=0,dive,required"`
	ContactsID        []string             `json:"contacts_id,omitempty" validate:"omitempty,gt=0,dive,required"`
	CompanyID         int                  `json:"company_id,string,omitempty" validate:"omitempty"`
	RequestID         int                  `json:"request_id,string,omitempty" validate:"omitempty"`
}

type LeadRequestActiveFilter

type LeadRequestActiveFilter int

type LeadRequestFilter

type LeadRequestFilter struct {
	Tasks  LeadRequestTasksFilter  `validate:"omitempty,oneof=1 2"`
	Active LeadRequestActiveFilter `validate:"omitempty,eq=1"`
}

type LeadRequestParams

type LeadRequestParams struct {
	ID                []int              `validate:"omitempty,gt=0,dive,required"`
	LimitRows         int                `validate:"required_with=LimitOffset,lte=500"`
	LimitOffset       int                `validate:"omitempty"`
	ResponsibleUserID int                `validate:"omitempty"`
	Query             string             `validate:"omitempty"`
	Status            []int              `validate:"omitempty,gt=0,dive,required"`
	Filter            *LeadRequestFilter `validate:"omitempty"`
}

type LeadRequestTasksFilter

type LeadRequestTasksFilter int

type LeadUpdate

type LeadUpdate struct {
	ID                int                  `json:"id,string" validate:"required"`
	Name              string               `json:"name,omitempty" validate:"omitempty"`
	CreatedAt         int                  `json:"created_at,string,omitempty" validate:"omitempty"`
	UpdatedAt         int                  `json:"updated_at,string" validate:"required"`
	StatusID          int                  `json:"status_id,string,omitempty" validate:"omitempty"`
	PipelineID        int                  `json:"pipeline_id,string,omitempty" validate:"omitempty"`
	ResponsibleUserID int                  `json:"responsible_user_id,string,omitempty" validate:"omitempty"`
	Sale              int                  `json:"sale,string,omitempty" validate:"omitempty"`
	Tags              string               `json:"tags,omitempty" validate:"omitempty"`
	CustomFields      []*UpdateCustomField `json:"custom_fields,omitempty" validate:"omitempty,gt=0,dive,required"`
	ContactsID        []string             `json:"contacts_id,omitempty" validate:"omitempty,gt=0,dive,required"`
	CompanyID         int                  `json:"company_id,string,omitempty" validate:"omitempty"`
	RequestID         int                  `json:"request_id,string,omitempty" validate:"omitempty"`
	Unlink            *Unlink              `json:"unlink,omitempty" validate:"omitempty"`
}
type Links struct {
	Self struct {
		Href   string `json:"href" validate:"required"`
		Method string `json:"method" validate:"required"`
	} `json:"self" validate:"required"`
}

type Note

type Note struct {
	ID                int             `json:"id" validate:"required"`
	CreatedBy         int             `json:"created_by" validate:"required"`
	AccountID         int             `json:"account_id" validate:"required"`
	GroupID           int             `json:"group_id" validate:"omitempty"`
	IsEditable        bool            `json:"is_editable" validate:"omitempty"`
	ElementID         int             `json:"element_id" validate:"required"`
	ElementType       int             `json:"element_type" validate:"oneof=1 2 3 4 12"`
	Text              string          `json:"text" validate:"required"`
	NoteType          int             `json:"note_type" validate:"required"`
	CreatedAt         int             `json:"created_at" validate:"required"`
	UpdatedAt         int             `json:"updated_at" validate:"required"`
	ResponsibleUserID int             `json:"responsible_user_id" validate:"required"`
	Attachment        string          `json:"attachment" validate:"omitempty"`
	Parameters        *NoteParameters `json:"params,omitempty" validate:"omitempty"`
	Links             *Links          `json:"_links" validate:"required"`
}

type NoteAdd

type NoteAdd struct {
	ElementID         int                 `json:"element_id" validate:"required"`
	ElementType       int                 `json:"element_type" validate:"oneof=1 2 3 4 12"`
	Text              string              `json:"text,omitempty" validate:"omitempty"`
	NoteType          int                 `json:"note_type" validate:"omitempty"`
	CreatedAt         string              `json:"created_at,omitempty" validate:"omitempty"`
	UpdatedAt         int                 `json:"updated_at,omitempty" validate:"omitempty"`
	ResponsibleUserID int                 `json:"responsible_user_id,omitempty" validate:"omitempty"`
	CreatedBy         int                 `json:"created_by,omitempty" validate:"omitempty"`
	Params            *NotePostParameters `json:"params,omitempty" validate:"omitempty"`
}

type NoteParameters

type NoteParameters struct {
	Text    string `json:"TEXT" validate:"required"`
	Service string `json:"service" validate:"omitempty"`
	HTML    string `json:"HTML" validate:"omitempty"`
}

type NotePostParameters

type NotePostParameters struct {
	UNIQ       string `json:"UNIQ" validate:"required"`
	LINK       string `json:"LINK" validate:"required"`
	PHONE      string `json:"PHONE" validate:"required"`
	DURATION   int    `json:"DURATION" validate:"required"`
	SRC        string `json:"SRC" validate:"required"`
	FROM       string `json:"FROM,omitempty" validate:"omitempty"`
	CallStatus int    `json:"call_status" validate:"required"`
	CallResult string `json:"call_result,omitempty" validate:"omitempty"`
	Text       string `json:"text,omitempty" validate:"omitempty"`
}

type NoteRequestParams

type NoteRequestParams struct {
	Type        NoteRequestType `validate:"required,oneof=lead contact company task"`
	ID          []int           `validate:"omitempty,gt=0,dive,required"`
	LimitRows   int             `validate:"required_with=LimitOffset,lte=500"`
	LimitOffset int             `validate:"omitempty"`
	ElementID   []int           `validate:"omitempty,gt=0,dive,required"`
	NoteType    []int           `validate:"omitempty,gt=0,dive,required"`
}

type NoteRequestType

type NoteRequestType string
const (
	ContactNoteType NoteRequestType = "contact"
	LeadNoteType    NoteRequestType = "lead"
	CompanyNoteType NoteRequestType = "company"
	TaskNoteType    NoteRequestType = "task"
)

type NoteTask

type NoteTask struct {
	ID    int    `json:"id" validate:"omitempty"`
	Text  string `json:"text" validate:"omitempty"`
	Links *Links `json:"_links" validate:"omitempty"`
}

type NoteType

type NoteType struct {
	ID         int    `json:"id" validate:"required"`
	Code       string `json:"code" validate:"required"`
	IsEditable bool   `json:"is_editable" validate:"omitempty"`
}

type Pipeline

type Pipeline struct {
	ID       int                        `json:"id" validate:"required"`
	Name     string                     `json:"name" validate:"required"`
	Sort     int                        `json:"sort" validate:"required"`
	IsMain   bool                       `json:"is_main" validate:"omitempty"`
	Statuses map[string]*PipelineStatus `json:"statuses" validate:"required,dive,required"`
	Links    *Links                     `json:"_links" validate:"required"`
}

type PipelineRequestParams

type PipelineRequestParams struct {
	ID int `validate:"omitempty"`
}

type PipelineStatus

type PipelineStatus struct {
	ID         int    `json:"id" validate:"required"`
	Name       string `json:"name" validate:"required"`
	Color      string `json:"color" validate:"required"`
	Sort       int    `json:"sort" validate:"required"`
	IsEditable bool   `json:"is_editable" validate:"omitempty"`
}

type PostResponse

type PostResponse struct {
	ID        int `json:"id" validate:"omitempty"`
	RequestID int `json:"request_id" validate:"omitempty"`
	Embedded  struct {
		Items []struct {
			ID int `json:"id" validate:"omitempty"`
		} `json:"items" validate:"required,dive,required"`
	} `json:"_embedded" validate:"omitempty"`
	Response *AmoError `json:"response" validate:"omitempty"`
}

type Tag

type Tag struct {
	ID   int    `json:"id" validate:"required"`
	Name string `json:"name" validate:"required"`
}

type Task

type Task struct {
	ID                int             `json:"id" validate:"required"`
	ElementID         int             `json:"element_id" validate:"required"`
	ElementType       TaskElementType `json:"element_type" validate:"oneof=1 2 3 12"`
	CompleteTillAt    int             `json:"complete_till_at" validate:"required"`
	TaskType          int             `json:"task_type" validate:"required"`
	Text              string          `json:"text" validate:"omitempty"`
	CreatedAt         int             `json:"created_at" validate:"required"`
	UpdatedAt         int             `json:"updated_at" validate:"required"`
	ResponsibleUserID int             `json:"responsible_user_id" validate:"required"`
	IsCompleted       bool            `json:"is_completed" validate:"omitempty"`
	CreatedBy         int             `json:"created_by" validate:"required"`
	AccountID         int             `json:"account_id" validate:"required"`
	GroupID           int             `json:"group_id" validate:"omitempty"`
	Result            *NoteTask       `json:"result" validate:"omitempty"`
	Links             *Links          `json:"_links" validate:"required"`
}

type TaskAdd

type TaskAdd struct {
	ElementID         int             `json:"element_id,string" validate:"required"`
	ElementType       TaskElementType `json:"element_type,string" validate:"oneof=1 2 3 12"`
	CompleteTill      int             `json:"complete_till,omitempty" validate:"omitempty"`
	TaskType          int             `json:"task_type,string" validate:"required"`
	Text              string          `json:"text,omitempty" validate:"omitempty"`
	CreatedAt         int             `json:"created_at,string,omitempty" validate:"omitempty"`
	UpdatedAt         int             `json:"updated_at,string,omitempty" validate:"omitempty"`
	ResponsibleUserID int             `json:"responsible_user_id,string,omitempty" validate:"omitempty"`
	IsCompleted       bool            `json:"is_completed,omitempty" validate:"omitempty"`
	CreatedBy         int             `json:"created_by,string,omitempty" validate:"omitempty"`
	RequestID         int             `json:"request_id,string,omitempty" validate:"omitempty"`
}

type TaskElementType

type TaskElementType int

type TaskRequestFilter

type TaskRequestFilter struct {
	Status   TaskRequestStatusFilter `validate:"omitempty,oneof=1 0"`
	TaskType []int                   `validate:"omitempty,gt=0,dive,required"`
}

type TaskRequestParams

type TaskRequestParams struct {
	ID                []int              `validate:"omitempty,gt=0,dive,required"`
	LimitRows         int                `validate:"required_with=LimitOffset,lte=500"`
	LimitOffset       int                `validate:"omitempty"`
	ElementID         []int              `validate:"omitempty,gt=0,dive,required"`
	ResponsibleUserID int                `validate:"omitempty"`
	Type              TaskRequestType    `validate:"omitempty,oneof=lead contact company customer"`
	Filter            *TaskRequestFilter `validate:"omitempty"`
}

type TaskRequestStatusFilter

type TaskRequestStatusFilter int

type TaskRequestType

type TaskRequestType string

type TaskType

type TaskType struct {
	ID   int    `json:"id" validate:"required"`
	Name string `json:"name" validate:"required"`
}

type TaskUpdate

type TaskUpdate struct {
	ID                int             `json:"id,string" validate:"required"`
	ElementID         int             `json:"element_id,string,omitempty" validate:"omitempty"`
	ElementType       TaskElementType `json:"element_type,string,omitempty" validate:"omitempty,oneof=1 2 3 12"`
	CompleteTill      int             `json:"complete_till,omitempty" validate:"omitempty"`
	TaskType          int             `json:"task_type,string,omitempty" validate:"omitempty"`
	Text              string          `json:"text" validate:"omitempty"`
	CreatedAt         int             `json:"created_at,string,omitempty" validate:"omitempty"`
	UpdatedAt         int             `json:"updated_at,string" validate:"required"`
	ResponsibleUserID int             `json:"responsible_user_id,string,omitempty" validate:"omitempty"`
	IsCompleted       bool            `json:"is_completed,omitempty" validate:"omitempty"`
	CreatedBy         int             `json:"created_by,string,omitempty" validate:"omitempty"`
	RequestID         int             `json:"request_id,string,omitempty" validate:"omitempty"`
}
type Unlink struct {
	LeadsID    []int `json:"leads_id,omitempty" validate:"omitempty,gt=0,dive,required"`
	ContactsID []int `json:"contacts_id,omitempty" validate:"omitempty,gt=0,dive,required"`
	CompanyID  int   `json:"company_id,omitempty" validate:"omitempty"`
}

type UpdateContactRequest

type UpdateContactRequest struct {
	Update []*ContactUpdate `json:"update" validate:"required,dive,required"`
}

type UpdateCustomField

type UpdateCustomField struct {
	ID     int           `json:"id" validate:"required"`
	Values []interface{} `json:"values" validate:"required,dive,required"`
}

type UpdateCustomValue

type UpdateCustomValue struct {
	Value   string `json:"value" validate:"required"`
	Subtype string `json:"subtype,omitempty" validate:"omitempty"`
}

type UpdateLeadRequest

type UpdateLeadRequest struct {
	Update []*LeadUpdate `json:"update" validate:"required,dive,required"`
}

type UpdateTaskRequest

type UpdateTaskRequest struct {
	Update []*TaskUpdate `json:"update" validate:"required,dive,required"`
}

type User

type User struct {
	ID          int    `json:"id" validate:"required"`
	Name        string `json:"name" validate:"required"`
	LastName    string `json:"last_name,omitempty" validate:"omitempty"`
	Login       string `json:"login" validate:"required"`
	Language    string `json:"language" validate:"required"`
	GroupID     int    `json:"group_id" validate:"omitempty"`
	IsActive    bool   `json:"is_active" validate:"omitempty"`
	IsFree      bool   `json:"is_free" validate:"omitempty"`
	IsAdmin     bool   `json:"is_admin" validate:"omitempty"`
	PhoneNumber string `json:"phone_number" validate:"omitempty"`
	Rights      struct {
		Mail          string `json:"mail" validate:"required"`
		IncomingLeads string `json:"incoming_leads" validate:"required"`
		Catalogs      string `json:"catalogs" validate:"required"`
		LeadAdd       string `json:"lead_add" validate:"required"`
		LeadView      string `json:"lead_view" validate:"required"`
		LeadEdit      string `json:"lead_edit" validate:"required"`
		LeadDelete    string `json:"lead_delete" validate:"required"`
		LeadExport    string `json:"lead_export" validate:"required"`
		ContactAdd    string `json:"contact_add" validate:"required"`
		ContactView   string `json:"contact_view" validate:"required"`
		ContactEdit   string `json:"contact_edit" validate:"required"`
		ContactDelete string `json:"contact_delete" validate:"required"`
		ContactExport string `json:"contact_export" validate:"required"`
		CompanyAdd    string `json:"company_add" validate:"required"`
		CompanyView   string `json:"company_view" validate:"required"`
		CompanyEdit   string `json:"company_edit" validate:"required"`
		CompanyDelete string `json:"company_delete" validate:"required"`
		CompanyExport string `json:"company_export" validate:"required"`
		TaskEdit      string `json:"task_edit" validate:"required"`
		TaskDelete    string `json:"task_delete" validate:"required"`
	} `json:"rights" validate:"required"`
}

Jump to

Keyboard shortcuts

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