@anthropic-ai/sdk
Version:
The official TypeScript library for the Anthropic API
282 lines (260 loc) • 8.57 kB
text/typescript
import { APIResource } from '../../core/resource';
import { APIPromise } from '../../core/api-promise';
import { PageCursor, type PageCursorParams, PagePromise } from '../../core/pagination';
import { type Uploadable } from '../../core/uploads';
import { buildHeaders } from '../../internal/headers';
import { RequestOptions } from '../../internal/request-options';
import { startApiCallSpan } from '../../internal/tracing';
import { multipartFormRequestOptions } from '../../internal/uploads';
import { path } from '../../internal/utils/path';
export class Versions extends APIResource {
/**
* Create Skill Version
*
* @example
* ```ts
* const skillVersion = await client.skills.versions.create(
* 'skill_id',
* { files: [fs.createReadStream('path/to/file')] },
* );
* ```
*/
create(skillID: string, params: VersionCreateParams, options?: RequestOptions): APIPromise<SkillVersion> {
const { workspace_id, ...body } = params;
return this._client.post(
path`/v1/skills/${skillID}/versions`,
multipartFormRequestOptions(
{
body,
...options,
headers: buildHeaders([
{ ...(workspace_id != null ? { 'anthropic-workspace-id': workspace_id } : undefined) },
options?.headers,
]),
__span: startApiCallSpan(this._client, 'anthropic.skills.versions.create', options, {
route: '/v1/skills/{skill_id}/versions',
attributes: { 'anthropic.skill.id': skillID },
createdIDAttribute: 'anthropic.skill.version.id',
}),
},
this._client,
false,
),
);
}
/**
* Get Skill Version
*
* @example
* ```ts
* const skillVersion = await client.skills.versions.retrieve(
* 'version',
* { skill_id: 'skill_id' },
* );
* ```
*/
retrieve(
version: string,
params: VersionRetrieveParams,
options?: RequestOptions,
): APIPromise<SkillVersion> {
const { skill_id, workspace_id } = params;
return this._client.get(path`/v1/skills/${skill_id}/versions/${version}`, {
...options,
headers: buildHeaders([
{ ...(workspace_id != null ? { 'anthropic-workspace-id': workspace_id } : undefined) },
options?.headers,
]),
__span: startApiCallSpan(this._client, 'anthropic.skills.versions.retrieve', options, {
route: '/v1/skills/{skill_id}/versions/{version}',
attributes: { 'anthropic.skill.id': skill_id, 'anthropic.skill.version.id': version },
}),
});
}
/**
* List Skill Versions
*
* @example
* ```ts
* // Automatically fetches more pages as needed.
* for await (const skillVersion of client.skills.versions.list(
* 'skill_id',
* )) {
* // ...
* }
* ```
*/
list(
skillID: string,
params: VersionListParams | null | undefined = {},
options?: RequestOptions,
): PagePromise<SkillVersionsPageCursor, SkillVersion> {
const { workspace_id, ...query } = params ?? {};
return this._client.getAPIList(path`/v1/skills/${skillID}/versions`, PageCursor<SkillVersion>, {
query,
...options,
headers: buildHeaders([
{ ...(workspace_id != null ? { 'anthropic-workspace-id': workspace_id } : undefined) },
options?.headers,
]),
__span: startApiCallSpan(this._client, 'anthropic.skills.versions.list', options, {
route: '/v1/skills/{skill_id}/versions',
queryParams: ['limit', 'page'],
attributes: { 'anthropic.skill.id': skillID },
}),
});
}
/**
* Delete Skill Version
*
* @example
* ```ts
* const deletedSkillVersion =
* await client.skills.versions.delete('version', {
* skill_id: 'skill_id',
* });
* ```
*/
delete(
version: string,
params: VersionDeleteParams,
options?: RequestOptions,
): APIPromise<DeletedSkillVersion> {
const { skill_id, workspace_id } = params;
return this._client.delete(path`/v1/skills/${skill_id}/versions/${version}`, {
...options,
headers: buildHeaders([
{ ...(workspace_id != null ? { 'anthropic-workspace-id': workspace_id } : undefined) },
options?.headers,
]),
__span: startApiCallSpan(this._client, 'anthropic.skills.versions.delete', options, {
route: '/v1/skills/{skill_id}/versions/{version}',
attributes: { 'anthropic.skill.id': skill_id, 'anthropic.skill.version.id': version },
}),
});
}
}
export type SkillVersionsPageCursor = PageCursor<SkillVersion>;
export interface DeletedSkillVersion {
/**
* Unique identifier for this Skill Version. The id addresses the version in paths
* and pins it in references.
*/
id: string;
/**
* Deleted object type.
*
* For Skill Versions, this is always `"skill_version_deleted"`.
*/
type: 'skill_version_deleted';
}
export interface SkillVersion {
/**
* Unique identifier for this Skill Version. The id addresses the version in paths
* and pins it in references.
*/
id: string;
/**
* ISO 8601 timestamp of when the skill was created.
*/
created_at: string;
/**
* Description of the skill version.
*
* This is extracted from the SKILL.md file in the skill upload.
*/
description: string;
/**
* The Skill's immutable kebab-case slug, set at creation from the first upload's
* SKILL.md frontmatter `name` (or its enclosing directory). Every later upload
* must resolve to the same value. Also the top-level directory of the Skill's
* mounted files and the base name of a downloaded archive.
*/
name: string;
/**
* Unique identifier for the skill.
*
* The format and length of IDs may change over time.
*/
skill_id: string;
/**
* Object type.
*
* For Skill Versions, this is always `"skill_version"`.
*/
type: 'skill_version';
}
export interface VersionCreateParams {
/**
* Body param: Files to upload for the skill.
*
* All files must be in the same top-level directory and must include a SKILL.md
* file at the root of that directory.
*/
files: Array<Uploadable>;
/**
* Header param: Optional header to select the Workspace for this request. The
* value is a Workspace ID (for example, `wrkspc_011CZkZaBF1tNoB5wlCeusgy`).
*
* Only needed for credentials that can act on more than one Workspace. A
* credential that belongs to a specific Workspace may omit it; if sent, it must
* match that Workspace.
*/
workspace_id?: string;
}
export interface VersionRetrieveParams {
/**
* Path param: Unique identifier for the skill.
*
* The format and length of IDs may change over time.
*/
skill_id: string;
/**
* Header param: Optional header to select the Workspace for this request. The
* value is a Workspace ID (for example, `wrkspc_011CZkZaBF1tNoB5wlCeusgy`).
*
* Only needed for credentials that can act on more than one Workspace. A
* credential that belongs to a specific Workspace may omit it; if sent, it must
* match that Workspace.
*/
workspace_id?: string;
}
export interface VersionListParams extends PageCursorParams {
/**
* Header param: Optional header to select the Workspace for this request. The
* value is a Workspace ID (for example, `wrkspc_011CZkZaBF1tNoB5wlCeusgy`).
*
* Only needed for credentials that can act on more than one Workspace. A
* credential that belongs to a specific Workspace may omit it; if sent, it must
* match that Workspace.
*/
workspace_id?: string;
}
export interface VersionDeleteParams {
/**
* Path param: Unique identifier for the skill.
*
* The format and length of IDs may change over time.
*/
skill_id: string;
/**
* Header param: Optional header to select the Workspace for this request. The
* value is a Workspace ID (for example, `wrkspc_011CZkZaBF1tNoB5wlCeusgy`).
*
* Only needed for credentials that can act on more than one Workspace. A
* credential that belongs to a specific Workspace may omit it; if sent, it must
* match that Workspace.
*/
workspace_id?: string;
}
export declare namespace Versions {
export {
type DeletedSkillVersion as DeletedSkillVersion,
type SkillVersion as SkillVersion,
type SkillVersionsPageCursor as SkillVersionsPageCursor,
type VersionCreateParams as VersionCreateParams,
type VersionRetrieveParams as VersionRetrieveParams,
type VersionListParams as VersionListParams,
type VersionDeleteParams as VersionDeleteParams,
};
}