SDK reference docs
Contents
SDK references document class, method signatures, and type interfaces for each SDK. They complement examples in tutorials and guides by providing a comprehensive reference with all the details. They're important for deep understanding of PostHog SDKs and as context for LLM-based tools. Tutorials and guides reference them for parameter and return type details.
Which SDKs have reference docs
It's an ongoing effort to create SDK reference docs for all our SDKs, starting with popular SDKs. Here's the current status:
| SDK | Status |
|---|---|
| JavaScript Web SDK | ✅ Completed |
| Python SDK | ✅ Completed |
| Node.js SDK | ✅ Completed |
| React Native SDK | ✅ Completed |
| iOS SDK | 🚧 In progress |
| Flutter SDK | ⏳ Not started |
| Android SDK | ⏳ Not started |
| Go SDK | ⏳ Not started |
| Java SDK | ⏳ Not started |
| Rust SDK | ⏳ Not started |
| PHP SDK | ⏳ Not started |
| .NET SDK | ⏳ Not started |
How the SDK reference docs work
- SDKs are parsed for basic information like class names, method names, and type interfaces.
- Descriptions, parameters, return types, and examples are extracted from the SDKs or SDK doc comments.
- The information is rewritten into a standardized JSON format (HogRef). They're stored in each SDK's repository under a
referencesdirectory. For example, the JavaScript Web SDK reference is stored here. - When an SDK releases a new version, the reference docs are generated automatically. Here's an example workflow.
- The Strapi instance behind the website is configured to fetch the HogRef JSON files from the SDK's repository and display them on the website via a cron job.
- The website renders the HogRef JSON files as a table on the SDK reference page.
Each language works slightly differently, but the general process is the same.
HogRef JSON schema specification
The hierarchy of the HogRef JSON schema is as follows:
Root Object
| Field | Type | Required | Description |
|---|---|---|---|
id | string | ✓ | Unique identifier for the SDK (e.g., 'posthog-js', 'stripe-node') |
schemaVersion | string | Version of this schema format being used | |
info | Info | ✓ | Metadata about the SDK |
classes | Class[] | ✓ | Main classes/modules exposed by the SDK |
types | Type[] | Type definitions, interfaces, and enums | |
categories | string[] | List of functional categories for organizing methods |
Info
Metadata about the SDK.
| Field | Type | Required | Description |
|---|---|---|---|
id | string | ✓ | Package/library identifier |
title | string | ✓ | Human-readable name of the SDK |
version | string | ✓ | Current version of the SDK |
description | string | Brief description of what the SDK does | |
slugPrefix | string | URL-friendly prefix for documentation links | |
specUrl | string (uri) | URL to the source specification or repository | |
docsUrl | string (uri) | URL to the official documentation | |
license | string | License type (e.g., 'MIT', 'Apache-2.0') | |
platforms | string[] | Supported platforms (e.g., 'browser', 'node', 'react-native') |
Class
Main classes/modules exposed by the SDK.
| Field | Type | Required | Description |
|---|---|---|---|
id | string | ✓ | Unique identifier for the class |
title | string | ✓ | Display name of the class |
description | string | Overview of what this class provides | |
functions | Function[] | ✓ | Methods and functions available on this class |
properties | Property[] | Instance properties of this class | |
staticMethods | Function[] | Static methods on this class | |
events | Event[] | Events emitted by this class |
Function
Methods and functions available on a class.
| Field | Type | Required | Description |
|---|---|---|---|
id | string | ✓ | Unique identifier for the function |
title | string | ✓ | Function name as it appears in code |
description | string | Brief description of what the function does | |
details | string | null | Extended explanation, usage notes, or caveats | |
category | string | Functional category (e.g., 'Initialization', 'Capture') | |
releaseTag | ReleaseTag | Stability/visibility status of the function | |
showDocs | boolean | Whether to display in public documentation | |
params | Parameter[] | Function parameters | |
returnType | TypeReference | Return type of the function | |
examples | Example[] | Code examples showing usage | |
throws | ThrowsClause[] | Exceptions/errors that may be thrown | |
since | string | Version when this function was introduced | |
deprecated | string | boolean | Deprecation notice or true if deprecated | |
seeAlso | string[] | Related functions or documentation links | |
path | string | Source file path for this function | |
async | boolean | Whether this is an async function | |
overloads | FunctionOverload[] | Alternative function signatures |
Parameter
Function parameters.
| Field | Type | Required | Description |
|---|---|---|---|
name | string | ✓ | Parameter name |
type | string | ✓ | Type annotation for the parameter |
description | string | What this parameter is for | |
isOptional | boolean | Whether this parameter is optional | |
defaultValue | string | Default value if not provided | |
isRest | boolean | Whether this is a rest parameter (...args) |
TypeReference
Reference to a type, used for return types and property types.
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Reference ID to a type definition | |
name | string | ✓ | Display name of the type |
Type
Type definitions, interfaces, and enums.
| Field | Type | Required | Description |
|---|---|---|---|
id | string | ✓ | Unique identifier for this type |
name | string | ✓ | Type name |
description | string | What this type represents | |
kind | TypeKind | Kind of type definition | |
properties | Property[] | Properties for object types | |
enumValues | EnumValue[] | Values for enum types | |
example | string | Inline type definition or usage example | |
path | string | Source file path | |
extends | string[] | Types this type extends | |
generic | GenericParameter[] | Generic type parameters |
Property
Properties on types or classes.
| Field | Type | Required | Description |
|---|---|---|---|
name | string | ✓ | Property name |
type | string | ✓ | Type of the property |
description | string | What this property represents | |
isOptional | boolean | Whether this property is optional | |
isReadonly | boolean | Whether this property is read-only | |
defaultValue | string | Default value | |
deprecated | string | boolean | Deprecation notice |
Example
Code examples demonstrating usage.
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Unique identifier for the example | |
name | string | Title describing what the example demonstrates | |
code | string | ✓ | The example code |
language | string | Programming language (e.g., 'javascript', 'typescript') | |
description | string | Additional explanation of the example |
Event
Events emitted by a class.
| Field | Type | Required | Description |
|---|---|---|---|
name | string | ✓ | Event name |
description | string | When this event is emitted | |
payload | string | Type of data passed to event listeners |
ThrowsClause
Exceptions/errors that may be thrown by a function.
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Type of error thrown | |
description | string | When this error is thrown |
EnumValue
Values for enum types.
| Field | Type | Required | Description |
|---|---|---|---|
name | string | ✓ | Enum member name |
value | string | number | ✓ | Enum member value |
description | string | What this enum value represents |
GenericParameter
Generic type parameters.
| Field | Type | Required | Description |
|---|---|---|---|
name | string | ✓ | Generic parameter name (e.g., 'T') |
constraint | string | Type constraint (e.g., 'extends string') | |
default | string | Default type |
FunctionOverload
Alternative function signatures for overloaded functions.
| Field | Type | Required | Description |
|---|---|---|---|
params | Parameter[] | Parameters for this overload | |
returnType | TypeReference | Return type for this overload | |
description | string | Description specific to this overload |
Enumerations
ReleaseTag enum:
| Value | Description |
|---|---|
public | Stable, public API |
beta | Beta feature, may change |
alpha | Alpha feature, likely to change |
internal | Internal use only |
deprecated | Deprecated, avoid use |
TypeKind enum:
| Value | Description |
|---|---|
interface | Interface definition |
type | Type alias |
enum | Enumeration |
class | Class definition |
Example JSON
How to create new SDK reference docs
To contribute a new SDK reference doc:
- Create a script to parse the SDK's documentation and extract the information into a HogRef JSON file. The script should:
- Parse for class names, method names, and type interfaces
- Extract descriptions, parameters, return types, and examples from the SDK or SDK doc comments
- Format the information according to the HogRef JSON schema specification
- Store the HogRef JSON file in a
referencesdirectory in the SDK's repository - See existing SDK repositories for examples, such as the JavaScript Web SDK reference
- Create a workflow to generate the HogRef JSON file when a new version of the SDK is released. See an example workflow.
- Update the
cron-tasks.tsfile to fetch the HogRef JSON file from the SDK's repository and display it on the website. - Once the HogRef is ingested into the Strapi instance via the cron job, a new page should be created automatically on the website. The website will render the HogRef JSON file as a table on the SDK reference page.
- Find existing links to the SDK's GitHub repository source code and point them to the new HogRef JSON file instead.