Skip to content

Releases: PocketBaseExtended/PocketbaseExtended

1.0.0

18 Mar 03:11
8779919

Choose a tag to compare

Changelog

[1.0.0] - 2026-03-18

Overview

v1.0.0 is a complete rewrite of the library, previously known as PocketbaseArduino. The API has been significantly expanded with a structured response type, a full authentication system, new endpoints, and a multi-file architecture. Existing v0.x sketches remain source-compatible via a typedef alias.


Breaking Changes

  • Library renamed from PocketbaseArduino to PocketbaseExtended. Update your #include and constructor. A PocketbaseArduino typedef alias is retained — existing sketches still compile without changes.
  • Header includes removed from sketch requirement. <ESP8266HTTPClient.h>, <BearSSLHelpers.h>, and <WiFiClientSecure.h> are now included internally. Remove them from your sketches.
  • Debug logging is now off by default. Call pb.setDebug(true) to re-enable it.

New Features

PBResponse — Structured Response Type

All Ex methods return a PBResponse struct instead of a raw String:

struct PBResponse {
    bool   ok;         // true when HTTP status is 2xx
    int    statusCode; // 0 if the connection itself failed
    String body;       // raw JSON response body
    String error;      // human-readable error description on failure
};

Authentication

Method Description
authWithPassword(identity, password) Authenticate with email/username + password. JWT stored automatically.
authRefresh() Exchange the current token for a fresh one. Useful on long-running devices.
setAuthToken(token) Manually restore a token (e.g. from flash storage).
getAuthToken() Read the currently stored token.
clearAuthToken() Remove the stored token (effective logout).

All requests automatically include Authorization: Bearer <token> once authenticated.

Ex Variants for All Record Methods

Every record method now has an Ex counterpart returning PBResponse:

Convenience (String) Extended (PBResponse)
getOne() getOneEx()
getList() getListEx()
create() createEx()
update() updateEx()
deleteRecord() deleteRecordEx()

New Methods

  • update() / updateEx()PATCH partial record update. Was missing in v0.x.
  • authRefresh() — Token refresh without re-entering credentials.
  • checkHealth()GET /api/health connectivity probe. No collection needed.
  • getFileUrl(recordId, filename, thumb?) — Builds a PocketBase file attachment URL without making an HTTP request.

New Query Parameters

getOne/getOneEx and getList/getListEx now accept:

Parameter Description
expand Comma-separated relation fields to auto-expand, e.g. "author,tags.name"
fields Comma-separated fields to return, e.g. "id,title,created"
skipTotal Pass "1" to omit totalItems/totalPages for faster list queries

Configuration

Method Default Description
setTimeout(ms) 10000 HTTP request timeout in milliseconds
setInsecureTLS(bool) true Skip TLS cert verification. Set false in production.
setDebug(bool) false Print URLs, status codes, and bodies to Serial

Bug Fixes

  • getList query parameter mapping fixed. In v0.x, skipTotal was incorrectly written as the filter value, corrupting query strings when both were used. All parameters now map correctly.

Internal Changes

  • Split into dedicated source files: PocketbaseTransport.cpp, PocketbaseAuth.cpp, PocketbaseRecords.cpp
  • Single unified HTTP dispatcher handles GET, POST, PATCH, and DELETE
  • baseUrl trailing slash normalisation handled internally

Migration from v0.x

v0.x v1.0.0
#include <PocketbaseArduino.h> #include <PocketbaseExtended.h>
PocketbaseArduino pb(...) PocketbaseExtended pb(...) — old name still compiles as alias
Manual platform header includes Remove — included internally
All methods return String Convenience variants still return String; use Ex variants for full response
No update() update() / updateEx() added
No authentication Full auth system added
Debug always on Off by default — pb.setDebug(true) to enable
getList skipTotal/filter bug Fixed

What's Changed

Full Changelog: 0.4.0...1.0.0

0.4.0

29 Jan 02:04

Choose a tag to compare

🚀PocketbaseExtended 0.4.0

