This page states what bolty considers public — the surface covered by semantic versioning — versus what is internal and may change in any release. If you depend on something not listed here as public, treat it as liable to change without a major-version bump.
Public API
These modules and their documented functions are the supported surface:
Bolty— the entrypoint:start_link/1,child_spec/1,query/4,query!/4,query_many/4,query_many!/4,transaction/4,rollback/2, andconnection_info/1.Bolty.Response— the result struct returned byquery/4(results,fields,records,plan,notifications,stats,profile,type,bookmark). It implementsEnumerable(iterating rows), andBolty.Response.first/1returns the first row.Bolty.Error— the error struct. Its:boltfield is a%{code: ..., message: ...}map; match on that for server error details.Bolty.Policy— the resolved per-connection capability struct, read viaconnection_info/1.Bolty.Types.*— the value types decoded from / encoded to Neo4j:Node,Relationship,UnboundRelationship,Path,TimeWithTZOffset,DateTimeWithTZOffset,Vector,Point(plus standard ElixirTime,NaiveDateTime,Duration).Bolty.ResponseEncoderandBolty.ResponseEncoder.Json(with theJason/Poisonback-ends) — JSON encoding of responses.Bolty.PackStream.Packer— you may@deriveit on your own structs to control how they serialize into query parameters, e.g.@derive [{Bolty.PackStream.Packer, fields: [:name]}].
Internal
Everything marked @moduledoc false is internal and unsupported for direct
use. That includes:
Bolty.Client Bolty.Connection
Bolty.BoltProtocol.* Bolty.BoltProtocol.Versions
Bolty.Policy.Resolver Bolty.ConnectionInfo
Bolty.PackStream (unpacker, markers)
Bolty.Query Bolty.Queries
Bolty.Utils.*Construct queries through Bolty.query/4 and Bolty.query_many/4 rather than
building those structs directly.
The connection_info/1 contract
Bolty.connection_info/1 returns a map with:
:bolt_version— the negotiated Bolt version as a string (e.g."5.8"):server_version— the server product string (e.g."Neo4j/5.26.27"):policy— the resolved%Bolty.Policy{}
Consumer compatibility contract
These shapes are load-bearing for downstream consumers (notably
ash_neo4j) and will not change
without a major-version bump:
%Bolty.Response{}keeps itsresultsfield.%Bolty.Types.Vector{}keeps itsdatafield.%Bolty.Error{}keeps:boltas a%{code, message}map.connection_info/1keeps its:policyand:server_versionkeys.%Bolty.Policy{}keeps itscypher_25anddynamic_labelsfields (new fields may be added).