From ec79ba2ac494c81e66cbe7359c452be70f8bc3f3 Mon Sep 17 00:00:00 2001 From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com> Date: Thu, 16 Oct 2025 16:02:09 +0000 Subject: [PATCH] SDK regeneration --- channels.go | 468 ++++++ channels/client.go | 131 ++ channels/raw_client.go | 116 ++ client/client.go | 6 + core/request_option.go | 6 +- loyalty/programs/promotions.go | 8 +- loyalty/programs/promotions/raw_client.go | 4 +- transfer_orders.go | 1595 +++++++++++++++++++++ transferorders/client.go | 247 ++++ transferorders/raw_client.go | 388 +++++ types.go | 551 ++++++- 11 files changed, 3510 insertions(+), 10 deletions(-) create mode 100644 channels.go create mode 100644 channels/client.go create mode 100644 channels/raw_client.go create mode 100644 transfer_orders.go create mode 100644 transferorders/client.go create mode 100644 transferorders/raw_client.go diff --git a/channels.go b/channels.go new file mode 100644 index 0000000..8858d9e --- /dev/null +++ b/channels.go @@ -0,0 +1,468 @@ +// Code generated by Fern. DO NOT EDIT. + +package square + +import ( + json "encoding/json" + fmt "fmt" + internal "github.com/square/square-go-sdk/v2/internal" +) + +type BulkRetrieveChannelsRequest struct { + ChannelIDs []string `json:"channel_ids,omitempty" url:"-"` +} + +type GetChannelsRequest struct { + // A channel id + ChannelID string `json:"-" url:"-"` +} + +type ListChannelsRequest struct { + // Type of reference associated to channel + ReferenceType *ReferenceType `json:"-" url:"reference_type,omitempty"` + // id of reference associated to channel + ReferenceID *string `json:"-" url:"reference_id,omitempty"` + // Status of channel + Status *ChannelStatus `json:"-" url:"status,omitempty"` + // Cursor to fetch the next result + Cursor *string `json:"-" url:"cursor,omitempty"` + // Maximum number of results to return. + // When not provided the returned results will be cap at 100 channels. + Limit *int `json:"-" url:"limit,omitempty"` +} + +// Defines the fields that are included in the request body for the +// [BulkRetrieveChannels](api-endpoint:Channels-BulkRetrieveChannels) endpoint. +type BulkRetrieveChannelsResponse struct { + // Information about errors encountered during the request. + Errors []*Error `json:"errors,omitempty" url:"errors,omitempty"` + // A map of channel IDs to channel responses which tell whether + // retrieval for a specific channel is success or not. + // Channel response of a success retrieval would contain channel info + // whereas channel response of a failed retrieval would have error info. + Responses map[string]*RetrieveChannelResponse `json:"responses,omitempty" url:"responses,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (b *BulkRetrieveChannelsResponse) GetErrors() []*Error { + if b == nil { + return nil + } + return b.Errors +} + +func (b *BulkRetrieveChannelsResponse) GetResponses() map[string]*RetrieveChannelResponse { + if b == nil { + return nil + } + return b.Responses +} + +func (b *BulkRetrieveChannelsResponse) GetExtraProperties() map[string]interface{} { + return b.extraProperties +} + +func (b *BulkRetrieveChannelsResponse) UnmarshalJSON(data []byte) error { + type unmarshaler BulkRetrieveChannelsResponse + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *b = BulkRetrieveChannelsResponse(value) + extraProperties, err := internal.ExtractExtraProperties(data, *b) + if err != nil { + return err + } + b.extraProperties = extraProperties + b.rawJSON = json.RawMessage(data) + return nil +} + +func (b *BulkRetrieveChannelsResponse) String() string { + if len(b.rawJSON) > 0 { + if value, err := internal.StringifyJSON(b.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(b); err == nil { + return value + } + return fmt.Sprintf("%#v", b) +} + +type Channel struct { + // The channel's unique ID. + ID *string `json:"id,omitempty" url:"id,omitempty"` + // The unique ID of the merchant this channel belongs to. + MerchantID *string `json:"merchant_id,omitempty" url:"merchant_id,omitempty"` + // The name of the channel. + Name *string `json:"name,omitempty" url:"name,omitempty"` + // The version number which is incremented each time an update is made to the channel. + Version *int `json:"version,omitempty" url:"version,omitempty"` + // Represents an entity the channel is associated with. + Reference *Reference `json:"reference,omitempty" url:"reference,omitempty"` + // Status of the channel. + // See [Status](#type-status) for possible values + Status *ChannelStatus `json:"status,omitempty" url:"status,omitempty"` + // The timestamp for when the channel was created, in RFC 3339 format (for example, "2016-09-04T23:59:33.123Z"). + // For more information, see [Working with Dates](https://developer.squareup.com/docs/build-basics/working-with-dates). + CreatedAt *string `json:"created_at,omitempty" url:"created_at,omitempty"` + // The timestamp for when the channel was last updated, in RFC 3339 format (for example, "2016-09-04T23:59:33.123Z"). + // For more information, see [Working with Dates](https://developer.squareup.com/docs/build-basics/working-with-dates). + UpdatedAt *string `json:"updated_at,omitempty" url:"updated_at,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (c *Channel) GetID() *string { + if c == nil { + return nil + } + return c.ID +} + +func (c *Channel) GetMerchantID() *string { + if c == nil { + return nil + } + return c.MerchantID +} + +func (c *Channel) GetName() *string { + if c == nil { + return nil + } + return c.Name +} + +func (c *Channel) GetVersion() *int { + if c == nil { + return nil + } + return c.Version +} + +func (c *Channel) GetReference() *Reference { + if c == nil { + return nil + } + return c.Reference +} + +func (c *Channel) GetStatus() *ChannelStatus { + if c == nil { + return nil + } + return c.Status +} + +func (c *Channel) GetCreatedAt() *string { + if c == nil { + return nil + } + return c.CreatedAt +} + +func (c *Channel) GetUpdatedAt() *string { + if c == nil { + return nil + } + return c.UpdatedAt +} + +func (c *Channel) GetExtraProperties() map[string]interface{} { + return c.extraProperties +} + +func (c *Channel) UnmarshalJSON(data []byte) error { + type unmarshaler Channel + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *c = Channel(value) + extraProperties, err := internal.ExtractExtraProperties(data, *c) + if err != nil { + return err + } + c.extraProperties = extraProperties + c.rawJSON = json.RawMessage(data) + return nil +} + +func (c *Channel) String() string { + if len(c.rawJSON) > 0 { + if value, err := internal.StringifyJSON(c.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(c); err == nil { + return value + } + return fmt.Sprintf("%#v", c) +} + +type ChannelStatus string + +const ( + ChannelStatusActive ChannelStatus = "ACTIVE" + ChannelStatusInactive ChannelStatus = "INACTIVE" +) + +func NewChannelStatusFromString(s string) (ChannelStatus, error) { + switch s { + case "ACTIVE": + return ChannelStatusActive, nil + case "INACTIVE": + return ChannelStatusInactive, nil + } + var t ChannelStatus + return "", fmt.Errorf("%s is not a valid %T", s, t) +} + +func (c ChannelStatus) Ptr() *ChannelStatus { + return &c +} + +type ListChannelsResponse struct { + // Information about errors encountered during the request. + Errors []*Error `json:"errors,omitempty" url:"errors,omitempty"` + // List of requested Channel. + Channels []*Channel `json:"channels,omitempty" url:"channels,omitempty"` + // The token required to retrieve the next page of results. + Cursor *string `json:"cursor,omitempty" url:"cursor,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (l *ListChannelsResponse) GetErrors() []*Error { + if l == nil { + return nil + } + return l.Errors +} + +func (l *ListChannelsResponse) GetChannels() []*Channel { + if l == nil { + return nil + } + return l.Channels +} + +func (l *ListChannelsResponse) GetCursor() *string { + if l == nil { + return nil + } + return l.Cursor +} + +func (l *ListChannelsResponse) GetExtraProperties() map[string]interface{} { + return l.extraProperties +} + +func (l *ListChannelsResponse) UnmarshalJSON(data []byte) error { + type unmarshaler ListChannelsResponse + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *l = ListChannelsResponse(value) + extraProperties, err := internal.ExtractExtraProperties(data, *l) + if err != nil { + return err + } + l.extraProperties = extraProperties + l.rawJSON = json.RawMessage(data) + return nil +} + +func (l *ListChannelsResponse) String() string { + if len(l.rawJSON) > 0 { + if value, err := internal.StringifyJSON(l.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(l); err == nil { + return value + } + return fmt.Sprintf("%#v", l) +} + +type Reference struct { + // The type of entity a channel is associated with. + // See [Type](#type-type) for possible values + Type *ReferenceType `json:"type,omitempty" url:"type,omitempty"` + // The id of the entity a channel is associated with. + ID *string `json:"id,omitempty" url:"id,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (r *Reference) GetType() *ReferenceType { + if r == nil { + return nil + } + return r.Type +} + +func (r *Reference) GetID() *string { + if r == nil { + return nil + } + return r.ID +} + +func (r *Reference) GetExtraProperties() map[string]interface{} { + return r.extraProperties +} + +func (r *Reference) UnmarshalJSON(data []byte) error { + type unmarshaler Reference + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *r = Reference(value) + extraProperties, err := internal.ExtractExtraProperties(data, *r) + if err != nil { + return err + } + r.extraProperties = extraProperties + r.rawJSON = json.RawMessage(data) + return nil +} + +func (r *Reference) String() string { + if len(r.rawJSON) > 0 { + if value, err := internal.StringifyJSON(r.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(r); err == nil { + return value + } + return fmt.Sprintf("%#v", r) +} + +// The type of platform concept a channel can represent. +type ReferenceType string + +const ( + ReferenceTypeUnknownType ReferenceType = "UNKNOWN_TYPE" + ReferenceTypeLocation ReferenceType = "LOCATION" + ReferenceTypeFirstPartyIntegration ReferenceType = "FIRST_PARTY_INTEGRATION" + ReferenceTypeOauthApplication ReferenceType = "OAUTH_APPLICATION" + ReferenceTypeOnlineSite ReferenceType = "ONLINE_SITE" + ReferenceTypeOnlineCheckout ReferenceType = "ONLINE_CHECKOUT" + ReferenceTypeInvoice ReferenceType = "INVOICE" + ReferenceTypeGiftCard ReferenceType = "GIFT_CARD" + ReferenceTypeGiftCardMarketplace ReferenceType = "GIFT_CARD_MARKETPLACE" + ReferenceTypeRecurringSubscription ReferenceType = "RECURRING_SUBSCRIPTION" + ReferenceTypeOnlineBookingFlow ReferenceType = "ONLINE_BOOKING_FLOW" + ReferenceTypeSquareAssistant ReferenceType = "SQUARE_ASSISTANT" + ReferenceTypeCashLocal ReferenceType = "CASH_LOCAL" + ReferenceTypePointOfSale ReferenceType = "POINT_OF_SALE" + ReferenceTypeKiosk ReferenceType = "KIOSK" +) + +func NewReferenceTypeFromString(s string) (ReferenceType, error) { + switch s { + case "UNKNOWN_TYPE": + return ReferenceTypeUnknownType, nil + case "LOCATION": + return ReferenceTypeLocation, nil + case "FIRST_PARTY_INTEGRATION": + return ReferenceTypeFirstPartyIntegration, nil + case "OAUTH_APPLICATION": + return ReferenceTypeOauthApplication, nil + case "ONLINE_SITE": + return ReferenceTypeOnlineSite, nil + case "ONLINE_CHECKOUT": + return ReferenceTypeOnlineCheckout, nil + case "INVOICE": + return ReferenceTypeInvoice, nil + case "GIFT_CARD": + return ReferenceTypeGiftCard, nil + case "GIFT_CARD_MARKETPLACE": + return ReferenceTypeGiftCardMarketplace, nil + case "RECURRING_SUBSCRIPTION": + return ReferenceTypeRecurringSubscription, nil + case "ONLINE_BOOKING_FLOW": + return ReferenceTypeOnlineBookingFlow, nil + case "SQUARE_ASSISTANT": + return ReferenceTypeSquareAssistant, nil + case "CASH_LOCAL": + return ReferenceTypeCashLocal, nil + case "POINT_OF_SALE": + return ReferenceTypePointOfSale, nil + case "KIOSK": + return ReferenceTypeKiosk, nil + } + var t ReferenceType + return "", fmt.Errorf("%s is not a valid %T", s, t) +} + +func (r ReferenceType) Ptr() *ReferenceType { + return &r +} + +type RetrieveChannelResponse struct { + // Information about errors encountered during the request. + Errors []*Error `json:"errors,omitempty" url:"errors,omitempty"` + // The requested Channel. + Channel *Channel `json:"channel,omitempty" url:"channel,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (r *RetrieveChannelResponse) GetErrors() []*Error { + if r == nil { + return nil + } + return r.Errors +} + +func (r *RetrieveChannelResponse) GetChannel() *Channel { + if r == nil { + return nil + } + return r.Channel +} + +func (r *RetrieveChannelResponse) GetExtraProperties() map[string]interface{} { + return r.extraProperties +} + +func (r *RetrieveChannelResponse) UnmarshalJSON(data []byte) error { + type unmarshaler RetrieveChannelResponse + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *r = RetrieveChannelResponse(value) + extraProperties, err := internal.ExtractExtraProperties(data, *r) + if err != nil { + return err + } + r.extraProperties = extraProperties + r.rawJSON = json.RawMessage(data) + return nil +} + +func (r *RetrieveChannelResponse) String() string { + if len(r.rawJSON) > 0 { + if value, err := internal.StringifyJSON(r.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(r); err == nil { + return value + } + return fmt.Sprintf("%#v", r) +} diff --git a/channels/client.go b/channels/client.go new file mode 100644 index 0000000..1812091 --- /dev/null +++ b/channels/client.go @@ -0,0 +1,131 @@ +// Code generated by Fern. DO NOT EDIT. + +package channels + +import ( + context "context" + v2 "github.com/square/square-go-sdk/v2" + core "github.com/square/square-go-sdk/v2/core" + internal "github.com/square/square-go-sdk/v2/internal" + option "github.com/square/square-go-sdk/v2/option" + http "net/http" + os "os" +) + +type Client struct { + WithRawResponse *RawClient + + baseURL string + caller *internal.Caller + header http.Header +} + +func NewClient(opts ...option.RequestOption) *Client { + options := core.NewRequestOptions(opts...) + if options.Token == "" { + options.Token = os.Getenv("SQUARE_TOKEN") + } + if options.Version == "" { + options.Version = os.Getenv("VERSION") + } + return &Client{ + WithRawResponse: NewRawClient(options), + baseURL: options.BaseURL, + caller: internal.NewCaller( + &internal.CallerParams{ + Client: options.HTTPClient, + MaxAttempts: options.MaxAttempts, + }, + ), + header: options.ToHeader(), + } +} + +func (c *Client) List( + ctx context.Context, + request *v2.ListChannelsRequest, + opts ...option.RequestOption, +) (*core.Page[*v2.Channel], error) { + options := core.NewRequestOptions(opts...) + baseURL := internal.ResolveBaseURL( + options.BaseURL, + c.baseURL, + "https://connect.squareup.com", + ) + endpointURL := baseURL + "/v2/channels" + queryParams, err := internal.QueryValues(request) + if err != nil { + return nil, err + } + headers := internal.MergeHeaders( + c.header.Clone(), + options.ToHeader(), + ) + prepareCall := func(pageRequest *internal.PageRequest[*string]) *internal.CallParams { + if pageRequest.Cursor != nil { + queryParams.Set("cursor", *pageRequest.Cursor) + } + nextURL := endpointURL + if len(queryParams) > 0 { + nextURL += "?" + queryParams.Encode() + } + return &internal.CallParams{ + URL: nextURL, + Method: http.MethodGet, + Headers: headers, + MaxAttempts: options.MaxAttempts, + BodyProperties: options.BodyProperties, + QueryParameters: options.QueryParameters, + Client: options.HTTPClient, + Response: pageRequest.Response, + } + } + readPageResponse := func(response *v2.ListChannelsResponse) *internal.PageResponse[*string, *v2.Channel] { + var zeroValue *string + next := response.GetCursor() + results := response.GetChannels() + return &internal.PageResponse[*string, *v2.Channel]{ + Next: next, + Results: results, + Done: next == zeroValue, + } + } + pager := internal.NewCursorPager( + c.caller, + prepareCall, + readPageResponse, + ) + return pager.GetPage(ctx, request.Cursor) +} + +func (c *Client) BulkRetrieve( + ctx context.Context, + request *v2.BulkRetrieveChannelsRequest, + opts ...option.RequestOption, +) (*v2.BulkRetrieveChannelsResponse, error) { + response, err := c.WithRawResponse.BulkRetrieve( + ctx, + request, + opts..., + ) + if err != nil { + return nil, err + } + return response.Body, nil +} + +func (c *Client) Get( + ctx context.Context, + request *v2.GetChannelsRequest, + opts ...option.RequestOption, +) (*v2.RetrieveChannelResponse, error) { + response, err := c.WithRawResponse.Get( + ctx, + request, + opts..., + ) + if err != nil { + return nil, err + } + return response.Body, nil +} diff --git a/channels/raw_client.go b/channels/raw_client.go new file mode 100644 index 0000000..220f420 --- /dev/null +++ b/channels/raw_client.go @@ -0,0 +1,116 @@ +// Code generated by Fern. DO NOT EDIT. + +package channels + +import ( + context "context" + v2 "github.com/square/square-go-sdk/v2" + core "github.com/square/square-go-sdk/v2/core" + internal "github.com/square/square-go-sdk/v2/internal" + option "github.com/square/square-go-sdk/v2/option" + http "net/http" +) + +type RawClient struct { + baseURL string + caller *internal.Caller + header http.Header +} + +func NewRawClient(options *core.RequestOptions) *RawClient { + return &RawClient{ + baseURL: options.BaseURL, + caller: internal.NewCaller( + &internal.CallerParams{ + Client: options.HTTPClient, + MaxAttempts: options.MaxAttempts, + }, + ), + header: options.ToHeader(), + } +} + +func (r *RawClient) BulkRetrieve( + ctx context.Context, + request *v2.BulkRetrieveChannelsRequest, + opts ...option.RequestOption, +) (*core.Response[*v2.BulkRetrieveChannelsResponse], error) { + options := core.NewRequestOptions(opts...) + baseURL := internal.ResolveBaseURL( + options.BaseURL, + r.baseURL, + "https://connect.squareup.com", + ) + endpointURL := baseURL + "/v2/channels/bulk-retrieve" + headers := internal.MergeHeaders( + r.header.Clone(), + options.ToHeader(), + ) + headers.Add("Content-Type", "application/json") + var response *v2.BulkRetrieveChannelsResponse + raw, err := r.caller.Call( + ctx, + &internal.CallParams{ + URL: endpointURL, + Method: http.MethodPost, + Headers: headers, + MaxAttempts: options.MaxAttempts, + BodyProperties: options.BodyProperties, + QueryParameters: options.QueryParameters, + Client: options.HTTPClient, + Request: request, + Response: &response, + }, + ) + if err != nil { + return nil, err + } + return &core.Response[*v2.BulkRetrieveChannelsResponse]{ + StatusCode: raw.StatusCode, + Header: raw.Header, + Body: response, + }, nil +} + +func (r *RawClient) Get( + ctx context.Context, + request *v2.GetChannelsRequest, + opts ...option.RequestOption, +) (*core.Response[*v2.RetrieveChannelResponse], error) { + options := core.NewRequestOptions(opts...) + baseURL := internal.ResolveBaseURL( + options.BaseURL, + r.baseURL, + "https://connect.squareup.com", + ) + endpointURL := internal.EncodeURL( + baseURL+"/v2/channels/%v", + request.ChannelID, + ) + headers := internal.MergeHeaders( + r.header.Clone(), + options.ToHeader(), + ) + var response *v2.RetrieveChannelResponse + raw, err := r.caller.Call( + ctx, + &internal.CallParams{ + URL: endpointURL, + Method: http.MethodGet, + Headers: headers, + MaxAttempts: options.MaxAttempts, + BodyProperties: options.BodyProperties, + QueryParameters: options.QueryParameters, + Client: options.HTTPClient, + Response: &response, + }, + ) + if err != nil { + return nil, err + } + return &core.Response[*v2.RetrieveChannelResponse]{ + StatusCode: raw.StatusCode, + Header: raw.Header, + Body: response, + }, nil +} diff --git a/client/client.go b/client/client.go index 9382d7b..45809f1 100644 --- a/client/client.go +++ b/client/client.go @@ -9,6 +9,7 @@ import ( cards "github.com/square/square-go-sdk/v2/cards" cashdrawersclient "github.com/square/square-go-sdk/v2/cashdrawers/client" catalogclient "github.com/square/square-go-sdk/v2/catalog/client" + channels "github.com/square/square-go-sdk/v2/channels" checkoutclient "github.com/square/square-go-sdk/v2/checkout/client" core "github.com/square/square-go-sdk/v2/core" customersclient "github.com/square/square-go-sdk/v2/customers/client" @@ -37,6 +38,7 @@ import ( team "github.com/square/square-go-sdk/v2/team" teammembersclient "github.com/square/square-go-sdk/v2/teammembers/client" terminalclient "github.com/square/square-go-sdk/v2/terminal/client" + transferorders "github.com/square/square-go-sdk/v2/transferorders" v1transactions "github.com/square/square-go-sdk/v2/v1transactions" vendors "github.com/square/square-go-sdk/v2/vendors" webhooksclient "github.com/square/square-go-sdk/v2/webhooks/client" @@ -53,6 +55,7 @@ type Client struct { Bookings *client.Client Cards *cards.Client Catalog *catalogclient.Client + Channels *channels.Client Customers *customersclient.Client Devices *devicesclient.Client Disputes *disputesclient.Client @@ -76,6 +79,7 @@ type Client struct { TeamMembers *teammembersclient.Client Team *team.Client Terminal *terminalclient.Client + TransferOrders *transferorders.Client Vendors *vendors.Client CashDrawers *cashdrawersclient.Client Webhooks *webhooksclient.Client @@ -102,6 +106,7 @@ func NewClient(opts ...option.RequestOption) *Client { Bookings: client.NewClient(opts...), Cards: cards.NewClient(opts...), Catalog: catalogclient.NewClient(opts...), + Channels: channels.NewClient(opts...), Customers: customersclient.NewClient(opts...), Devices: devicesclient.NewClient(opts...), Disputes: disputesclient.NewClient(opts...), @@ -125,6 +130,7 @@ func NewClient(opts ...option.RequestOption) *Client { TeamMembers: teammembersclient.NewClient(opts...), Team: team.NewClient(opts...), Terminal: terminalclient.NewClient(opts...), + TransferOrders: transferorders.NewClient(opts...), Vendors: vendors.NewClient(opts...), CashDrawers: cashdrawersclient.NewClient(opts...), Webhooks: webhooksclient.NewClient(opts...), diff --git a/core/request_option.go b/core/request_option.go index ba101e7..4061512 100644 --- a/core/request_option.go +++ b/core/request_option.go @@ -52,7 +52,7 @@ func (r *RequestOptions) ToHeader() http.Header { if r.Token != "" { header.Set("Authorization", "Bearer "+r.Token) } - version := fmt.Sprintf("%v", "2025-09-24") + version := fmt.Sprintf("%v", "2025-10-16") if envValue := os.Getenv("VERSION"); envValue != "" { version = envValue } @@ -67,8 +67,8 @@ func (r *RequestOptions) cloneHeader() http.Header { headers := r.HTTPHeader.Clone() headers.Set("X-Fern-Language", "Go") headers.Set("X-Fern-SDK-Name", "github.com/square/square-go-sdk/v2") - headers.Set("X-Fern-SDK-Version", "v2.1.0") - headers.Set("User-Agent", "github.com/square/square-go-sdk/v2.1.0") + headers.Set("X-Fern-SDK-Version", "v2.2.0") + headers.Set("User-Agent", "github.com/square/square-go-sdk/v2.2.0") return headers } diff --git a/loyalty/programs/promotions.go b/loyalty/programs/promotions.go index 7220568..1b254d9 100644 --- a/loyalty/programs/promotions.go +++ b/loyalty/programs/promotions.go @@ -7,11 +7,11 @@ import ( ) type CancelPromotionsRequest struct { + // The ID of the base [loyalty program](entity:LoyaltyProgram). + ProgramID string `json:"-" url:"-"` // The ID of the [loyalty promotion](entity:LoyaltyPromotion) to cancel. You can cancel a // promotion that has an `ACTIVE` or `SCHEDULED` status. PromotionID string `json:"-" url:"-"` - // The ID of the base [loyalty program](entity:LoyaltyProgram). - ProgramID string `json:"-" url:"-"` } type CreateLoyaltyPromotionRequest struct { @@ -27,11 +27,11 @@ type CreateLoyaltyPromotionRequest struct { } type GetPromotionsRequest struct { - // The ID of the [loyalty promotion](entity:LoyaltyPromotion) to retrieve. - PromotionID string `json:"-" url:"-"` // The ID of the base [loyalty program](entity:LoyaltyProgram). To get the program ID, // call [RetrieveLoyaltyProgram](api-endpoint:Loyalty-RetrieveLoyaltyProgram) using the `main` keyword. ProgramID string `json:"-" url:"-"` + // The ID of the [loyalty promotion](entity:LoyaltyPromotion) to retrieve. + PromotionID string `json:"-" url:"-"` } type ListPromotionsRequest struct { diff --git a/loyalty/programs/promotions/raw_client.go b/loyalty/programs/promotions/raw_client.go index 1170354..bd56702 100644 --- a/loyalty/programs/promotions/raw_client.go +++ b/loyalty/programs/promotions/raw_client.go @@ -89,8 +89,8 @@ func (r *RawClient) Get( ) endpointURL := internal.EncodeURL( baseURL+"/v2/loyalty/programs/%v/promotions/%v", - request.PromotionID, request.ProgramID, + request.PromotionID, ) headers := internal.MergeHeaders( r.header.Clone(), @@ -133,8 +133,8 @@ func (r *RawClient) Cancel( ) endpointURL := internal.EncodeURL( baseURL+"/v2/loyalty/programs/%v/promotions/%v/cancel", - request.PromotionID, request.ProgramID, + request.PromotionID, ) headers := internal.MergeHeaders( r.header.Clone(), diff --git a/transfer_orders.go b/transfer_orders.go new file mode 100644 index 0000000..ebc8e9a --- /dev/null +++ b/transfer_orders.go @@ -0,0 +1,1595 @@ +// Code generated by Fern. DO NOT EDIT. + +package square + +import ( + json "encoding/json" + fmt "fmt" + internal "github.com/square/square-go-sdk/v2/internal" +) + +type CancelTransferOrderRequest struct { + // The ID of the transfer order to cancel. Must be in STARTED or PARTIALLY_RECEIVED status. + TransferOrderID string `json:"-" url:"-"` + // A unique string that identifies this UpdateTransferOrder request. Keys can be + // any valid string but must be unique for every UpdateTransferOrder request. + IdempotencyKey string `json:"idempotency_key" url:"-"` + // Version for optimistic concurrency + Version *int64 `json:"version,omitempty" url:"-"` +} + +type CreateTransferOrderRequest struct { + // A unique string that identifies this CreateTransferOrder request. Keys can be + // any valid string but must be unique for every CreateTransferOrder request. + IdempotencyKey string `json:"idempotency_key" url:"-"` + // The transfer order to create + TransferOrder *CreateTransferOrderData `json:"transfer_order,omitempty" url:"-"` +} + +type DeleteTransferOrdersRequest struct { + // The ID of the transfer order to delete + TransferOrderID string `json:"-" url:"-"` + // Version for optimistic concurrency + Version *int64 `json:"-" url:"version,omitempty"` +} + +type GetTransferOrdersRequest struct { + // The ID of the transfer order to retrieve + TransferOrderID string `json:"-" url:"-"` +} + +type ReceiveTransferOrderRequest struct { + // The ID of the transfer order to receive items for + TransferOrderID string `json:"-" url:"-"` + // A unique key to make this request idempotent + IdempotencyKey string `json:"idempotency_key" url:"-"` + // The receipt details + Receipt *TransferOrderGoodsReceipt `json:"receipt,omitempty" url:"-"` + // Version for optimistic concurrency + Version *int64 `json:"version,omitempty" url:"-"` +} + +type SearchTransferOrdersRequest struct { + // The search query + Query *TransferOrderQuery `json:"query,omitempty" url:"-"` + // Pagination cursor from a previous search response + Cursor *string `json:"cursor,omitempty" url:"-"` + // Maximum number of results to return (1-100) + Limit *int `json:"limit,omitempty" url:"-"` +} + +type StartTransferOrderRequest struct { + // The ID of the transfer order to start. Must be in DRAFT status. + TransferOrderID string `json:"-" url:"-"` + // A unique string that identifies this UpdateTransferOrder request. Keys can be + // any valid string but must be unique for every UpdateTransferOrder request. + IdempotencyKey string `json:"idempotency_key" url:"-"` + // Version for optimistic concurrency + Version *int64 `json:"version,omitempty" url:"-"` +} + +// Response for canceling a transfer order +type CancelTransferOrderResponse struct { + // The updated transfer order with status changed to CANCELED + TransferOrder *TransferOrder `json:"transfer_order,omitempty" url:"transfer_order,omitempty"` + // Any errors that occurred during the request + Errors []*Error `json:"errors,omitempty" url:"errors,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (c *CancelTransferOrderResponse) GetTransferOrder() *TransferOrder { + if c == nil { + return nil + } + return c.TransferOrder +} + +func (c *CancelTransferOrderResponse) GetErrors() []*Error { + if c == nil { + return nil + } + return c.Errors +} + +func (c *CancelTransferOrderResponse) GetExtraProperties() map[string]interface{} { + return c.extraProperties +} + +func (c *CancelTransferOrderResponse) UnmarshalJSON(data []byte) error { + type unmarshaler CancelTransferOrderResponse + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *c = CancelTransferOrderResponse(value) + extraProperties, err := internal.ExtractExtraProperties(data, *c) + if err != nil { + return err + } + c.extraProperties = extraProperties + c.rawJSON = json.RawMessage(data) + return nil +} + +func (c *CancelTransferOrderResponse) String() string { + if len(c.rawJSON) > 0 { + if value, err := internal.StringifyJSON(c.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(c); err == nil { + return value + } + return fmt.Sprintf("%#v", c) +} + +// Data for creating a new transfer order to move [CatalogItemVariation](entity:CatalogItemVariation)s +// between [Location](entity:Location)s. Used with the [CreateTransferOrder](api-endpoint:TransferOrders-CreateTransferOrder) +// endpoint. +type CreateTransferOrderData struct { + // The source [Location](entity:Location) that will send the items. Must be an active location + // in your Square account with sufficient inventory of the requested items. + SourceLocationID string `json:"source_location_id" url:"source_location_id"` + // The destination [Location](entity:Location) that will receive the items. Must be an active location + // in your Square account + DestinationLocationID string `json:"destination_location_id" url:"destination_location_id"` + // Expected transfer date in RFC 3339 format (e.g. "2023-10-01T12:00:00Z"). + ExpectedAt *string `json:"expected_at,omitempty" url:"expected_at,omitempty"` + // Optional notes about the transfer + Notes *string `json:"notes,omitempty" url:"notes,omitempty"` + // Optional shipment tracking number + TrackingNumber *string `json:"tracking_number,omitempty" url:"tracking_number,omitempty"` + // ID of the [TeamMember](entity:TeamMember) creating this transfer order. Used for tracking + // and auditing purposes. + CreatedByTeamMemberID *string `json:"created_by_team_member_id,omitempty" url:"created_by_team_member_id,omitempty"` + // List of [CatalogItemVariation](entity:CatalogItemVariation)s to transfer, including quantities + LineItems []*CreateTransferOrderLineData `json:"line_items,omitempty" url:"line_items,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (c *CreateTransferOrderData) GetSourceLocationID() string { + if c == nil { + return "" + } + return c.SourceLocationID +} + +func (c *CreateTransferOrderData) GetDestinationLocationID() string { + if c == nil { + return "" + } + return c.DestinationLocationID +} + +func (c *CreateTransferOrderData) GetExpectedAt() *string { + if c == nil { + return nil + } + return c.ExpectedAt +} + +func (c *CreateTransferOrderData) GetNotes() *string { + if c == nil { + return nil + } + return c.Notes +} + +func (c *CreateTransferOrderData) GetTrackingNumber() *string { + if c == nil { + return nil + } + return c.TrackingNumber +} + +func (c *CreateTransferOrderData) GetCreatedByTeamMemberID() *string { + if c == nil { + return nil + } + return c.CreatedByTeamMemberID +} + +func (c *CreateTransferOrderData) GetLineItems() []*CreateTransferOrderLineData { + if c == nil { + return nil + } + return c.LineItems +} + +func (c *CreateTransferOrderData) GetExtraProperties() map[string]interface{} { + return c.extraProperties +} + +func (c *CreateTransferOrderData) UnmarshalJSON(data []byte) error { + type unmarshaler CreateTransferOrderData + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *c = CreateTransferOrderData(value) + extraProperties, err := internal.ExtractExtraProperties(data, *c) + if err != nil { + return err + } + c.extraProperties = extraProperties + c.rawJSON = json.RawMessage(data) + return nil +} + +func (c *CreateTransferOrderData) String() string { + if len(c.rawJSON) > 0 { + if value, err := internal.StringifyJSON(c.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(c); err == nil { + return value + } + return fmt.Sprintf("%#v", c) +} + +// Data for creating a new transfer order line item. Each line item specifies a +// [CatalogItemVariation](entity:CatalogItemVariation) and quantity to transfer. +type CreateTransferOrderLineData struct { + // ID of the [CatalogItemVariation](entity:CatalogItemVariation) to transfer. Must reference a valid + // item variation in the [Catalog](api:Catalog). The item variation must be: + // - Active and available for sale + // - Enabled for inventory tracking + // - Available at the source location + ItemVariationID string `json:"item_variation_id" url:"item_variation_id"` + // Total quantity ordered + QuantityOrdered string `json:"quantity_ordered" url:"quantity_ordered"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (c *CreateTransferOrderLineData) GetItemVariationID() string { + if c == nil { + return "" + } + return c.ItemVariationID +} + +func (c *CreateTransferOrderLineData) GetQuantityOrdered() string { + if c == nil { + return "" + } + return c.QuantityOrdered +} + +func (c *CreateTransferOrderLineData) GetExtraProperties() map[string]interface{} { + return c.extraProperties +} + +func (c *CreateTransferOrderLineData) UnmarshalJSON(data []byte) error { + type unmarshaler CreateTransferOrderLineData + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *c = CreateTransferOrderLineData(value) + extraProperties, err := internal.ExtractExtraProperties(data, *c) + if err != nil { + return err + } + c.extraProperties = extraProperties + c.rawJSON = json.RawMessage(data) + return nil +} + +func (c *CreateTransferOrderLineData) String() string { + if len(c.rawJSON) > 0 { + if value, err := internal.StringifyJSON(c.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(c); err == nil { + return value + } + return fmt.Sprintf("%#v", c) +} + +// Response for creating a transfer order. +type CreateTransferOrderResponse struct { + // The created transfer order + TransferOrder *TransferOrder `json:"transfer_order,omitempty" url:"transfer_order,omitempty"` + // Any errors that occurred during the request + Errors []*Error `json:"errors,omitempty" url:"errors,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (c *CreateTransferOrderResponse) GetTransferOrder() *TransferOrder { + if c == nil { + return nil + } + return c.TransferOrder +} + +func (c *CreateTransferOrderResponse) GetErrors() []*Error { + if c == nil { + return nil + } + return c.Errors +} + +func (c *CreateTransferOrderResponse) GetExtraProperties() map[string]interface{} { + return c.extraProperties +} + +func (c *CreateTransferOrderResponse) UnmarshalJSON(data []byte) error { + type unmarshaler CreateTransferOrderResponse + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *c = CreateTransferOrderResponse(value) + extraProperties, err := internal.ExtractExtraProperties(data, *c) + if err != nil { + return err + } + c.extraProperties = extraProperties + c.rawJSON = json.RawMessage(data) + return nil +} + +func (c *CreateTransferOrderResponse) String() string { + if len(c.rawJSON) > 0 { + if value, err := internal.StringifyJSON(c.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(c); err == nil { + return value + } + return fmt.Sprintf("%#v", c) +} + +// Response for deleting a transfer order +type DeleteTransferOrderResponse struct { + // Any errors that occurred during the request + Errors []*Error `json:"errors,omitempty" url:"errors,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (d *DeleteTransferOrderResponse) GetErrors() []*Error { + if d == nil { + return nil + } + return d.Errors +} + +func (d *DeleteTransferOrderResponse) GetExtraProperties() map[string]interface{} { + return d.extraProperties +} + +func (d *DeleteTransferOrderResponse) UnmarshalJSON(data []byte) error { + type unmarshaler DeleteTransferOrderResponse + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *d = DeleteTransferOrderResponse(value) + extraProperties, err := internal.ExtractExtraProperties(data, *d) + if err != nil { + return err + } + d.extraProperties = extraProperties + d.rawJSON = json.RawMessage(data) + return nil +} + +func (d *DeleteTransferOrderResponse) String() string { + if len(d.rawJSON) > 0 { + if value, err := internal.StringifyJSON(d.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(d); err == nil { + return value + } + return fmt.Sprintf("%#v", d) +} + +// Response for receiving items for a transfer order +type ReceiveTransferOrderResponse struct { + // The updated transfer order + TransferOrder *TransferOrder `json:"transfer_order,omitempty" url:"transfer_order,omitempty"` + // Any errors that occurred during the request + Errors []*Error `json:"errors,omitempty" url:"errors,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (r *ReceiveTransferOrderResponse) GetTransferOrder() *TransferOrder { + if r == nil { + return nil + } + return r.TransferOrder +} + +func (r *ReceiveTransferOrderResponse) GetErrors() []*Error { + if r == nil { + return nil + } + return r.Errors +} + +func (r *ReceiveTransferOrderResponse) GetExtraProperties() map[string]interface{} { + return r.extraProperties +} + +func (r *ReceiveTransferOrderResponse) UnmarshalJSON(data []byte) error { + type unmarshaler ReceiveTransferOrderResponse + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *r = ReceiveTransferOrderResponse(value) + extraProperties, err := internal.ExtractExtraProperties(data, *r) + if err != nil { + return err + } + r.extraProperties = extraProperties + r.rawJSON = json.RawMessage(data) + return nil +} + +func (r *ReceiveTransferOrderResponse) String() string { + if len(r.rawJSON) > 0 { + if value, err := internal.StringifyJSON(r.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(r); err == nil { + return value + } + return fmt.Sprintf("%#v", r) +} + +// Response containing the requested transfer order +type RetrieveTransferOrderResponse struct { + // The requested transfer order + TransferOrder *TransferOrder `json:"transfer_order,omitempty" url:"transfer_order,omitempty"` + // Any errors that occurred during the request + Errors []*Error `json:"errors,omitempty" url:"errors,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (r *RetrieveTransferOrderResponse) GetTransferOrder() *TransferOrder { + if r == nil { + return nil + } + return r.TransferOrder +} + +func (r *RetrieveTransferOrderResponse) GetErrors() []*Error { + if r == nil { + return nil + } + return r.Errors +} + +func (r *RetrieveTransferOrderResponse) GetExtraProperties() map[string]interface{} { + return r.extraProperties +} + +func (r *RetrieveTransferOrderResponse) UnmarshalJSON(data []byte) error { + type unmarshaler RetrieveTransferOrderResponse + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *r = RetrieveTransferOrderResponse(value) + extraProperties, err := internal.ExtractExtraProperties(data, *r) + if err != nil { + return err + } + r.extraProperties = extraProperties + r.rawJSON = json.RawMessage(data) + return nil +} + +func (r *RetrieveTransferOrderResponse) String() string { + if len(r.rawJSON) > 0 { + if value, err := internal.StringifyJSON(r.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(r); err == nil { + return value + } + return fmt.Sprintf("%#v", r) +} + +// Response for searching transfer orders +type SearchTransferOrdersResponse struct { + // List of transfer orders matching the search criteria + TransferOrders []*TransferOrder `json:"transfer_orders,omitempty" url:"transfer_orders,omitempty"` + // Pagination cursor for fetching the next page of results + Cursor *string `json:"cursor,omitempty" url:"cursor,omitempty"` + // Any errors that occurred during the request + Errors []*Error `json:"errors,omitempty" url:"errors,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (s *SearchTransferOrdersResponse) GetTransferOrders() []*TransferOrder { + if s == nil { + return nil + } + return s.TransferOrders +} + +func (s *SearchTransferOrdersResponse) GetCursor() *string { + if s == nil { + return nil + } + return s.Cursor +} + +func (s *SearchTransferOrdersResponse) GetErrors() []*Error { + if s == nil { + return nil + } + return s.Errors +} + +func (s *SearchTransferOrdersResponse) GetExtraProperties() map[string]interface{} { + return s.extraProperties +} + +func (s *SearchTransferOrdersResponse) UnmarshalJSON(data []byte) error { + type unmarshaler SearchTransferOrdersResponse + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *s = SearchTransferOrdersResponse(value) + extraProperties, err := internal.ExtractExtraProperties(data, *s) + if err != nil { + return err + } + s.extraProperties = extraProperties + s.rawJSON = json.RawMessage(data) + return nil +} + +func (s *SearchTransferOrdersResponse) String() string { + if len(s.rawJSON) > 0 { + if value, err := internal.StringifyJSON(s.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(s); err == nil { + return value + } + return fmt.Sprintf("%#v", s) +} + +// Response for starting a transfer order. +type StartTransferOrderResponse struct { + // The updated transfer order with status changed to STARTED + TransferOrder *TransferOrder `json:"transfer_order,omitempty" url:"transfer_order,omitempty"` + // Any errors that occurred during the request + Errors []*Error `json:"errors,omitempty" url:"errors,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (s *StartTransferOrderResponse) GetTransferOrder() *TransferOrder { + if s == nil { + return nil + } + return s.TransferOrder +} + +func (s *StartTransferOrderResponse) GetErrors() []*Error { + if s == nil { + return nil + } + return s.Errors +} + +func (s *StartTransferOrderResponse) GetExtraProperties() map[string]interface{} { + return s.extraProperties +} + +func (s *StartTransferOrderResponse) UnmarshalJSON(data []byte) error { + type unmarshaler StartTransferOrderResponse + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *s = StartTransferOrderResponse(value) + extraProperties, err := internal.ExtractExtraProperties(data, *s) + if err != nil { + return err + } + s.extraProperties = extraProperties + s.rawJSON = json.RawMessage(data) + return nil +} + +func (s *StartTransferOrderResponse) String() string { + if len(s.rawJSON) > 0 { + if value, err := internal.StringifyJSON(s.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(s); err == nil { + return value + } + return fmt.Sprintf("%#v", s) +} + +// Represents a transfer order for moving [CatalogItemVariation](entity:CatalogItemVariation)s +// between [Location](entity:Location)s. Transfer orders track the entire lifecycle of an inventory +// transfer, including: +// - What items and quantities are being moved +// - Source and destination locations +// - Current [TransferOrderStatus](entity:TransferOrderStatus) +// - Shipping information and tracking +// - Which [TeamMember](entity:TeamMember) initiated the transfer +// +// This object is commonly used to: +// - Track [CatalogItemVariation](entity:CatalogItemVariation) movements between [Location](entity:Location)s +// - Reconcile expected vs received quantities +// - Monitor transfer progress and shipping status +// - Audit inventory movement history +type TransferOrder struct { + // Unique system-generated identifier for this transfer order. Use this ID for: + // - Retrieving transfer order details + // - Tracking status changes via webhooks + // - Linking transfers in external systems + ID *string `json:"id,omitempty" url:"id,omitempty"` + // The source [Location](entity:Location) sending the [CatalogItemVariation](entity:CatalogItemVariation)s. + // This location must: + // - Be active in your Square organization + // - Have sufficient inventory for the items being transferred + // - Not be the same as the destination location + // + // This field is not updatable. + SourceLocationID *string `json:"source_location_id,omitempty" url:"source_location_id,omitempty"` + // The destination [Location](entity:Location) receiving the [CatalogItemVariation](entity:CatalogItemVariation)s. + // This location must: + // - Be active in your Square organization + // - Not be the same as the source location + // + // This field is not updatable. + DestinationLocationID *string `json:"destination_location_id,omitempty" url:"destination_location_id,omitempty"` + // Current [TransferOrderStatus](entity:TransferOrderStatus) indicating where the order is in its lifecycle. + // Status transitions follow this progression: + // 1. [DRAFT](entity:TransferOrderStatus) -> [STARTED](entity:TransferOrderStatus) via [StartTransferOrder](api-endpoint:TransferOrders-StartTransferOrder) + // 2. [STARTED](entity:TransferOrderStatus) -> [PARTIALLY_RECEIVED](entity:TransferOrderStatus) via [ReceiveTransferOrder](api-endpoint:TransferOrders-ReceiveTransferOrder) + // 3. [PARTIALLY_RECEIVED](entity:TransferOrderStatus) -> [COMPLETED](entity:TransferOrderStatus) after all items received + // + // Orders can be [CANCELED](entity:TransferOrderStatus) from [STARTED](entity:TransferOrderStatus) or + // [PARTIALLY_RECEIVED](entity:TransferOrderStatus) status. + // + // This field is read-only and reflects the current state of the transfer order, and cannot be updated directly. Use the appropriate + // endpoints (e.g. [StartPurchaseOrder](api-endpoint:TransferOrders-StartTransferOrder), to change the status. + // See [TransferOrderStatus](#type-transferorderstatus) for possible values + Status *TransferOrderStatus `json:"status,omitempty" url:"status,omitempty"` + // Timestamp when the transfer order was created, in RFC 3339 format. + // Used for: + // - Auditing transfer history + // - Tracking order age + // - Reporting and analytics + CreatedAt *string `json:"created_at,omitempty" url:"created_at,omitempty"` + // Timestamp when the transfer order was last updated, in RFC 3339 format. + // Updated when: + // - Order status changes + // - Items are received + // - Notes or metadata are modified + UpdatedAt *string `json:"updated_at,omitempty" url:"updated_at,omitempty"` + // Expected transfer completion date, in RFC 3339 format. + // Used for: + // - Planning inventory availability + // - Scheduling receiving staff + // - Monitoring transfer timeliness + ExpectedAt *string `json:"expected_at,omitempty" url:"expected_at,omitempty"` + // Timestamp when the transfer order was completed or canceled, in RFC 3339 format (e.g. "2023-10-01T12:00:00Z"). + CompletedAt *string `json:"completed_at,omitempty" url:"completed_at,omitempty"` + // Optional notes about the transfer. + Notes *string `json:"notes,omitempty" url:"notes,omitempty"` + // Shipment tracking number for monitoring transfer progress. + TrackingNumber *string `json:"tracking_number,omitempty" url:"tracking_number,omitempty"` + // ID of the [TeamMember](entity:TeamMember) who created this transfer order. This field is not writeable by the Connect V2 API. + CreatedByTeamMemberID *string `json:"created_by_team_member_id,omitempty" url:"created_by_team_member_id,omitempty"` + // List of [CatalogItemVariation](entity:CatalogItemVariation)s being transferred. + LineItems []*TransferOrderLine `json:"line_items,omitempty" url:"line_items,omitempty"` + // Version for optimistic concurrency control. This is a monotonically increasing integer + // that changes whenever the transfer order is modified. Use this when calling + // [UpdateTransferOrder](api-endpoint:TransferOrders-UpdateTransferOrder) and other endpoints to ensure you're + // not overwriting concurrent changes. + Version *int64 `json:"version,omitempty" url:"version,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (t *TransferOrder) GetID() *string { + if t == nil { + return nil + } + return t.ID +} + +func (t *TransferOrder) GetSourceLocationID() *string { + if t == nil { + return nil + } + return t.SourceLocationID +} + +func (t *TransferOrder) GetDestinationLocationID() *string { + if t == nil { + return nil + } + return t.DestinationLocationID +} + +func (t *TransferOrder) GetStatus() *TransferOrderStatus { + if t == nil { + return nil + } + return t.Status +} + +func (t *TransferOrder) GetCreatedAt() *string { + if t == nil { + return nil + } + return t.CreatedAt +} + +func (t *TransferOrder) GetUpdatedAt() *string { + if t == nil { + return nil + } + return t.UpdatedAt +} + +func (t *TransferOrder) GetExpectedAt() *string { + if t == nil { + return nil + } + return t.ExpectedAt +} + +func (t *TransferOrder) GetCompletedAt() *string { + if t == nil { + return nil + } + return t.CompletedAt +} + +func (t *TransferOrder) GetNotes() *string { + if t == nil { + return nil + } + return t.Notes +} + +func (t *TransferOrder) GetTrackingNumber() *string { + if t == nil { + return nil + } + return t.TrackingNumber +} + +func (t *TransferOrder) GetCreatedByTeamMemberID() *string { + if t == nil { + return nil + } + return t.CreatedByTeamMemberID +} + +func (t *TransferOrder) GetLineItems() []*TransferOrderLine { + if t == nil { + return nil + } + return t.LineItems +} + +func (t *TransferOrder) GetVersion() *int64 { + if t == nil { + return nil + } + return t.Version +} + +func (t *TransferOrder) GetExtraProperties() map[string]interface{} { + return t.extraProperties +} + +func (t *TransferOrder) UnmarshalJSON(data []byte) error { + type unmarshaler TransferOrder + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *t = TransferOrder(value) + extraProperties, err := internal.ExtractExtraProperties(data, *t) + if err != nil { + return err + } + t.extraProperties = extraProperties + t.rawJSON = json.RawMessage(data) + return nil +} + +func (t *TransferOrder) String() string { + if len(t.rawJSON) > 0 { + if value, err := internal.StringifyJSON(t.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(t); err == nil { + return value + } + return fmt.Sprintf("%#v", t) +} + +// Filter criteria for searching transfer orders +type TransferOrderFilter struct { + // Filter by source location IDs + SourceLocationIDs []string `json:"source_location_ids,omitempty" url:"source_location_ids,omitempty"` + // Filter by destination location IDs + DestinationLocationIDs []string `json:"destination_location_ids,omitempty" url:"destination_location_ids,omitempty"` + // Filter by order statuses + // See [TransferOrderStatus](#type-transferorderstatus) for possible values + Statuses []TransferOrderStatus `json:"statuses,omitempty" url:"statuses,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (t *TransferOrderFilter) GetSourceLocationIDs() []string { + if t == nil { + return nil + } + return t.SourceLocationIDs +} + +func (t *TransferOrderFilter) GetDestinationLocationIDs() []string { + if t == nil { + return nil + } + return t.DestinationLocationIDs +} + +func (t *TransferOrderFilter) GetStatuses() []TransferOrderStatus { + if t == nil { + return nil + } + return t.Statuses +} + +func (t *TransferOrderFilter) GetExtraProperties() map[string]interface{} { + return t.extraProperties +} + +func (t *TransferOrderFilter) UnmarshalJSON(data []byte) error { + type unmarshaler TransferOrderFilter + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *t = TransferOrderFilter(value) + extraProperties, err := internal.ExtractExtraProperties(data, *t) + if err != nil { + return err + } + t.extraProperties = extraProperties + t.rawJSON = json.RawMessage(data) + return nil +} + +func (t *TransferOrderFilter) String() string { + if len(t.rawJSON) > 0 { + if value, err := internal.StringifyJSON(t.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(t); err == nil { + return value + } + return fmt.Sprintf("%#v", t) +} + +// The goods receipt details for a transfer order. This object represents a single receipt +// of goods against a transfer order, tracking: +// +// - Which [CatalogItemVariation](entity:CatalogItemVariation)s were received +// - Quantities received in good condition +// - Quantities damaged during transit/handling +// - Quantities canceled during receipt +// +// Multiple goods receipts can be created for a single transfer order to handle: +// - Partial deliveries +// - Multiple shipments +// - Split receipts across different dates +// - Cancellations of specific quantities +// +// Each receipt automatically: +// - Updates the transfer order status +// - Adjusts received quantities +// - Updates inventory levels at both source and destination [Location](entity:Location)s +type TransferOrderGoodsReceipt struct { + // Line items being received. Each line item specifies: + // - The item being received + // - Quantity received in good condition + // - Quantity received damaged + // - Quantity canceled + // + // Constraints: + // - Must include at least one line item + // - Maximum of 1000 line items per receipt + // - Each line item must reference a valid item from the transfer order + // - Total of received, damaged, and canceled quantities cannot exceed ordered quantity + LineItems []*TransferOrderGoodsReceiptLineItem `json:"line_items,omitempty" url:"line_items,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (t *TransferOrderGoodsReceipt) GetLineItems() []*TransferOrderGoodsReceiptLineItem { + if t == nil { + return nil + } + return t.LineItems +} + +func (t *TransferOrderGoodsReceipt) GetExtraProperties() map[string]interface{} { + return t.extraProperties +} + +func (t *TransferOrderGoodsReceipt) UnmarshalJSON(data []byte) error { + type unmarshaler TransferOrderGoodsReceipt + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *t = TransferOrderGoodsReceipt(value) + extraProperties, err := internal.ExtractExtraProperties(data, *t) + if err != nil { + return err + } + t.extraProperties = extraProperties + t.rawJSON = json.RawMessage(data) + return nil +} + +func (t *TransferOrderGoodsReceipt) String() string { + if len(t.rawJSON) > 0 { + if value, err := internal.StringifyJSON(t.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(t); err == nil { + return value + } + return fmt.Sprintf("%#v", t) +} + +// A simplified line item for goods receipts in transfer orders +type TransferOrderGoodsReceiptLineItem struct { + // The unique identifier of the Transfer Order line being received + TransferOrderLineUID string `json:"transfer_order_line_uid" url:"transfer_order_line_uid"` + // The quantity received for this line item as a decimal string (e.g. "10.5"). + // These items will be added to the destination [Location](entity:Location)'s inventory with [InventoryState](entity:InventoryState) of IN_STOCK. + QuantityReceived *string `json:"quantity_received,omitempty" url:"quantity_received,omitempty"` + // The quantity that was damaged during shipping/handling as a decimal string (e.g. "1.5"). + // These items will be added to the destination [Location](entity:Location)'s inventory with [InventoryState](entity:InventoryState) of WASTE. + QuantityDamaged *string `json:"quantity_damaged,omitempty" url:"quantity_damaged,omitempty"` + // The quantity that was canceled during shipping/handling as a decimal string (e.g. "1.5"). These will be immediately added to inventory in the source location. + QuantityCanceled *string `json:"quantity_canceled,omitempty" url:"quantity_canceled,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (t *TransferOrderGoodsReceiptLineItem) GetTransferOrderLineUID() string { + if t == nil { + return "" + } + return t.TransferOrderLineUID +} + +func (t *TransferOrderGoodsReceiptLineItem) GetQuantityReceived() *string { + if t == nil { + return nil + } + return t.QuantityReceived +} + +func (t *TransferOrderGoodsReceiptLineItem) GetQuantityDamaged() *string { + if t == nil { + return nil + } + return t.QuantityDamaged +} + +func (t *TransferOrderGoodsReceiptLineItem) GetQuantityCanceled() *string { + if t == nil { + return nil + } + return t.QuantityCanceled +} + +func (t *TransferOrderGoodsReceiptLineItem) GetExtraProperties() map[string]interface{} { + return t.extraProperties +} + +func (t *TransferOrderGoodsReceiptLineItem) UnmarshalJSON(data []byte) error { + type unmarshaler TransferOrderGoodsReceiptLineItem + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *t = TransferOrderGoodsReceiptLineItem(value) + extraProperties, err := internal.ExtractExtraProperties(data, *t) + if err != nil { + return err + } + t.extraProperties = extraProperties + t.rawJSON = json.RawMessage(data) + return nil +} + +func (t *TransferOrderGoodsReceiptLineItem) String() string { + if len(t.rawJSON) > 0 { + if value, err := internal.StringifyJSON(t.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(t); err == nil { + return value + } + return fmt.Sprintf("%#v", t) +} + +// Represents a line item in a transfer order. Each line item tracks a specific +// [CatalogItemVariation](entity:CatalogItemVariation) being transferred, including ordered quantities +// and receipt status. +type TransferOrderLine struct { + // Unique system-generated identifier for the line item. Provide when updating/removing a line via [UpdateTransferOrder](api-endpoint:TransferOrders-UpdateTransferOrder). + UID *string `json:"uid,omitempty" url:"uid,omitempty"` + // The required identifier of the [CatalogItemVariation](entity:CatalogItemVariation) being transferred. Must reference + // a valid catalog item variation that exists in the [Catalog](api:Catalog). + ItemVariationID string `json:"item_variation_id" url:"item_variation_id"` + // Total quantity ordered, formatted as a decimal string (e.g. "10 or 10.0000"). Required to be a positive number. + // + // To remove a line item, set `remove` to `true` in [UpdateTransferOrder](api-endpoint:TransferOrders-UpdateTransferOrder). + QuantityOrdered string `json:"quantity_ordered" url:"quantity_ordered"` + // Calculated quantity of this line item's yet to be received stock. This is the difference between the total quantity ordered and the sum of quantities received, canceled, and damaged. + QuantityPending *string `json:"quantity_pending,omitempty" url:"quantity_pending,omitempty"` + // Quantity received at destination. These items are added to the destination + // [Location](entity:Location)'s inventory with [InventoryState](entity:InventoryState) of IN_STOCK. + // + // This field cannot be updated directly in Create/Update operations, instead use [ReceiveTransferOrder](api-endpoint:TransferOrders-ReceiveTransferOrder). + QuantityReceived *string `json:"quantity_received,omitempty" url:"quantity_received,omitempty"` + // Quantity received in damaged condition. These items are added to the destination + // [Location](entity:Location)'s inventory with [InventoryState](entity:InventoryState) of WASTE. + // + // This field cannot be updated directly in Create/Update operations, instead use [ReceiveTransferOrder](api-endpoint:TransferOrders-ReceiveTransferOrder). + QuantityDamaged *string `json:"quantity_damaged,omitempty" url:"quantity_damaged,omitempty"` + // Quantity that was canceled. These items will be immediately added to inventory in the source location. + // + // This field cannot be updated directly in Create/Update operations, instead use [ReceiveTransferOrder](api-endpoint:TransferOrders-ReceiveTransferOrder) or [CancelTransferOrder](api-endpoint:TransferOrders-CancelTransferOrder). + QuantityCanceled *string `json:"quantity_canceled,omitempty" url:"quantity_canceled,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (t *TransferOrderLine) GetUID() *string { + if t == nil { + return nil + } + return t.UID +} + +func (t *TransferOrderLine) GetItemVariationID() string { + if t == nil { + return "" + } + return t.ItemVariationID +} + +func (t *TransferOrderLine) GetQuantityOrdered() string { + if t == nil { + return "" + } + return t.QuantityOrdered +} + +func (t *TransferOrderLine) GetQuantityPending() *string { + if t == nil { + return nil + } + return t.QuantityPending +} + +func (t *TransferOrderLine) GetQuantityReceived() *string { + if t == nil { + return nil + } + return t.QuantityReceived +} + +func (t *TransferOrderLine) GetQuantityDamaged() *string { + if t == nil { + return nil + } + return t.QuantityDamaged +} + +func (t *TransferOrderLine) GetQuantityCanceled() *string { + if t == nil { + return nil + } + return t.QuantityCanceled +} + +func (t *TransferOrderLine) GetExtraProperties() map[string]interface{} { + return t.extraProperties +} + +func (t *TransferOrderLine) UnmarshalJSON(data []byte) error { + type unmarshaler TransferOrderLine + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *t = TransferOrderLine(value) + extraProperties, err := internal.ExtractExtraProperties(data, *t) + if err != nil { + return err + } + t.extraProperties = extraProperties + t.rawJSON = json.RawMessage(data) + return nil +} + +func (t *TransferOrderLine) String() string { + if len(t.rawJSON) > 0 { + if value, err := internal.StringifyJSON(t.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(t); err == nil { + return value + } + return fmt.Sprintf("%#v", t) +} + +// Query parameters for searching transfer orders +type TransferOrderQuery struct { + // Filter criteria + Filter *TransferOrderFilter `json:"filter,omitempty" url:"filter,omitempty"` + // Sort configuration + Sort *TransferOrderSort `json:"sort,omitempty" url:"sort,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (t *TransferOrderQuery) GetFilter() *TransferOrderFilter { + if t == nil { + return nil + } + return t.Filter +} + +func (t *TransferOrderQuery) GetSort() *TransferOrderSort { + if t == nil { + return nil + } + return t.Sort +} + +func (t *TransferOrderQuery) GetExtraProperties() map[string]interface{} { + return t.extraProperties +} + +func (t *TransferOrderQuery) UnmarshalJSON(data []byte) error { + type unmarshaler TransferOrderQuery + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *t = TransferOrderQuery(value) + extraProperties, err := internal.ExtractExtraProperties(data, *t) + if err != nil { + return err + } + t.extraProperties = extraProperties + t.rawJSON = json.RawMessage(data) + return nil +} + +func (t *TransferOrderQuery) String() string { + if len(t.rawJSON) > 0 { + if value, err := internal.StringifyJSON(t.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(t); err == nil { + return value + } + return fmt.Sprintf("%#v", t) +} + +// Sort configuration for search results +type TransferOrderSort struct { + // Field to sort by + // See [TransferOrderSortField](#type-transferordersortfield) for possible values + Field *TransferOrderSortField `json:"field,omitempty" url:"field,omitempty"` + // Sort order direction + // See [SortOrder](#type-sortorder) for possible values + Order *SortOrder `json:"order,omitempty" url:"order,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (t *TransferOrderSort) GetField() *TransferOrderSortField { + if t == nil { + return nil + } + return t.Field +} + +func (t *TransferOrderSort) GetOrder() *SortOrder { + if t == nil { + return nil + } + return t.Order +} + +func (t *TransferOrderSort) GetExtraProperties() map[string]interface{} { + return t.extraProperties +} + +func (t *TransferOrderSort) UnmarshalJSON(data []byte) error { + type unmarshaler TransferOrderSort + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *t = TransferOrderSort(value) + extraProperties, err := internal.ExtractExtraProperties(data, *t) + if err != nil { + return err + } + t.extraProperties = extraProperties + t.rawJSON = json.RawMessage(data) + return nil +} + +func (t *TransferOrderSort) String() string { + if len(t.rawJSON) > 0 { + if value, err := internal.StringifyJSON(t.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(t); err == nil { + return value + } + return fmt.Sprintf("%#v", t) +} + +// Fields that can be used for sorting [TransferOrder](entity:TransferOrder)s in search results. +// Used with [SearchTransferOrders](api-endpoint:TransferOrders-SearchTransferOrders) to control +// the order of returned results. +type TransferOrderSortField string + +const ( + TransferOrderSortFieldCreatedAt TransferOrderSortField = "CREATED_AT" + TransferOrderSortFieldUpdatedAt TransferOrderSortField = "UPDATED_AT" +) + +func NewTransferOrderSortFieldFromString(s string) (TransferOrderSortField, error) { + switch s { + case "CREATED_AT": + return TransferOrderSortFieldCreatedAt, nil + case "UPDATED_AT": + return TransferOrderSortFieldUpdatedAt, nil + } + var t TransferOrderSortField + return "", fmt.Errorf("%s is not a valid %T", s, t) +} + +func (t TransferOrderSortField) Ptr() *TransferOrderSortField { + return &t +} + +// Status values for transfer orders. Represents the current state of a +// [TransferOrder](entity:TransferOrder) in its lifecycle from creation to completion. +// Each status determines what actions are available and how inventory is affected. +type TransferOrderStatus string + +const ( + TransferOrderStatusDraft TransferOrderStatus = "DRAFT" + TransferOrderStatusStarted TransferOrderStatus = "STARTED" + TransferOrderStatusPartiallyReceived TransferOrderStatus = "PARTIALLY_RECEIVED" + TransferOrderStatusCompleted TransferOrderStatus = "COMPLETED" + TransferOrderStatusCanceled TransferOrderStatus = "CANCELED" +) + +func NewTransferOrderStatusFromString(s string) (TransferOrderStatus, error) { + switch s { + case "DRAFT": + return TransferOrderStatusDraft, nil + case "STARTED": + return TransferOrderStatusStarted, nil + case "PARTIALLY_RECEIVED": + return TransferOrderStatusPartiallyReceived, nil + case "COMPLETED": + return TransferOrderStatusCompleted, nil + case "CANCELED": + return TransferOrderStatusCanceled, nil + } + var t TransferOrderStatus + return "", fmt.Errorf("%s is not a valid %T", s, t) +} + +func (t TransferOrderStatus) Ptr() *TransferOrderStatus { + return &t +} + +// Data model for updating a transfer order. All fields are optional. +type UpdateTransferOrderData struct { + // The source [Location](entity:Location) that will send the items. Must be an active location + // in your Square account with sufficient inventory of the requested items. + SourceLocationID *string `json:"source_location_id,omitempty" url:"source_location_id,omitempty"` + // The destination [Location](entity:Location) that will receive the items. Must be an active location + // in your Square account. + DestinationLocationID *string `json:"destination_location_id,omitempty" url:"destination_location_id,omitempty"` + // Expected transfer date in RFC 3339 format (e.g. "2023-10-01T12:00:00Z"). + ExpectedAt *string `json:"expected_at,omitempty" url:"expected_at,omitempty"` + // Optional notes about the transfer + Notes *string `json:"notes,omitempty" url:"notes,omitempty"` + // Shipment tracking number + TrackingNumber *string `json:"tracking_number,omitempty" url:"tracking_number,omitempty"` + // List of items being transferred + LineItems []*UpdateTransferOrderLineData `json:"line_items,omitempty" url:"line_items,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (u *UpdateTransferOrderData) GetSourceLocationID() *string { + if u == nil { + return nil + } + return u.SourceLocationID +} + +func (u *UpdateTransferOrderData) GetDestinationLocationID() *string { + if u == nil { + return nil + } + return u.DestinationLocationID +} + +func (u *UpdateTransferOrderData) GetExpectedAt() *string { + if u == nil { + return nil + } + return u.ExpectedAt +} + +func (u *UpdateTransferOrderData) GetNotes() *string { + if u == nil { + return nil + } + return u.Notes +} + +func (u *UpdateTransferOrderData) GetTrackingNumber() *string { + if u == nil { + return nil + } + return u.TrackingNumber +} + +func (u *UpdateTransferOrderData) GetLineItems() []*UpdateTransferOrderLineData { + if u == nil { + return nil + } + return u.LineItems +} + +func (u *UpdateTransferOrderData) GetExtraProperties() map[string]interface{} { + return u.extraProperties +} + +func (u *UpdateTransferOrderData) UnmarshalJSON(data []byte) error { + type unmarshaler UpdateTransferOrderData + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *u = UpdateTransferOrderData(value) + extraProperties, err := internal.ExtractExtraProperties(data, *u) + if err != nil { + return err + } + u.extraProperties = extraProperties + u.rawJSON = json.RawMessage(data) + return nil +} + +func (u *UpdateTransferOrderData) String() string { + if len(u.rawJSON) > 0 { + if value, err := internal.StringifyJSON(u.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(u); err == nil { + return value + } + return fmt.Sprintf("%#v", u) +} + +// Represents a line item update in a transfer order +type UpdateTransferOrderLineData struct { + // Line item id being updated. Required for updating/removing existing line items, but should not be set for new line items. + UID *string `json:"uid,omitempty" url:"uid,omitempty"` + // Catalog item variation being transferred + // + // Required for new line items, but otherwise is not updatable. + ItemVariationID *string `json:"item_variation_id,omitempty" url:"item_variation_id,omitempty"` + // Total quantity ordered + QuantityOrdered *string `json:"quantity_ordered,omitempty" url:"quantity_ordered,omitempty"` + // Flag to remove the line item during update. Must include `uid` in removal request + Remove *bool `json:"remove,omitempty" url:"remove,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (u *UpdateTransferOrderLineData) GetUID() *string { + if u == nil { + return nil + } + return u.UID +} + +func (u *UpdateTransferOrderLineData) GetItemVariationID() *string { + if u == nil { + return nil + } + return u.ItemVariationID +} + +func (u *UpdateTransferOrderLineData) GetQuantityOrdered() *string { + if u == nil { + return nil + } + return u.QuantityOrdered +} + +func (u *UpdateTransferOrderLineData) GetRemove() *bool { + if u == nil { + return nil + } + return u.Remove +} + +func (u *UpdateTransferOrderLineData) GetExtraProperties() map[string]interface{} { + return u.extraProperties +} + +func (u *UpdateTransferOrderLineData) UnmarshalJSON(data []byte) error { + type unmarshaler UpdateTransferOrderLineData + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *u = UpdateTransferOrderLineData(value) + extraProperties, err := internal.ExtractExtraProperties(data, *u) + if err != nil { + return err + } + u.extraProperties = extraProperties + u.rawJSON = json.RawMessage(data) + return nil +} + +func (u *UpdateTransferOrderLineData) String() string { + if len(u.rawJSON) > 0 { + if value, err := internal.StringifyJSON(u.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(u); err == nil { + return value + } + return fmt.Sprintf("%#v", u) +} + +// Response for updating a transfer order +type UpdateTransferOrderResponse struct { + // The updated transfer order + TransferOrder *TransferOrder `json:"transfer_order,omitempty" url:"transfer_order,omitempty"` + // Any errors that occurred during the request + Errors []*Error `json:"errors,omitempty" url:"errors,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (u *UpdateTransferOrderResponse) GetTransferOrder() *TransferOrder { + if u == nil { + return nil + } + return u.TransferOrder +} + +func (u *UpdateTransferOrderResponse) GetErrors() []*Error { + if u == nil { + return nil + } + return u.Errors +} + +func (u *UpdateTransferOrderResponse) GetExtraProperties() map[string]interface{} { + return u.extraProperties +} + +func (u *UpdateTransferOrderResponse) UnmarshalJSON(data []byte) error { + type unmarshaler UpdateTransferOrderResponse + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *u = UpdateTransferOrderResponse(value) + extraProperties, err := internal.ExtractExtraProperties(data, *u) + if err != nil { + return err + } + u.extraProperties = extraProperties + u.rawJSON = json.RawMessage(data) + return nil +} + +func (u *UpdateTransferOrderResponse) String() string { + if len(u.rawJSON) > 0 { + if value, err := internal.StringifyJSON(u.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(u); err == nil { + return value + } + return fmt.Sprintf("%#v", u) +} + +type UpdateTransferOrderRequest struct { + // The ID of the transfer order to update + TransferOrderID string `json:"-" url:"-"` + // A unique string that identifies this UpdateTransferOrder request. Keys must contain only alphanumeric characters, dashes and underscores + IdempotencyKey string `json:"idempotency_key" url:"-"` + // The transfer order updates to apply + TransferOrder *UpdateTransferOrderData `json:"transfer_order,omitempty" url:"-"` + // Version for optimistic concurrency + Version *int64 `json:"version,omitempty" url:"-"` +} diff --git a/transferorders/client.go b/transferorders/client.go new file mode 100644 index 0000000..d222972 --- /dev/null +++ b/transferorders/client.go @@ -0,0 +1,247 @@ +// Code generated by Fern. DO NOT EDIT. + +package transferorders + +import ( + context "context" + v2 "github.com/square/square-go-sdk/v2" + core "github.com/square/square-go-sdk/v2/core" + internal "github.com/square/square-go-sdk/v2/internal" + option "github.com/square/square-go-sdk/v2/option" + http "net/http" + os "os" +) + +type Client struct { + WithRawResponse *RawClient + + baseURL string + caller *internal.Caller + header http.Header +} + +func NewClient(opts ...option.RequestOption) *Client { + options := core.NewRequestOptions(opts...) + if options.Token == "" { + options.Token = os.Getenv("SQUARE_TOKEN") + } + if options.Version == "" { + options.Version = os.Getenv("VERSION") + } + return &Client{ + WithRawResponse: NewRawClient(options), + baseURL: options.BaseURL, + caller: internal.NewCaller( + &internal.CallerParams{ + Client: options.HTTPClient, + MaxAttempts: options.MaxAttempts, + }, + ), + header: options.ToHeader(), + } +} + +// Creates a new transfer order in [DRAFT](entity:TransferOrderStatus) status. A transfer order represents the intent +// to move [CatalogItemVariation](entity:CatalogItemVariation)s from one [Location](entity:Location) to another. +// The source and destination locations must be different and must belong to your Square account. +// +// In [DRAFT](entity:TransferOrderStatus) status, you can: +// - Add or remove items +// - Modify quantities +// - Update shipping information +// - Delete the entire order via [DeleteTransferOrder](api-endpoint:TransferOrders-DeleteTransferOrder) +// +// The request requires source_location_id and destination_location_id. +// Inventory levels are not affected until the order is started via +// [StartTransferOrder](api-endpoint:TransferOrders-StartTransferOrder). +// +// Common integration points: +// - Sync with warehouse management systems +// - Automate regular stock transfers +// - Initialize transfers from inventory optimization systems +// +// Creates a [transfer_order.created](webhook:transfer_order.created) webhook event. +func (c *Client) Create( + ctx context.Context, + request *v2.CreateTransferOrderRequest, + opts ...option.RequestOption, +) (*v2.CreateTransferOrderResponse, error) { + response, err := c.WithRawResponse.Create( + ctx, + request, + opts..., + ) + if err != nil { + return nil, err + } + return response.Body, nil +} + +// Searches for transfer orders using filters. Returns a paginated list of matching +// [TransferOrder](entity:TransferOrder)s sorted by creation date. +// +// Common search scenarios: +// - Find orders for a source [Location](entity:Location) +// - Find orders for a destination [Location](entity:Location) +// - Find orders in a particular [TransferOrderStatus](entity:TransferOrderStatus) +func (c *Client) Search( + ctx context.Context, + request *v2.SearchTransferOrdersRequest, + opts ...option.RequestOption, +) (*v2.SearchTransferOrdersResponse, error) { + response, err := c.WithRawResponse.Search( + ctx, + request, + opts..., + ) + if err != nil { + return nil, err + } + return response.Body, nil +} + +// Retrieves a specific [TransferOrder](entity:TransferOrder) by ID. Returns the complete +// order details including: +// +// - Basic information (status, dates, notes) +// - Line items with ordered and received quantities +// - Source and destination [Location](entity:Location)s +// - Tracking information (if available) +func (c *Client) Get( + ctx context.Context, + request *v2.GetTransferOrdersRequest, + opts ...option.RequestOption, +) (*v2.RetrieveTransferOrderResponse, error) { + response, err := c.WithRawResponse.Get( + ctx, + request, + opts..., + ) + if err != nil { + return nil, err + } + return response.Body, nil +} + +// Updates an existing transfer order. This endpoint supports sparse updates, +// allowing you to modify specific fields without affecting others. +// +// Creates a [transfer_order.updated](webhook:transfer_order.updated) webhook event. +func (c *Client) Update( + ctx context.Context, + request *v2.UpdateTransferOrderRequest, + opts ...option.RequestOption, +) (*v2.UpdateTransferOrderResponse, error) { + response, err := c.WithRawResponse.Update( + ctx, + request, + opts..., + ) + if err != nil { + return nil, err + } + return response.Body, nil +} + +// Deletes a transfer order in [DRAFT](entity:TransferOrderStatus) status. +// Only draft orders can be deleted. Once an order is started via +// [StartTransferOrder](api-endpoint:TransferOrders-StartTransferOrder), it can no longer be deleted. +// +// Creates a [transfer_order.deleted](webhook:transfer_order.deleted) webhook event. +func (c *Client) Delete( + ctx context.Context, + request *v2.DeleteTransferOrdersRequest, + opts ...option.RequestOption, +) (*v2.DeleteTransferOrderResponse, error) { + response, err := c.WithRawResponse.Delete( + ctx, + request, + opts..., + ) + if err != nil { + return nil, err + } + return response.Body, nil +} + +// Cancels a transfer order in [STARTED](entity:TransferOrderStatus) or +// [PARTIALLY_RECEIVED](entity:TransferOrderStatus) status. Any unreceived quantities will no +// longer be receivable and will be immediately returned to the source [Location](entity:Location)'s inventory. +// +// Common reasons for cancellation: +// - Items no longer needed at destination +// - Source location needs the inventory +// - Order created in error +// +// Creates a [transfer_order.updated](webhook:transfer_order.updated) webhook event. +func (c *Client) Cancel( + ctx context.Context, + request *v2.CancelTransferOrderRequest, + opts ...option.RequestOption, +) (*v2.CancelTransferOrderResponse, error) { + response, err := c.WithRawResponse.Cancel( + ctx, + request, + opts..., + ) + if err != nil { + return nil, err + } + return response.Body, nil +} + +// Records receipt of [CatalogItemVariation](entity:CatalogItemVariation)s for a transfer order. +// This endpoint supports partial receiving - you can receive items in multiple batches. +// +// For each line item, you can specify: +// - Quantity received in good condition (added to destination inventory with [InventoryState](entity:InventoryState) of IN_STOCK) +// - Quantity damaged during transit/handling (added to destination inventory with [InventoryState](entity:InventoryState) of WASTE) +// - Quantity canceled (returned to source location's inventory) +// +// The order must be in [STARTED](entity:TransferOrderStatus) or [PARTIALLY_RECEIVED](entity:TransferOrderStatus) status. +// Received quantities are added to the destination [Location](entity:Location)'s inventory according to their condition. +// Canceled quantities are immediately returned to the source [Location](entity:Location)'s inventory. +// +// When all items are either received, damaged, or canceled, the order moves to +// [COMPLETED](entity:TransferOrderStatus) status. +// +// Creates a [transfer_order.updated](webhook:transfer_order.updated) webhook event. +func (c *Client) Receive( + ctx context.Context, + request *v2.ReceiveTransferOrderRequest, + opts ...option.RequestOption, +) (*v2.ReceiveTransferOrderResponse, error) { + response, err := c.WithRawResponse.Receive( + ctx, + request, + opts..., + ) + if err != nil { + return nil, err + } + return response.Body, nil +} + +// Changes a [DRAFT](entity:TransferOrderStatus) transfer order to [STARTED](entity:TransferOrderStatus) status. +// This decrements inventory at the source [Location](entity:Location) and marks it as in-transit. +// +// The order must be in [DRAFT](entity:TransferOrderStatus) status and have all required fields populated. +// Once started, the order can no longer be deleted, but it can be canceled via +// [CancelTransferOrder](api-endpoint:TransferOrders-CancelTransferOrder). +// +// Creates a [transfer_order.updated](webhook:transfer_order.updated) webhook event. +func (c *Client) Start( + ctx context.Context, + request *v2.StartTransferOrderRequest, + opts ...option.RequestOption, +) (*v2.StartTransferOrderResponse, error) { + response, err := c.WithRawResponse.Start( + ctx, + request, + opts..., + ) + if err != nil { + return nil, err + } + return response.Body, nil +} diff --git a/transferorders/raw_client.go b/transferorders/raw_client.go new file mode 100644 index 0000000..9c77050 --- /dev/null +++ b/transferorders/raw_client.go @@ -0,0 +1,388 @@ +// Code generated by Fern. DO NOT EDIT. + +package transferorders + +import ( + context "context" + v2 "github.com/square/square-go-sdk/v2" + core "github.com/square/square-go-sdk/v2/core" + internal "github.com/square/square-go-sdk/v2/internal" + option "github.com/square/square-go-sdk/v2/option" + http "net/http" +) + +type RawClient struct { + baseURL string + caller *internal.Caller + header http.Header +} + +func NewRawClient(options *core.RequestOptions) *RawClient { + return &RawClient{ + baseURL: options.BaseURL, + caller: internal.NewCaller( + &internal.CallerParams{ + Client: options.HTTPClient, + MaxAttempts: options.MaxAttempts, + }, + ), + header: options.ToHeader(), + } +} + +func (r *RawClient) Create( + ctx context.Context, + request *v2.CreateTransferOrderRequest, + opts ...option.RequestOption, +) (*core.Response[*v2.CreateTransferOrderResponse], error) { + options := core.NewRequestOptions(opts...) + baseURL := internal.ResolveBaseURL( + options.BaseURL, + r.baseURL, + "https://connect.squareup.com", + ) + endpointURL := baseURL + "/v2/transfer-orders" + headers := internal.MergeHeaders( + r.header.Clone(), + options.ToHeader(), + ) + headers.Add("Content-Type", "application/json") + var response *v2.CreateTransferOrderResponse + raw, err := r.caller.Call( + ctx, + &internal.CallParams{ + URL: endpointURL, + Method: http.MethodPost, + Headers: headers, + MaxAttempts: options.MaxAttempts, + BodyProperties: options.BodyProperties, + QueryParameters: options.QueryParameters, + Client: options.HTTPClient, + Request: request, + Response: &response, + }, + ) + if err != nil { + return nil, err + } + return &core.Response[*v2.CreateTransferOrderResponse]{ + StatusCode: raw.StatusCode, + Header: raw.Header, + Body: response, + }, nil +} + +func (r *RawClient) Search( + ctx context.Context, + request *v2.SearchTransferOrdersRequest, + opts ...option.RequestOption, +) (*core.Response[*v2.SearchTransferOrdersResponse], error) { + options := core.NewRequestOptions(opts...) + baseURL := internal.ResolveBaseURL( + options.BaseURL, + r.baseURL, + "https://connect.squareup.com", + ) + endpointURL := baseURL + "/v2/transfer-orders/search" + headers := internal.MergeHeaders( + r.header.Clone(), + options.ToHeader(), + ) + headers.Add("Content-Type", "application/json") + var response *v2.SearchTransferOrdersResponse + raw, err := r.caller.Call( + ctx, + &internal.CallParams{ + URL: endpointURL, + Method: http.MethodPost, + Headers: headers, + MaxAttempts: options.MaxAttempts, + BodyProperties: options.BodyProperties, + QueryParameters: options.QueryParameters, + Client: options.HTTPClient, + Request: request, + Response: &response, + }, + ) + if err != nil { + return nil, err + } + return &core.Response[*v2.SearchTransferOrdersResponse]{ + StatusCode: raw.StatusCode, + Header: raw.Header, + Body: response, + }, nil +} + +func (r *RawClient) Get( + ctx context.Context, + request *v2.GetTransferOrdersRequest, + opts ...option.RequestOption, +) (*core.Response[*v2.RetrieveTransferOrderResponse], error) { + options := core.NewRequestOptions(opts...) + baseURL := internal.ResolveBaseURL( + options.BaseURL, + r.baseURL, + "https://connect.squareup.com", + ) + endpointURL := internal.EncodeURL( + baseURL+"/v2/transfer-orders/%v", + request.TransferOrderID, + ) + headers := internal.MergeHeaders( + r.header.Clone(), + options.ToHeader(), + ) + var response *v2.RetrieveTransferOrderResponse + raw, err := r.caller.Call( + ctx, + &internal.CallParams{ + URL: endpointURL, + Method: http.MethodGet, + Headers: headers, + MaxAttempts: options.MaxAttempts, + BodyProperties: options.BodyProperties, + QueryParameters: options.QueryParameters, + Client: options.HTTPClient, + Response: &response, + }, + ) + if err != nil { + return nil, err + } + return &core.Response[*v2.RetrieveTransferOrderResponse]{ + StatusCode: raw.StatusCode, + Header: raw.Header, + Body: response, + }, nil +} + +func (r *RawClient) Update( + ctx context.Context, + request *v2.UpdateTransferOrderRequest, + opts ...option.RequestOption, +) (*core.Response[*v2.UpdateTransferOrderResponse], error) { + options := core.NewRequestOptions(opts...) + baseURL := internal.ResolveBaseURL( + options.BaseURL, + r.baseURL, + "https://connect.squareup.com", + ) + endpointURL := internal.EncodeURL( + baseURL+"/v2/transfer-orders/%v", + request.TransferOrderID, + ) + headers := internal.MergeHeaders( + r.header.Clone(), + options.ToHeader(), + ) + headers.Add("Content-Type", "application/json") + var response *v2.UpdateTransferOrderResponse + raw, err := r.caller.Call( + ctx, + &internal.CallParams{ + URL: endpointURL, + Method: http.MethodPut, + Headers: headers, + MaxAttempts: options.MaxAttempts, + BodyProperties: options.BodyProperties, + QueryParameters: options.QueryParameters, + Client: options.HTTPClient, + Request: request, + Response: &response, + }, + ) + if err != nil { + return nil, err + } + return &core.Response[*v2.UpdateTransferOrderResponse]{ + StatusCode: raw.StatusCode, + Header: raw.Header, + Body: response, + }, nil +} + +func (r *RawClient) Delete( + ctx context.Context, + request *v2.DeleteTransferOrdersRequest, + opts ...option.RequestOption, +) (*core.Response[*v2.DeleteTransferOrderResponse], error) { + options := core.NewRequestOptions(opts...) + baseURL := internal.ResolveBaseURL( + options.BaseURL, + r.baseURL, + "https://connect.squareup.com", + ) + endpointURL := internal.EncodeURL( + baseURL+"/v2/transfer-orders/%v", + request.TransferOrderID, + ) + queryParams, err := internal.QueryValues(request) + if err != nil { + return nil, err + } + if len(queryParams) > 0 { + endpointURL += "?" + queryParams.Encode() + } + headers := internal.MergeHeaders( + r.header.Clone(), + options.ToHeader(), + ) + var response *v2.DeleteTransferOrderResponse + raw, err := r.caller.Call( + ctx, + &internal.CallParams{ + URL: endpointURL, + Method: http.MethodDelete, + Headers: headers, + MaxAttempts: options.MaxAttempts, + BodyProperties: options.BodyProperties, + QueryParameters: options.QueryParameters, + Client: options.HTTPClient, + Response: &response, + }, + ) + if err != nil { + return nil, err + } + return &core.Response[*v2.DeleteTransferOrderResponse]{ + StatusCode: raw.StatusCode, + Header: raw.Header, + Body: response, + }, nil +} + +func (r *RawClient) Cancel( + ctx context.Context, + request *v2.CancelTransferOrderRequest, + opts ...option.RequestOption, +) (*core.Response[*v2.CancelTransferOrderResponse], error) { + options := core.NewRequestOptions(opts...) + baseURL := internal.ResolveBaseURL( + options.BaseURL, + r.baseURL, + "https://connect.squareup.com", + ) + endpointURL := internal.EncodeURL( + baseURL+"/v2/transfer-orders/%v/cancel", + request.TransferOrderID, + ) + headers := internal.MergeHeaders( + r.header.Clone(), + options.ToHeader(), + ) + headers.Add("Content-Type", "application/json") + var response *v2.CancelTransferOrderResponse + raw, err := r.caller.Call( + ctx, + &internal.CallParams{ + URL: endpointURL, + Method: http.MethodPost, + Headers: headers, + MaxAttempts: options.MaxAttempts, + BodyProperties: options.BodyProperties, + QueryParameters: options.QueryParameters, + Client: options.HTTPClient, + Request: request, + Response: &response, + }, + ) + if err != nil { + return nil, err + } + return &core.Response[*v2.CancelTransferOrderResponse]{ + StatusCode: raw.StatusCode, + Header: raw.Header, + Body: response, + }, nil +} + +func (r *RawClient) Receive( + ctx context.Context, + request *v2.ReceiveTransferOrderRequest, + opts ...option.RequestOption, +) (*core.Response[*v2.ReceiveTransferOrderResponse], error) { + options := core.NewRequestOptions(opts...) + baseURL := internal.ResolveBaseURL( + options.BaseURL, + r.baseURL, + "https://connect.squareup.com", + ) + endpointURL := internal.EncodeURL( + baseURL+"/v2/transfer-orders/%v/receive", + request.TransferOrderID, + ) + headers := internal.MergeHeaders( + r.header.Clone(), + options.ToHeader(), + ) + headers.Add("Content-Type", "application/json") + var response *v2.ReceiveTransferOrderResponse + raw, err := r.caller.Call( + ctx, + &internal.CallParams{ + URL: endpointURL, + Method: http.MethodPost, + Headers: headers, + MaxAttempts: options.MaxAttempts, + BodyProperties: options.BodyProperties, + QueryParameters: options.QueryParameters, + Client: options.HTTPClient, + Request: request, + Response: &response, + }, + ) + if err != nil { + return nil, err + } + return &core.Response[*v2.ReceiveTransferOrderResponse]{ + StatusCode: raw.StatusCode, + Header: raw.Header, + Body: response, + }, nil +} + +func (r *RawClient) Start( + ctx context.Context, + request *v2.StartTransferOrderRequest, + opts ...option.RequestOption, +) (*core.Response[*v2.StartTransferOrderResponse], error) { + options := core.NewRequestOptions(opts...) + baseURL := internal.ResolveBaseURL( + options.BaseURL, + r.baseURL, + "https://connect.squareup.com", + ) + endpointURL := internal.EncodeURL( + baseURL+"/v2/transfer-orders/%v/start", + request.TransferOrderID, + ) + headers := internal.MergeHeaders( + r.header.Clone(), + options.ToHeader(), + ) + headers.Add("Content-Type", "application/json") + var response *v2.StartTransferOrderResponse + raw, err := r.caller.Call( + ctx, + &internal.CallParams{ + URL: endpointURL, + Method: http.MethodPost, + Headers: headers, + MaxAttempts: options.MaxAttempts, + BodyProperties: options.BodyProperties, + QueryParameters: options.QueryParameters, + Client: options.HTTPClient, + Request: request, + Response: &response, + }, + ) + if err != nil { + return nil, err + } + return &core.Response[*v2.StartTransferOrderResponse]{ + StatusCode: raw.StatusCode, + Header: raw.Header, + Body: response, + }, nil +} diff --git a/types.go b/types.go index 541f34c..28d4ecc 100644 --- a/types.go +++ b/types.go @@ -3612,6 +3612,8 @@ func (b *BulkDeleteOrderCustomAttributesResponse) String() string { return fmt.Sprintf("%#v", b) } +type BulkRetrieveChannelsRequestConstants = string + // Represents a [BulkUpsertBookingCustomAttributes](api-endpoint:BookingCustomAttributes-BulkUpsertBookingCustomAttributes) response, // which contains a map of responses that each corresponds to an individual upsert request. type BulkUpsertBookingCustomAttributesResponse struct { @@ -18098,7 +18100,11 @@ type CustomAttribute struct { // // The value for a simple key can contain up to 60 alphanumeric characters, periods (.), // underscores (_), and hyphens (-). - Key *string `json:"key,omitempty" url:"key,omitempty"` + Key *string `json:"key,omitempty" url:"key,omitempty"` + // The value assigned to the custom attribute. It is validated against the custom + // attribute definition's schema on write operations. For more information about custom + // attribute values, + // see [Custom Attributes Overview](https://developer.squareup.com/docs/devtools/customattributes/overview). Value interface{} `json:"value,omitempty" url:"value,omitempty"` // Read only. The current version of the custom attribute. This field is incremented when the custom attribute is changed. // When updating an existing custom attribute value, you can provide this field @@ -35856,6 +35862,8 @@ func (l *ListCashDrawerShiftsResponse) String() string { return fmt.Sprintf("%#v", l) } +type ListChannelsRequestConstants = string + // Represents a [ListCustomerCustomAttributeDefinitions](api-endpoint:CustomerCustomAttributes-ListCustomerCustomAttributeDefinitions) response. // Either `custom_attribute_definitions`, an empty object, or `errors` is present in the response. // If additional results are available, the `cursor` field is also present along with `custom_attribute_definitions`. @@ -60080,6 +60088,547 @@ func (t TransactionType) Ptr() *TransactionType { return &t } +// Published when a transfer_order is created. +type TransferOrderCreatedEvent struct { + // The ID of the target merchant associated with the event. + MerchantID *string `json:"merchant_id,omitempty" url:"merchant_id,omitempty"` + // The type of event this represents, `"transfer_order.created"`. + Type *string `json:"type,omitempty" url:"type,omitempty"` + // A unique ID for the event. + EventID *string `json:"event_id,omitempty" url:"event_id,omitempty"` + // Timestamp of when the event was created, in RFC 3339 format. + CreatedAt *string `json:"created_at,omitempty" url:"created_at,omitempty"` + // Data associated with the event. + Data *TransferOrderCreatedEventData `json:"data,omitempty" url:"data,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (t *TransferOrderCreatedEvent) GetMerchantID() *string { + if t == nil { + return nil + } + return t.MerchantID +} + +func (t *TransferOrderCreatedEvent) GetType() *string { + if t == nil { + return nil + } + return t.Type +} + +func (t *TransferOrderCreatedEvent) GetEventID() *string { + if t == nil { + return nil + } + return t.EventID +} + +func (t *TransferOrderCreatedEvent) GetCreatedAt() *string { + if t == nil { + return nil + } + return t.CreatedAt +} + +func (t *TransferOrderCreatedEvent) GetData() *TransferOrderCreatedEventData { + if t == nil { + return nil + } + return t.Data +} + +func (t *TransferOrderCreatedEvent) GetExtraProperties() map[string]interface{} { + return t.extraProperties +} + +func (t *TransferOrderCreatedEvent) UnmarshalJSON(data []byte) error { + type unmarshaler TransferOrderCreatedEvent + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *t = TransferOrderCreatedEvent(value) + extraProperties, err := internal.ExtractExtraProperties(data, *t) + if err != nil { + return err + } + t.extraProperties = extraProperties + t.rawJSON = json.RawMessage(data) + return nil +} + +func (t *TransferOrderCreatedEvent) String() string { + if len(t.rawJSON) > 0 { + if value, err := internal.StringifyJSON(t.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(t); err == nil { + return value + } + return fmt.Sprintf("%#v", t) +} + +type TransferOrderCreatedEventData struct { + // Name of the affected object’s type, `"transfer_order"`. + Type *string `json:"type,omitempty" url:"type,omitempty"` + // ID of the affected transfer_order. + ID *string `json:"id,omitempty" url:"id,omitempty"` + // An object containing the created transfer_order. + Object *TransferOrderCreatedEventObject `json:"object,omitempty" url:"object,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (t *TransferOrderCreatedEventData) GetType() *string { + if t == nil { + return nil + } + return t.Type +} + +func (t *TransferOrderCreatedEventData) GetID() *string { + if t == nil { + return nil + } + return t.ID +} + +func (t *TransferOrderCreatedEventData) GetObject() *TransferOrderCreatedEventObject { + if t == nil { + return nil + } + return t.Object +} + +func (t *TransferOrderCreatedEventData) GetExtraProperties() map[string]interface{} { + return t.extraProperties +} + +func (t *TransferOrderCreatedEventData) UnmarshalJSON(data []byte) error { + type unmarshaler TransferOrderCreatedEventData + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *t = TransferOrderCreatedEventData(value) + extraProperties, err := internal.ExtractExtraProperties(data, *t) + if err != nil { + return err + } + t.extraProperties = extraProperties + t.rawJSON = json.RawMessage(data) + return nil +} + +func (t *TransferOrderCreatedEventData) String() string { + if len(t.rawJSON) > 0 { + if value, err := internal.StringifyJSON(t.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(t); err == nil { + return value + } + return fmt.Sprintf("%#v", t) +} + +type TransferOrderCreatedEventObject struct { + // The created transfer_order. + TransferOrder *TransferOrder `json:"transfer_order,omitempty" url:"transfer_order,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (t *TransferOrderCreatedEventObject) GetTransferOrder() *TransferOrder { + if t == nil { + return nil + } + return t.TransferOrder +} + +func (t *TransferOrderCreatedEventObject) GetExtraProperties() map[string]interface{} { + return t.extraProperties +} + +func (t *TransferOrderCreatedEventObject) UnmarshalJSON(data []byte) error { + type unmarshaler TransferOrderCreatedEventObject + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *t = TransferOrderCreatedEventObject(value) + extraProperties, err := internal.ExtractExtraProperties(data, *t) + if err != nil { + return err + } + t.extraProperties = extraProperties + t.rawJSON = json.RawMessage(data) + return nil +} + +func (t *TransferOrderCreatedEventObject) String() string { + if len(t.rawJSON) > 0 { + if value, err := internal.StringifyJSON(t.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(t); err == nil { + return value + } + return fmt.Sprintf("%#v", t) +} + +// Published when a transfer_order is deleted. +type TransferOrderDeletedEvent struct { + // The ID of the target merchant associated with the event. + MerchantID *string `json:"merchant_id,omitempty" url:"merchant_id,omitempty"` + // The type of event this represents, `"transfer_order.deleted"`. + Type *string `json:"type,omitempty" url:"type,omitempty"` + // A unique ID for the event. + EventID *string `json:"event_id,omitempty" url:"event_id,omitempty"` + // Timestamp of when the event was created, in RFC 3339 format. + CreatedAt *string `json:"created_at,omitempty" url:"created_at,omitempty"` + // Data associated with the event. + Data *TransferOrderDeletedEventData `json:"data,omitempty" url:"data,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (t *TransferOrderDeletedEvent) GetMerchantID() *string { + if t == nil { + return nil + } + return t.MerchantID +} + +func (t *TransferOrderDeletedEvent) GetType() *string { + if t == nil { + return nil + } + return t.Type +} + +func (t *TransferOrderDeletedEvent) GetEventID() *string { + if t == nil { + return nil + } + return t.EventID +} + +func (t *TransferOrderDeletedEvent) GetCreatedAt() *string { + if t == nil { + return nil + } + return t.CreatedAt +} + +func (t *TransferOrderDeletedEvent) GetData() *TransferOrderDeletedEventData { + if t == nil { + return nil + } + return t.Data +} + +func (t *TransferOrderDeletedEvent) GetExtraProperties() map[string]interface{} { + return t.extraProperties +} + +func (t *TransferOrderDeletedEvent) UnmarshalJSON(data []byte) error { + type unmarshaler TransferOrderDeletedEvent + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *t = TransferOrderDeletedEvent(value) + extraProperties, err := internal.ExtractExtraProperties(data, *t) + if err != nil { + return err + } + t.extraProperties = extraProperties + t.rawJSON = json.RawMessage(data) + return nil +} + +func (t *TransferOrderDeletedEvent) String() string { + if len(t.rawJSON) > 0 { + if value, err := internal.StringifyJSON(t.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(t); err == nil { + return value + } + return fmt.Sprintf("%#v", t) +} + +type TransferOrderDeletedEventData struct { + // Name of the affected object’s type, `"transfer_order"`. + Type *string `json:"type,omitempty" url:"type,omitempty"` + // ID of the affected transfer_order. + ID *string `json:"id,omitempty" url:"id,omitempty"` + // Is true if the affected object was deleted. Otherwise absent. + Deleted *bool `json:"deleted,omitempty" url:"deleted,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (t *TransferOrderDeletedEventData) GetType() *string { + if t == nil { + return nil + } + return t.Type +} + +func (t *TransferOrderDeletedEventData) GetID() *string { + if t == nil { + return nil + } + return t.ID +} + +func (t *TransferOrderDeletedEventData) GetDeleted() *bool { + if t == nil { + return nil + } + return t.Deleted +} + +func (t *TransferOrderDeletedEventData) GetExtraProperties() map[string]interface{} { + return t.extraProperties +} + +func (t *TransferOrderDeletedEventData) UnmarshalJSON(data []byte) error { + type unmarshaler TransferOrderDeletedEventData + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *t = TransferOrderDeletedEventData(value) + extraProperties, err := internal.ExtractExtraProperties(data, *t) + if err != nil { + return err + } + t.extraProperties = extraProperties + t.rawJSON = json.RawMessage(data) + return nil +} + +func (t *TransferOrderDeletedEventData) String() string { + if len(t.rawJSON) > 0 { + if value, err := internal.StringifyJSON(t.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(t); err == nil { + return value + } + return fmt.Sprintf("%#v", t) +} + +// Published when a transfer_order is updated. +type TransferOrderUpdatedEvent struct { + // The ID of the target merchant associated with the event. + MerchantID *string `json:"merchant_id,omitempty" url:"merchant_id,omitempty"` + // The type of event this represents, `"transfer_order.updated"`. + Type *string `json:"type,omitempty" url:"type,omitempty"` + // A unique ID for the event. + EventID *string `json:"event_id,omitempty" url:"event_id,omitempty"` + // Timestamp of when the event was created, in RFC 3339 format. + CreatedAt *string `json:"created_at,omitempty" url:"created_at,omitempty"` + // Data associated with the event. + Data *TransferOrderUpdatedEventData `json:"data,omitempty" url:"data,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (t *TransferOrderUpdatedEvent) GetMerchantID() *string { + if t == nil { + return nil + } + return t.MerchantID +} + +func (t *TransferOrderUpdatedEvent) GetType() *string { + if t == nil { + return nil + } + return t.Type +} + +func (t *TransferOrderUpdatedEvent) GetEventID() *string { + if t == nil { + return nil + } + return t.EventID +} + +func (t *TransferOrderUpdatedEvent) GetCreatedAt() *string { + if t == nil { + return nil + } + return t.CreatedAt +} + +func (t *TransferOrderUpdatedEvent) GetData() *TransferOrderUpdatedEventData { + if t == nil { + return nil + } + return t.Data +} + +func (t *TransferOrderUpdatedEvent) GetExtraProperties() map[string]interface{} { + return t.extraProperties +} + +func (t *TransferOrderUpdatedEvent) UnmarshalJSON(data []byte) error { + type unmarshaler TransferOrderUpdatedEvent + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *t = TransferOrderUpdatedEvent(value) + extraProperties, err := internal.ExtractExtraProperties(data, *t) + if err != nil { + return err + } + t.extraProperties = extraProperties + t.rawJSON = json.RawMessage(data) + return nil +} + +func (t *TransferOrderUpdatedEvent) String() string { + if len(t.rawJSON) > 0 { + if value, err := internal.StringifyJSON(t.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(t); err == nil { + return value + } + return fmt.Sprintf("%#v", t) +} + +type TransferOrderUpdatedEventData struct { + // Name of the affected object’s type, `"transfer_order"`. + Type *string `json:"type,omitempty" url:"type,omitempty"` + // ID of the affected transfer_order. + ID *string `json:"id,omitempty" url:"id,omitempty"` + // An object containing the updated transfer_order. + Object *TransferOrderUpdatedEventObject `json:"object,omitempty" url:"object,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (t *TransferOrderUpdatedEventData) GetType() *string { + if t == nil { + return nil + } + return t.Type +} + +func (t *TransferOrderUpdatedEventData) GetID() *string { + if t == nil { + return nil + } + return t.ID +} + +func (t *TransferOrderUpdatedEventData) GetObject() *TransferOrderUpdatedEventObject { + if t == nil { + return nil + } + return t.Object +} + +func (t *TransferOrderUpdatedEventData) GetExtraProperties() map[string]interface{} { + return t.extraProperties +} + +func (t *TransferOrderUpdatedEventData) UnmarshalJSON(data []byte) error { + type unmarshaler TransferOrderUpdatedEventData + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *t = TransferOrderUpdatedEventData(value) + extraProperties, err := internal.ExtractExtraProperties(data, *t) + if err != nil { + return err + } + t.extraProperties = extraProperties + t.rawJSON = json.RawMessage(data) + return nil +} + +func (t *TransferOrderUpdatedEventData) String() string { + if len(t.rawJSON) > 0 { + if value, err := internal.StringifyJSON(t.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(t); err == nil { + return value + } + return fmt.Sprintf("%#v", t) +} + +type TransferOrderUpdatedEventObject struct { + // The updated transfer_order. + TransferOrder *TransferOrder `json:"transfer_order,omitempty" url:"transfer_order,omitempty"` + + extraProperties map[string]interface{} + rawJSON json.RawMessage +} + +func (t *TransferOrderUpdatedEventObject) GetTransferOrder() *TransferOrder { + if t == nil { + return nil + } + return t.TransferOrder +} + +func (t *TransferOrderUpdatedEventObject) GetExtraProperties() map[string]interface{} { + return t.extraProperties +} + +func (t *TransferOrderUpdatedEventObject) UnmarshalJSON(data []byte) error { + type unmarshaler TransferOrderUpdatedEventObject + var value unmarshaler + if err := json.Unmarshal(data, &value); err != nil { + return err + } + *t = TransferOrderUpdatedEventObject(value) + extraProperties, err := internal.ExtractExtraProperties(data, *t) + if err != nil { + return err + } + t.extraProperties = extraProperties + t.rawJSON = json.RawMessage(data) + return nil +} + +func (t *TransferOrderUpdatedEventObject) String() string { + if len(t.rawJSON) > 0 { + if value, err := internal.StringifyJSON(t.rawJSON); err == nil { + return value + } + } + if value, err := internal.StringifyJSON(t); err == nil { + return value + } + return fmt.Sprintf("%#v", t) +} + // Represents an [UpdateBookingCustomAttributeDefinition](api-endpoint:BookingCustomAttributes-UpdateBookingCustomAttributeDefinition) response. // Either `custom_attribute_definition` or `errors` is present in the response. type UpdateBookingCustomAttributeDefinitionResponse struct {