diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 218393f..4cff5b9 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.4.1" + ".": "0.4.2" } diff --git a/.stats.yml b/.stats.yml index 47c64e3..c5955c5 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 20 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/azure/partnermax-0c2a3d56340127842c8ff928074b12d81705700b06b497d6965138738b28b656.yml -openapi_spec_hash: 515afa9ff78787ae666a539d452d5d35 -config_hash: a9bb2c41f2e0cabac79eda1df90a1445 +configured_endpoints: 21 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/azure/partnermax-fa73d56cb03e02b0bf904b1336512bcdef94150eb14ecd514ef709214608d69f.yml +openapi_spec_hash: 5b05f6d46fc6d51dcd5b9930a6fc29ba +config_hash: 085d04841ad5a779fb40c5000448d9d9 diff --git a/CHANGELOG.md b/CHANGELOG.md index 44b4d02..b4c3d61 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 0.4.2 (2026-06-28) + +Full Changelog: [v0.4.1...v0.4.2](https://github.com/DealerMax-app/partnermax-node/compare/v0.4.1...v0.4.2) + +### Bug Fixes + +* expose dealer create in SDK ([8f9a868](https://github.com/DealerMax-app/partnermax-node/commit/8f9a8688809ecfc588e3edf97225042133cd7e79)) + ## 0.4.1 (2026-06-28) Full Changelog: [v0.4.0...v0.4.1](https://github.com/DealerMax-app/partnermax-node/compare/v0.4.0...v0.4.1) diff --git a/api.md b/api.md index 01a7820..dd2a86c 100644 --- a/api.md +++ b/api.md @@ -17,9 +17,11 @@ Types: - DealerDetail - DealerSummary +- PartnerDealerResponse Methods: +- client.dealers.create({ ...params }) -> PartnerDealerResponse - client.dealers.retrieve(dealerID) -> DealerDetail - client.dealers.update(dealerID, { ...params }) -> DealerDetail - client.dealers.list({ ...params }) -> DealerSummariesCursorPage diff --git a/package.json b/package.json index bd985c7..9092d7b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "partnermax", - "version": "0.4.1", + "version": "0.4.2", "description": "The official TypeScript library for the Partnermax API", "author": "Partnermax ", "types": "dist/index.d.ts", diff --git a/src/client.ts b/src/client.ts index 4ea57b9..80f8215 100644 --- a/src/client.ts +++ b/src/client.ts @@ -21,12 +21,14 @@ import * as API from './resources/index'; import { APIPromise } from './core/api-promise'; import { KeyIssueParams, KeyIssueResponse, KeyListResponse, Keys } from './resources/keys'; import { + DealerCreateParams, DealerDetail, DealerListParams, DealerSummariesCursorPage, DealerSummary, DealerUpdateParams, Dealers, + PartnerDealerResponse, } from './resources/dealers/dealers'; import { type Fetch } from './internal/builtin-types'; import { HeadersLike, NullableHeaders, buildHeaders } from './internal/headers'; @@ -861,7 +863,9 @@ export declare namespace Partnermax { Dealers as Dealers, type DealerDetail as DealerDetail, type DealerSummary as DealerSummary, + type PartnerDealerResponse as PartnerDealerResponse, type DealerSummariesCursorPage as DealerSummariesCursorPage, + type DealerCreateParams as DealerCreateParams, type DealerUpdateParams as DealerUpdateParams, type DealerListParams as DealerListParams, }; diff --git a/src/resources/dealers/dealers.ts b/src/resources/dealers/dealers.ts index 7f25d1a..0cf67d2 100644 --- a/src/resources/dealers/dealers.ts +++ b/src/resources/dealers/dealers.ts @@ -36,6 +36,23 @@ export class Dealers extends APIResource { nlt: NltAPI.Nlt = new NltAPI.Nlt(this._client); vehicles: VehiclesAPI.Vehicles = new VehiclesAPI.Vehicles(this._client); + /** + * Create a partner-owned opaque dealer reference. SDK users call + * `client.dealers.create(...)`; the generated client sends this request to the + * core-owned `/api/partner/dealers` route. + */ + create(params: DealerCreateParams, options?: RequestOptions): APIPromise { + const { 'Idempotency-Key': idempotencyKey, ...body } = params; + return this._client.post('/api/partner/dealers', { + body, + ...options, + headers: buildHeaders([ + { ...(idempotencyKey != null ? { 'Idempotency-Key': idempotencyKey } : undefined) }, + options?.headers, + ]), + }); + } + /** * Fetch a dealer's full detail. ACL-protected. */ @@ -165,6 +182,57 @@ export interface DealerSummary { last_active_at?: string | null; } +/** + * Partner dealer registry response. Use dealer_id as the path parameter for + * vehicle and NLT SDK calls. + */ +export interface PartnerDealerResponse { + created_at: string; + + /** + * The partner-owned external dealer id. + */ + dealer_id: string; + + partner_id: string; + + public_surfaces_enabled: boolean; + + status: 'active' | 'suspended' | 'revoked'; + + updated_at: string; + + /** + * True only when this request inserted the registry row. + */ + created?: boolean; +} + +export interface DealerCreateParams { + /** + * Body param: Partner-owned opaque dealer id. This becomes the dealer_id used by + * vehicle and NLT SDK calls. + */ + external_dealer_id: string; + + /** + * Body param: When true, the dealer can immediately receive vehicle/NLT + * operations. When false, create the registry row but keep it suspended until + * activated. + */ + activate?: boolean; + + /** + * Body param: Optional scalar partner-side correlation metadata. + */ + metadata?: { [key: string]: string | number | boolean | null }; + + /** + * Header param: Recommended stable key per logical dealer provisioning operation. + */ + 'Idempotency-Key'?: string; +} + export interface DealerUpdateParams { /** * Body param @@ -228,7 +296,9 @@ export declare namespace Dealers { export { type DealerDetail as DealerDetail, type DealerSummary as DealerSummary, + type PartnerDealerResponse as PartnerDealerResponse, type DealerSummariesCursorPage as DealerSummariesCursorPage, + type DealerCreateParams as DealerCreateParams, type DealerUpdateParams as DealerUpdateParams, type DealerListParams as DealerListParams, }; diff --git a/src/resources/dealers/index.ts b/src/resources/dealers/index.ts index 3d290e0..8c655fe 100644 --- a/src/resources/dealers/index.ts +++ b/src/resources/dealers/index.ts @@ -4,6 +4,8 @@ export { Dealers, type DealerDetail, type DealerSummary, + type PartnerDealerResponse, + type DealerCreateParams, type DealerUpdateParams, type DealerListParams, type DealerSummariesCursorPage, diff --git a/src/resources/index.ts b/src/resources/index.ts index 854f511..fa1fb18 100644 --- a/src/resources/index.ts +++ b/src/resources/index.ts @@ -4,6 +4,8 @@ export { Dealers, type DealerDetail, type DealerSummary, + type PartnerDealerResponse, + type DealerCreateParams, type DealerUpdateParams, type DealerListParams, type DealerSummariesCursorPage, diff --git a/src/version.ts b/src/version.ts index 99a0031..7b8959a 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const VERSION = '0.4.1'; // x-release-please-version +export const VERSION = '0.4.2'; // x-release-please-version diff --git a/tests/api-resources/dealers/dealers.test.ts b/tests/api-resources/dealers/dealers.test.ts index 3b33eba..f8b1b86 100644 --- a/tests/api-resources/dealers/dealers.test.ts +++ b/tests/api-resources/dealers/dealers.test.ts @@ -8,6 +8,28 @@ const client = new Partnermax({ }); describe('resource dealers', () => { + // Mock server tests are disabled + test.skip('create: only required params', async () => { + const responsePromise = client.dealers.create({ external_dealer_id: 'x' }); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); + + // Mock server tests are disabled + test.skip('create: required and optional params', async () => { + const response = await client.dealers.create({ + external_dealer_id: 'x', + activate: true, + metadata: { foo: 'string' }, + 'Idempotency-Key': 'Idempotency-Key', + }); + }); + // Mock server tests are disabled test.skip('retrieve', async () => { const responsePromise = client.dealers.retrieve('dealer_id');