From c2207eaa7f816fb0ee5f1ae2898d9cbaf7355d90 Mon Sep 17 00:00:00 2001 From: Ernesto Resende Date: Thu, 22 Oct 2026 22:01:17 +0000 Subject: [PATCH 1/2] docs: publish Sharing API reference Add the Sharing API (REST) to the Redoc spec list at /api/sharing and regenerate the API discovery document. The spec has been published to docs.api.epilot.io/sharing.yaml by sharing-api's post-deploy step, but no docs entry existed, so it never appeared on docs.epilot.io. Co-Authored-By: Claude Fable 5.1 --- redoc.config.js | 5 +++++ static/openapi-specs/apis.json | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/redoc.config.js b/redoc.config.js index 540188ba..8ecfbc77 100644 --- a/redoc.config.js +++ b/redoc.config.js @@ -146,6 +146,11 @@ module.exports.specs = [ routePath: '/api/consent', specUrl: 'https://docs.api.epilot.io/consent.yaml', }, + { + layout: { title: 'Sharing API' }, + routePath: '/api/sharing', + specUrl: 'https://docs.api.epilot.io/sharing.yaml', + }, { layout: { title: 'Partner API' }, routePath: '/api/partner', diff --git a/static/openapi-specs/apis.json b/static/openapi-specs/apis.json index 38364d2e..1e844be5 100644 --- a/static/openapi-specs/apis.json +++ b/static/openapi-specs/apis.json @@ -293,6 +293,16 @@ } ] }, + { + "name": "Sharing API", + "baseURL": "https://sharing-api.sls.epilot.io", + "properties": [ + { + "type": "Swagger", + "url": "https://docs.api.epilot.io/sharing.yaml" + } + ] + }, { "name": "Partner API", "baseURL": "https://partner-directory-api.sls.epilot.io", From 21e5cae38e125d88e2c1a9a9f677dcbc8e0ea7be Mon Sep 17 00:00:00 2001 From: Ernesto Resende Date: Thu, 22 Oct 2026 23:24:41 +0000 Subject: [PATCH 2/2] docs: add Sharing API SDK client reference page Copy packages/epilot-sdk-v2/docs/sharing.md from sdk-js (what scripts/update-sdk-docs.sh would produce for this client) and link it from the SDK overview table. Other clients are left for a full sync. Co-Authored-By: Claude Fable 5.1 --- docs/sdk/clients/sharing.md | 1186 +++++++++++++++++++++++++++++++++++ docs/sdk/overview.md | 1 + 2 files changed, 1187 insertions(+) create mode 100644 docs/sdk/clients/sharing.md diff --git a/docs/sdk/clients/sharing.md b/docs/sdk/clients/sharing.md new file mode 100644 index 00000000..a9db84e2 --- /dev/null +++ b/docs/sdk/clients/sharing.md @@ -0,0 +1,1186 @@ +--- +title: "Sharing API" +description: "TypeScript SDK client for the epilot Sharing API: usage with @epilot/sdk, all operations and schemas." +--- + +# Sharing API + +- **Base URL:** `https://sharing-api.sls.epilot.io` +- **Full API Docs:** [https://docs.epilot.io/api/sharing](https://docs.epilot.io/api/sharing) + +## Usage + +```ts +import { epilot } from '@epilot/sdk' + +epilot.authorize(() => '') +const { data } = await epilot.sharing.getSharingConfiguration(...) +``` + +### Tree-shakeable import + +```ts +import { getClient, authorize } from '@epilot/sdk/sharing' + +const sharingClient = getClient() +authorize(sharingClient, () => '') +const { data } = await sharingClient.getSharingConfiguration(...) +``` + +## Operations + +**Sharing Configuration** +- [`getSharingConfiguration`](#getsharingconfiguration) +- [`updateSharingConfiguration`](#updatesharingconfiguration) +- [`deleteSharingConfiguration`](#deletesharingconfiguration) +- [`assignRoleToConfiguration`](#assignroletoconfiguration) +- [`getSharingConfigurations`](#getsharingconfigurations) +- [`searchPartnerSharingConfigurations`](#searchpartnersharingconfigurations) +- [`getConfigurationsByTemplateRole`](#getconfigurationsbytemplaterole) + +**Entity Sharing** +- [`shareEntityWithPartners`](#shareentitywithpartners) +- [`shareChildEntityWithPartners`](#sharechildentitywithpartners) + +**Entity Offering** +- [`offerEntityToPartners`](#offerentitytopartners) +- [`getOfferStatus`](#getofferstatus) +- [`acceptOffer`](#acceptoffer) + +**Schemas** +- [`PartnerSharingConfig`](#partnersharingconfig) +- [`PartnerStatus`](#partnerstatus) +- [`EntityResource`](#entityresource) +- [`OfferEntityResource`](#offerentityresource) +- [`TemplateRoleGrant`](#templaterolegrant) +- [`OfferStatus`](#offerstatus) +- [`PartialEntity`](#partialentity) +- [`OfferStatusEnum`](#offerstatusenum) +- [`EntityResourceInput`](#entityresourceinput) +- [`OfferEntityResourceInput`](#offerentityresourceinput) +- [`UpdateSharingConfigurationPayload`](#updatesharingconfigurationpayload) +- [`AssignRolePayload`](#assignrolepayload) +- [`SearchSharingConfigurationsPayload`](#searchsharingconfigurationspayload) +- [`SharingEntityPayload`](#sharingentitypayload) +- [`PartnerEntitiesInput`](#partnerentitiesinput) +- [`ShareChildEntityPayload`](#sharechildentitypayload) +- [`PartnerEntityInput`](#partnerentityinput) +- [`OfferEntityPayload`](#offerentitypayload) +- [`PartnerOfferedEntitiesInput`](#partnerofferedentitiesinput) +- [`AcceptOfferPayload`](#acceptofferpayload) + +### `getSharingConfiguration` + +Get sharing configuration for a partner + +`GET /v1/sharing/configurations/{partner_org_id}` + +```ts +const { data } = await client.getSharingConfiguration({ + partner_org_id: 'example', +}) +``` + +
+Response + +```json +{ + "sharing_org_id": "string", + "partner_org_id": "string", + "users": ["string"], + "partner_status": "REGISTERED", + "entities": [ + { + "schema": "string", + "entity_id": "string", + "parent_entity_id": "string", + "offer_accepted": true, + "updated_at": "string", + "created_at": "string" + } + ], + "offered_entities": [ + { + "schema": "string", + "entity_id": "string", + "parent_entity_id": "string", + "offer_status": "EXPIRED", + "offered_by_user_id": "string", + "updated_at": "string", + "created_at": "string" + } + ], + "template_role_id": "string", + "template_role_grants": [ + { + "action": "string", + "resource": "string", + "effect": "string" + } + ], + "generated_role_id": "string", + "user_limit": 0, + "created_at": "string", + "updated_at": "string" +} +``` + +
+ +--- + +### `updateSharingConfiguration` + +Update sharing configuration for a partner + +`PATCH /v1/sharing/configurations/{partner_org_id}` + +```ts +const { data } = await client.updateSharingConfiguration( + { + partner_org_id: 'example', + }, + { + user_limit: 0 + }, +) +``` + +
+Response + +```json +{ + "sharing_org_id": "string", + "partner_org_id": "string", + "users": ["string"], + "partner_status": "REGISTERED", + "entities": [ + { + "schema": "string", + "entity_id": "string", + "parent_entity_id": "string", + "offer_accepted": true, + "updated_at": "string", + "created_at": "string" + } + ], + "offered_entities": [ + { + "schema": "string", + "entity_id": "string", + "parent_entity_id": "string", + "offer_status": "EXPIRED", + "offered_by_user_id": "string", + "updated_at": "string", + "created_at": "string" + } + ], + "template_role_id": "string", + "template_role_grants": [ + { + "action": "string", + "resource": "string", + "effect": "string" + } + ], + "generated_role_id": "string", + "user_limit": 0, + "created_at": "string", + "updated_at": "string" +} +``` + +
+ +--- + +### `deleteSharingConfiguration` + +Delete sharing configuration for a partner + +`DELETE /v1/sharing/configurations/{partner_org_id}` + +```ts +const { data } = await client.deleteSharingConfiguration({ + partner_org_id: 'example', +}) +``` + +
+Response + +```json +{ + "sharing_org_id": "string", + "partner_org_id": "string", + "users": ["string"], + "partner_status": "REGISTERED", + "entities": [ + { + "schema": "string", + "entity_id": "string", + "parent_entity_id": "string", + "offer_accepted": true, + "updated_at": "string", + "created_at": "string" + } + ], + "offered_entities": [ + { + "schema": "string", + "entity_id": "string", + "parent_entity_id": "string", + "offer_status": "EXPIRED", + "offered_by_user_id": "string", + "updated_at": "string", + "created_at": "string" + } + ], + "template_role_id": "string", + "template_role_grants": [ + { + "action": "string", + "resource": "string", + "effect": "string" + } + ], + "generated_role_id": "string", + "user_limit": 0, + "created_at": "string", + "updated_at": "string" +} +``` + +
+ +--- + +### `assignRoleToConfiguration` + +Assign a template role to a partner sharing configuration + +`PUT /v1/sharing/configurations/{partner_org_id}/role` + +```ts +const { data } = await client.assignRoleToConfiguration( + { + partner_org_id: 'example', + }, + { + template_role_id: 'string' + }, +) +``` + +
+Response + +```json +{ + "sharing_org_id": "string", + "partner_org_id": "string", + "users": ["string"], + "partner_status": "REGISTERED", + "entities": [ + { + "schema": "string", + "entity_id": "string", + "parent_entity_id": "string", + "offer_accepted": true, + "updated_at": "string", + "created_at": "string" + } + ], + "offered_entities": [ + { + "schema": "string", + "entity_id": "string", + "parent_entity_id": "string", + "offer_status": "EXPIRED", + "offered_by_user_id": "string", + "updated_at": "string", + "created_at": "string" + } + ], + "template_role_id": "string", + "template_role_grants": [ + { + "action": "string", + "resource": "string", + "effect": "string" + } + ], + "generated_role_id": "string", + "user_limit": 0, + "created_at": "string", + "updated_at": "string" +} +``` + +
+ +--- + +### `getSharingConfigurations` + +Get sharing configurations for multiple partners + +`GET /v1/sharing/configurations` + +```ts +const { data } = await client.getSharingConfigurations({ + partner_org_ids: ['...'], +}) +``` + +
+Response + +```json +[ + { + "sharing_org_id": "string", + "partner_org_id": "string", + "users": ["string"], + "partner_status": "REGISTERED", + "entities": [ + { + "schema": "string", + "entity_id": "string", + "parent_entity_id": "string", + "offer_accepted": true, + "updated_at": "string", + "created_at": "string" + } + ], + "offered_entities": [ + { + "schema": "string", + "entity_id": "string", + "parent_entity_id": "string", + "offer_status": "EXPIRED", + "offered_by_user_id": "string", + "updated_at": "string", + "created_at": "string" + } + ], + "template_role_id": "string", + "template_role_grants": [ + { + "action": "string", + "resource": "string", + "effect": "string" + } + ], + "generated_role_id": "string", + "user_limit": 0, + "created_at": "string", + "updated_at": "string" + } +] +``` + +
+ +--- + +### `searchPartnerSharingConfigurations` + +Search partner sharing configurations by entities + +`POST /v1/sharing/configurations:search` + +```ts +const { data } = await client.searchPartnerSharingConfigurations( + null, + { + entities: [ + { + schema: 'string', + entity_id: 'string', + parent_entity_id: 'string', + offer_accepted: true + } + ] + }, +) +``` + +
+Response + +```json +[ + { + "sharing_org_id": "string", + "partner_org_id": "string", + "users": ["string"], + "partner_status": "REGISTERED", + "entities": [ + { + "schema": "string", + "entity_id": "string", + "parent_entity_id": "string", + "offer_accepted": true, + "updated_at": "string", + "created_at": "string" + } + ], + "offered_entities": [ + { + "schema": "string", + "entity_id": "string", + "parent_entity_id": "string", + "offer_status": "EXPIRED", + "offered_by_user_id": "string", + "updated_at": "string", + "created_at": "string" + } + ], + "template_role_id": "string", + "template_role_grants": [ + { + "action": "string", + "resource": "string", + "effect": "string" + } + ], + "generated_role_id": "string", + "user_limit": 0, + "created_at": "string", + "updated_at": "string" + } +] +``` + +
+ +--- + +### `getConfigurationsByTemplateRole` + +Get sharing configurations that use a specific template role + +`GET /v1/sharing/configurations/by-role/{template_role_id}` + +```ts +const { data } = await client.getConfigurationsByTemplateRole({ + template_role_id: 'example', +}) +``` + +
+Response + +```json +[ + { + "sharing_org_id": "string", + "partner_org_id": "string", + "users": ["string"], + "partner_status": "REGISTERED", + "entities": [ + { + "schema": "string", + "entity_id": "string", + "parent_entity_id": "string", + "offer_accepted": true, + "updated_at": "string", + "created_at": "string" + } + ], + "offered_entities": [ + { + "schema": "string", + "entity_id": "string", + "parent_entity_id": "string", + "offer_status": "EXPIRED", + "offered_by_user_id": "string", + "updated_at": "string", + "created_at": "string" + } + ], + "template_role_id": "string", + "template_role_grants": [ + { + "action": "string", + "resource": "string", + "effect": "string" + } + ], + "generated_role_id": "string", + "user_limit": 0, + "created_at": "string", + "updated_at": "string" + } +] +``` + +
+ +--- + +### `shareEntityWithPartners` + +Share or unshare entities with partners + +`POST /v1/sharing/entities:share` + +```ts +const { data } = await client.shareEntityWithPartners( + null, + { + share: [ + { + partner_org_id: 'string', + entities: [ + { + schema: 'string', + entity_id: 'string', + parent_entity_id: 'string', + offer_accepted: true + } + ] + } + ], + unshare: [ + { + partner_org_id: 'string', + entities: [ + { + schema: 'string', + entity_id: 'string', + parent_entity_id: 'string', + offer_accepted: true + } + ] + } + ] + }, +) +``` + +
+Response + +```json +[ + { + "sharing_org_id": "string", + "partner_org_id": "string", + "users": ["string"], + "partner_status": "REGISTERED", + "entities": [ + { + "schema": "string", + "entity_id": "string", + "parent_entity_id": "string", + "offer_accepted": true, + "updated_at": "string", + "created_at": "string" + } + ], + "offered_entities": [ + { + "schema": "string", + "entity_id": "string", + "parent_entity_id": "string", + "offer_status": "EXPIRED", + "offered_by_user_id": "string", + "updated_at": "string", + "created_at": "string" + } + ], + "template_role_id": "string", + "template_role_grants": [ + { + "action": "string", + "resource": "string", + "effect": "string" + } + ], + "generated_role_id": "string", + "user_limit": 0, + "created_at": "string", + "updated_at": "string" + } +] +``` + +
+ +--- + +### `shareChildEntityWithPartners` + +Share or unshare child entities with partners + +`POST /v1/sharing/entities:share-child` + +```ts +const { data } = await client.shareChildEntityWithPartners( + null, + { + share: [ + { + entity: { + schema: 'string', + entity_id: 'string', + parent_entity_id: 'string', + offer_accepted: true + }, + partner_org_id: 'string' + } + ], + unshare: [ + { + entity: { + schema: 'string', + entity_id: 'string', + parent_entity_id: 'string', + offer_accepted: true + }, + partner_org_id: 'string' + } + ] + }, +) +``` + +
+Response + +```json +[ + { + "sharing_org_id": "string", + "partner_org_id": "string", + "users": ["string"], + "partner_status": "REGISTERED", + "entities": [ + { + "schema": "string", + "entity_id": "string", + "parent_entity_id": "string", + "offer_accepted": true, + "updated_at": "string", + "created_at": "string" + } + ], + "offered_entities": [ + { + "schema": "string", + "entity_id": "string", + "parent_entity_id": "string", + "offer_status": "EXPIRED", + "offered_by_user_id": "string", + "updated_at": "string", + "created_at": "string" + } + ], + "template_role_id": "string", + "template_role_grants": [ + { + "action": "string", + "resource": "string", + "effect": "string" + } + ], + "generated_role_id": "string", + "user_limit": 0, + "created_at": "string", + "updated_at": "string" + } +] +``` + +
+ +--- + +### `offerEntityToPartners` + +Offer or unoffer entities to partners (First Come First Served) + +`POST /v1/sharing/entities:offer` + +```ts +const { data } = await client.offerEntityToPartners( + null, + { + offer: [ + { + partner_org_id: 'string', + offered_entities: [ + { + schema: 'string', + entity_id: 'string', + parent_entity_id: 'string' + } + ] + } + ], + unoffer: [ + { + partner_org_id: 'string', + offered_entities: [ + { + schema: 'string', + entity_id: 'string', + parent_entity_id: 'string' + } + ] + } + ] + }, +) +``` + +
+Response + +```json +[ + { + "sharing_org_id": "string", + "partner_org_id": "string", + "users": ["string"], + "partner_status": "REGISTERED", + "entities": [ + { + "schema": "string", + "entity_id": "string", + "parent_entity_id": "string", + "offer_accepted": true, + "updated_at": "string", + "created_at": "string" + } + ], + "offered_entities": [ + { + "schema": "string", + "entity_id": "string", + "parent_entity_id": "string", + "offer_status": "EXPIRED", + "offered_by_user_id": "string", + "updated_at": "string", + "created_at": "string" + } + ], + "template_role_id": "string", + "template_role_grants": [ + { + "action": "string", + "resource": "string", + "effect": "string" + } + ], + "generated_role_id": "string", + "user_limit": 0, + "created_at": "string", + "updated_at": "string" + } +] +``` + +
+ +--- + +### `getOfferStatus` + +Get the status of an entity offer (public, no auth required) + +`GET /v1/sharing/offers/status` + +```ts +const { data } = await client.getOfferStatus({ + partner_org_id: 'example', + sharing_org_id: 'example', + entity_id: 'example', +}) +``` + +
+Response + +```json +{ + "entity": { + "_schema": "string", + "_id": "string", + "_title": "string", + "_created_at": "string", + "_updated_at": "string" + }, + "offer_status": "EXPIRED", + "status_changed_at": "string", + "offered_at": "string", + "accepted_by_org_id": "string" +} +``` + +
+ +--- + +### `acceptOffer` + +Accept an entity offer (public, no auth required) + +`POST /v1/sharing/offers:accept` + +```ts +const { data } = await client.acceptOffer( + null, + { + partner_org_id: 'string', + sharing_org_id: 'string', + entity_id: 'string' + }, +) +``` + +
+Response + +```json +{ + "sharing_org_id": "string", + "partner_org_id": "string", + "users": ["string"], + "partner_status": "REGISTERED", + "entities": [ + { + "schema": "string", + "entity_id": "string", + "parent_entity_id": "string", + "offer_accepted": true, + "updated_at": "string", + "created_at": "string" + } + ], + "offered_entities": [ + { + "schema": "string", + "entity_id": "string", + "parent_entity_id": "string", + "offer_status": "EXPIRED", + "offered_by_user_id": "string", + "updated_at": "string", + "created_at": "string" + } + ], + "template_role_id": "string", + "template_role_grants": [ + { + "action": "string", + "resource": "string", + "effect": "string" + } + ], + "generated_role_id": "string", + "user_limit": 0, + "created_at": "string", + "updated_at": "string" +} +``` + +
+ +--- + +## Schemas + +### `PartnerSharingConfig` + +```ts +type PartnerSharingConfig = { + sharing_org_id: string + partner_org_id: string + users?: string[] + partner_status?: "REGISTERED" | "UNREGISTERED" + entities?: Array<{ + schema: string + entity_id: string + parent_entity_id?: string + offer_accepted?: boolean + updated_at?: string + created_at?: string + }> + offered_entities?: Array<{ + schema: string + entity_id: string + parent_entity_id?: string + offer_status: "EXPIRED" | "UNAVAILABLE" | "PENDING" | "DECLINED" | "ACCEPTED" + offered_by_user_id?: string + updated_at?: string + created_at?: string + }> + template_role_id?: string + template_role_grants?: Array<{ + action: string + resource: string + effect?: string + }> + generated_role_id?: string + user_limit?: number + created_at?: string + updated_at?: string +} +``` + +### `PartnerStatus` + +```ts +type PartnerStatus = "REGISTERED" | "UNREGISTERED" +``` + +### `EntityResource` + +```ts +type EntityResource = { + schema: string + entity_id: string + parent_entity_id?: string + offer_accepted?: boolean + updated_at?: string + created_at?: string +} +``` + +### `OfferEntityResource` + +```ts +type OfferEntityResource = { + schema: string + entity_id: string + parent_entity_id?: string + offer_status: "EXPIRED" | "UNAVAILABLE" | "PENDING" | "DECLINED" | "ACCEPTED" + offered_by_user_id?: string + updated_at?: string + created_at?: string +} +``` + +### `TemplateRoleGrant` + +```ts +type TemplateRoleGrant = { + action: string + resource: string + effect?: string +} +``` + +### `OfferStatus` + +```ts +type OfferStatus = { + entity: { + _schema: string + _id: string + _title: string + _created_at: string + _updated_at: string + } + offer_status: "EXPIRED" | "UNAVAILABLE" | "PENDING" | "DECLINED" | "ACCEPTED" + status_changed_at?: string + offered_at?: string + accepted_by_org_id?: string +} +``` + +### `PartialEntity` + +```ts +type PartialEntity = { + _schema: string + _id: string + _title: string + _created_at: string + _updated_at: string +} +``` + +### `OfferStatusEnum` + +```ts +type OfferStatusEnum = "EXPIRED" | "UNAVAILABLE" | "PENDING" | "DECLINED" | "ACCEPTED" +``` + +### `EntityResourceInput` + +```ts +type EntityResourceInput = { + schema: string + entity_id: string + parent_entity_id?: string + offer_accepted?: boolean +} +``` + +### `OfferEntityResourceInput` + +```ts +type OfferEntityResourceInput = { + schema: string + entity_id: string + parent_entity_id?: string +} +``` + +### `UpdateSharingConfigurationPayload` + +```ts +type UpdateSharingConfigurationPayload = { + user_limit?: number +} +``` + +### `AssignRolePayload` + +```ts +type AssignRolePayload = { + template_role_id: string +} +``` + +### `SearchSharingConfigurationsPayload` + +```ts +type SearchSharingConfigurationsPayload = { + entities: Array<{ + schema: string + entity_id: string + parent_entity_id?: string + offer_accepted?: boolean + }> +} +``` + +### `SharingEntityPayload` + +```ts +type SharingEntityPayload = { + share: Array<{ + partner_org_id: string + entities: Array<{ + schema: { ... } + entity_id: { ... } + parent_entity_id?: { ... } + offer_accepted?: { ... } + }> + }> + unshare: Array<{ + partner_org_id: string + entities: Array<{ + schema: { ... } + entity_id: { ... } + parent_entity_id?: { ... } + offer_accepted?: { ... } + }> + }> +} +``` + +### `PartnerEntitiesInput` + +```ts +type PartnerEntitiesInput = { + partner_org_id: string + entities: Array<{ + schema: string + entity_id: string + parent_entity_id?: string + offer_accepted?: boolean + }> +} +``` + +### `ShareChildEntityPayload` + +```ts +type ShareChildEntityPayload = { + share: Array<{ + entity: { + schema: { ... } + entity_id: { ... } + parent_entity_id?: { ... } + offer_accepted?: { ... } + } + partner_org_id: string + }> + unshare: Array<{ + entity: { + schema: { ... } + entity_id: { ... } + parent_entity_id?: { ... } + offer_accepted?: { ... } + } + partner_org_id: string + }> +} +``` + +### `PartnerEntityInput` + +```ts +type PartnerEntityInput = { + entity: { + schema: string + entity_id: string + parent_entity_id?: string + offer_accepted?: boolean + } + partner_org_id: string +} +``` + +### `OfferEntityPayload` + +```ts +type OfferEntityPayload = { + offer: Array<{ + partner_org_id: string + offered_entities: Array<{ + schema: { ... } + entity_id: { ... } + parent_entity_id?: { ... } + }> + }> + unoffer: Array<{ + partner_org_id: string + offered_entities: Array<{ + schema: { ... } + entity_id: { ... } + parent_entity_id?: { ... } + }> + }> +} +``` + +### `PartnerOfferedEntitiesInput` + +```ts +type PartnerOfferedEntitiesInput = { + partner_org_id: string + offered_entities: Array<{ + schema: string + entity_id: string + parent_entity_id?: string + }> +} +``` + +### `AcceptOfferPayload` + +```ts +type AcceptOfferPayload = { + partner_org_id: string + sharing_org_id: string + entity_id: string +} +``` diff --git a/docs/sdk/overview.md b/docs/sdk/overview.md index 1a8f6767..74c8267e 100644 --- a/docs/sdk/overview.md +++ b/docs/sdk/overview.md @@ -129,6 +129,7 @@ See [Client Usage](client-usage.md) for all import patterns. | `epilot.permissions` | `@epilot/sdk/permissions` | [SDK](clients/permissions.md) · [API](/api/permissions) | | `epilot.pricing` | `@epilot/sdk/pricing` | [SDK](clients/pricing.md) · [API](/api/pricing) | | `epilot.purpose` | `@epilot/sdk/purpose` | [SDK](clients/purpose.md) · [API](/api/purpose) | +| `epilot.sharing` | `@epilot/sdk/sharing` | [SDK](clients/sharing.md) · [API](/api/sharing) | | `epilot.submission` | `@epilot/sdk/submission` | [SDK](clients/submission.md) · [API](/api/submission) | | `epilot.targeting` | `@epilot/sdk/targeting` | [SDK](clients/targeting.md) · [API](/api/targeting) | | `epilot.templateVariables` | `@epilot/sdk/template-variables` | [SDK](clients/template-variables.md) · [API](/api/template-variables) |