Changes

What's next?

  • Improve documentation
  • add create() function
  • improve syntax for other body parameters

Wanna know what Pocketbase is?: https://pocketbase.io/

Full Changelog: 0.3.5...0.4.0

0.3.5

25 Jan 03:11
1a1103f

Choose a tag to compare

🚀PocketbaseArduino 0.3.5

Changes

  • Fixed README typos
  • add deleteRecord() documentation
  • Updated README!

What's next?

  • Improve documentation
  • add create() function
  • improve syntax for other body parameters

Wanna know what Pocketbase is?: https://pocketbase.io/

What's Changed

Full Changelog: 0.3.1...0.3.5

0.3.1

23 Jan 11:35
245dece

Choose a tag to compare

🚀PocketbaseArduino 0.3.1

Changes

  • Add deleteRecord() function
  • Updated README!
record = pb.collection("notes").deleteRecord("50p6wpaeu4h5j9x");

What's next?

  • Improve documentation
  • add create() function
  • improve syntax for other body parameters (having to place nullptr works for now, but is very inconvenient for developers)
// current implementation
String record = pb.collection("websites").getOne("1", "websites");

// "wtf i need to place nullptr just because its optional?" - some random dev
String record = pb.collection("websites").getOne("1", nullptr);
.... 

// and instead use
 String record = pb.collection("websites").getOne("1").expand("websites");

chain methods is makes it much more flexible in terms of how developers will write the syntax and using this library (hopefully 😀)

Wanna know what Pocketbase is?: https://pocketbase.io/

What's Changed

Full Changelog: 0.2.0...0.3.1

0.2.0

23 Jan 09:56

Choose a tag to compare

🚀PocketbaseArduino 0.2.0

What's Changed?

  • Add getList() function
pb.collection("notes").getList("page", "perPage", "sort", "filter", "skipTotal", "expand", "fields");
  • Improved function for GETRequest to support for both ESP8266 and ESP32 (needs further testing!!)

What's next?

  • Improve documentation
  • add create() function
  • improve syntax for other body parameters (having to place nullptr works for now, but is very inconvenient for developers)
// current implementation
String record = pb.collection("websites").getOne("1", "websites");

// "wtf i need to place nullptr just because its optional?" - some random dev
String record = pb.collection("websites").getOne("1", nullptr);
.... 

// and instead use
 String record = pb.collection("websites").getOne("1").expand("websites");

chain methods is much more flexible in terms of how developers will write syntax (hopefully 😀)

Wanna know what Pocketbase is?: https://pocketbase.io/

Full Changelog: https://github.com/jeoooo/PocketbaseArduino/commits/0.1.0

What's Changed

  • separated expand and fields to a chain method by @jeoooo in #1
  • implemented getList function by @jeoooo in #2

New Contributors

  • @jeoooo made their first contribution in #1

Full Changelog: 0.1.0...0.2.0

0.1.0

20 Jan 09:20

Choose a tag to compare

🚀PocketbaseArduino 0.1.0

Changes

  • Support for https and http requests. For http requests please use the following commands to setup Pocketbase on your local machine.
./pocketbase serve --http="YOUR_IP_ADDRESS:8090"
  • Add PocketbaseArduino initialization
PocketbaseArduino pb("POCKETBASE_BASE_URL"); 
  • Add PocketbaseArduino getOne() function
PocketbaseArduino pb("POCKETBASE_BASE_URL"); 
String record = pb.collection("collectionName").getOne("record_id");
  • Add initial implementation PocketbaseArduino getList() function
PocketbaseArduino pb("POCKETBASE_BASE_URL");
String result = pb.collection("notes").getList("1", "10", "createdAt", "category=important", "authors", "title,body");

What's next?

  • Implement other CRUD operations
  • Update README
  • Documentation Website
  • Add Contributing guidelines

Wanna know what Pocketbase is?: https://pocketbase.io/

Full Changelog: https://github.com/jeoooo/PocketbaseArduino/commits/0.1.0