Documentation
¶
Overview ¶
Package ops contains the core document operations (build, validate, sign, correct, replicate) shared by the CLI, HTTP API, MCP server, and WASM.
Index ¶
- func Build(ctx context.Context, opts *BuildOptions) (any, error)
- func Bulk(ctx context.Context, opts *BulkOptions) <-chan *BulkResponse
- func Correct(ctx context.Context, opts *CorrectOptions) (interface{}, error)
- func FindType(term string) schema.ID
- func Replicate(ctx context.Context, opts *ReplicateOptions) (interface{}, error)
- func Sign(ctx context.Context, opts *SignOptions) (*gobl.Envelope, error)
- func Validate(ctx context.Context, r io.Reader) error
- func Verify(ctx context.Context, in io.Reader, key *dsig.PublicKey) error
- type BuildOptions
- type BuildRequest
- type BulkOptions
- type BulkRequest
- type BulkResponse
- type CorrectOptions
- type CorrectRequest
- type KeygenResponse
- type ParseOptions
- type RegimeRequest
- type ReplicateOptions
- type ReplicateRequest
- type SchemaRequest
- type SignOptions
- type SignRequest
- type ValidateRequest
- type ValidateResponse
- type VerifyRequest
- type VerifyResponse
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Build ¶
func Build(ctx context.Context, opts *BuildOptions) (any, error)
Build builds and validates GOBL data. Only structured errors are returned, which is a break from regular Go convention and replicated on all the main internal CLI functions. The object is to ensure that errors are always structured in a consistent manner.
func Bulk ¶
func Bulk(ctx context.Context, opts *BulkOptions) <-chan *BulkResponse
Bulk processes a stream of bulk requests.
func Correct ¶
func Correct(ctx context.Context, opts *CorrectOptions) (interface{}, error)
Correct takes a base document as input and builds a corrective document for the output. If the "ShowOptions" boolean is true, we'll attempt to determine what options are available.
func Replicate ¶
func Replicate(ctx context.Context, opts *ReplicateOptions) (interface{}, error)
Replicate takes a base document as input and builds a replicated document for the output.
func Sign ¶
Sign parses a GOBL document into an envelope, performs calculations, validates it, and finally signs its headers. The parsed envelope *must* be a draft, or else an error is returned.
Types ¶
type BuildOptions ¶
type BuildOptions struct {
*ParseOptions
}
BuildOptions are the options used for building and validating GOBL data.
type BuildRequest ¶
type BuildRequest struct {
Template []byte `json:"template"`
Data []byte `json:"data"`
DocType string `json:"type"`
Envelop bool `json:"envelop"`
}
BuildRequest is the payload for a build request.
type BulkOptions ¶
type BulkOptions struct {
// In is the input stream of requests
In io.Reader
// DefaultPrivateKey is the default private key to use with sign requests
DefaultPrivateKey *dsig.PrivateKey
}
BulkOptions are the options used for processing a stream of bulk requests.
type BulkRequest ¶
type BulkRequest struct {
// Action is the action to perform on the payload.
Action string `json:"action"`
// ReqID is an opaque request ID, which is returned with the associated
// response.
ReqID string `json:"req_id"`
// Payload is the payload upon which to perform the action.
Payload json.RawMessage `json:"payload"`
// When true, responses are indented for easier human consumption
Indent bool `json:"indent"`
}
BulkRequest represents a single request in the stream of bulk requests.
type BulkResponse ¶
type BulkResponse struct {
// ReqID is an exact copy of the value provided in the request, if any.
ReqID string `json:"req_id,omitempty"`
// SeqID is the sequence ID of the request this response correspond to,
// starting at 1.
SeqID int64 `json:"seq_id"`
// Payload is the response payload.
Payload json.RawMessage `json:"payload,omitempty"`
// Error represents an error processing a request item.
Error *gobl.Error `json:"error"`
// IsFinal will be true once the end of the request input stream has been
// reached, or an unrecoverable error has occurred.
IsFinal bool `json:"is_final"`
}
BulkResponse represents a single response in the stream of bulk responses.
type CorrectOptions ¶
type CorrectOptions struct {
// we don't need all of the parse options
*ParseOptions
OptionsSchema bool
Credit bool
Debit bool
Date cal.Date
Data []byte // raw json of correction options
}
CorrectOptions define all the basic options required to build a corrective document from the input.
type CorrectRequest ¶
type CorrectRequest struct {
Data []byte `json:"data"`
Options []byte `json:"options"`
Schema bool `json:"schema"`
}
CorrectRequest is the payload used to generate a corrected document. If the schema option is true, the options data is ignored.
type KeygenResponse ¶
type KeygenResponse struct {
Private *dsig.PrivateKey `json:"private"`
Public *dsig.PublicKey `json:"public"`
}
KeygenResponse is the payload for a key generation response.
type ParseOptions ¶
type ParseOptions struct {
Template io.Reader
Input io.Reader
DocType string
SetYAML map[string]string
SetString map[string]string
SetFile map[string]string
// When set to `true`, the parsed data is wrapped in an envelope (if needed).
Envelop bool
}
ParseOptions are the options used for parsing incoming GOBL data.
type RegimeRequest ¶
type RegimeRequest struct {
Code string `json:"code"`
}
RegimeRequest defines a body used to request the definition of a Tax Regime.
type ReplicateOptions ¶
type ReplicateOptions struct {
*ParseOptions
}
ReplicateOptions define all the basic options required to build a replicated document from the input.
type ReplicateRequest ¶
type ReplicateRequest struct {
Data []byte `json:"data"`
}
ReplicateRequest defines the payload used to generate a replicated document.
type SchemaRequest ¶
type SchemaRequest struct {
Path string `json:"path"`
}
SchemaRequest defines a body used to request a specific JSON schema
type SignOptions ¶
type SignOptions struct {
*ParseOptions
PrivateKey *dsig.PrivateKey
}
SignOptions are the options used for signing a GOBL document.
type SignRequest ¶
type SignRequest struct {
Template []byte `json:"template"`
Data []byte `json:"data"`
PrivateKey *dsig.PrivateKey `json:"privatekey"`
DocType string `json:"type"`
Envelop bool `json:"envelop"`
}
SignRequest is the payload for a sign request.
type ValidateRequest ¶
type ValidateRequest struct {
Data []byte `json:"data"`
}
ValidateRequest is the payload for a validate request.
type ValidateResponse ¶
type ValidateResponse struct {
OK bool `json:"ok"`
}
ValidateResponse is the response to a validate request.
type VerifyRequest ¶
type VerifyRequest struct {
Data []byte `json:"data"`
PublicKey *dsig.PublicKey `json:"publickey"`
}
VerifyRequest is the payload for a verification request.
type VerifyResponse ¶
type VerifyResponse struct {
OK bool `json:"ok"`
}
VerifyResponse is the response to a verification request.