# 型

> @nodaro/sdk がエクスポートするすべての TypeScript の型、ヘルパー関数、定数を、リソースごとにまとめ、それぞれを説明しているページとともに示します。

Source: https://nodaro.ai/ja/docs/developers/sdk/types

**`@nodaro/sdk`** は、大半のメソッドの入力と出力に対して TypeScript の型をエクスポートしており、ヘルパー関数と定数もいくつかエクスポートしています。型は `import type` でインポートすれば、バンドルには何も追加されません。

```ts

const { data }: { data: Workflow } = await client.workflows.get(id)
```

型は、API の通信形式に従っています。`Job` は `output_data` や `created_at` のような snake_case のフィールドを使います。API がその形でデータを送るためです。`Workflow` と `WorkflowExecution` は camelCase を使います。オブジェクトの型である `Object` は、JavaScript のグローバルと同じ名前なので、両方が必要な場合は別の名前でインポートしてください。`import type { Object as NodaroObject } from "@nodaro/sdk"` のようにします。

メソッドが使う型の中には、エクスポートされていないものもあります。`PipelineInput` や `CommunityFullDetail` のように `@nodaro/shared` で定義されている型は、そちらからインポートします。`@nodaro/shared` は、SDK が使うのと同じバージョン範囲で、自分の依存関係に追加してください。そうすれば、インストールされるコピーは 1 つだけになります。`PipelineRecord` など、それ以外の型は、その型を返すメソッドから導出します。

```ts

type PipelineRecord = Awaited<ReturnType<NodaroClient["pipelines"]["get"]>>
```

## クライアント、認証、エラー
| エクスポート | 種別 | 掲載ページ |
| --- | --- | --- |
| `createClient`、`NodaroClient` | 関数、クラス | [クライアント](https://nodaro.ai/docs/developers/sdk/client) |
| `ClientOptions`、`UserIdentity`、`MeOrganizations` | 型 | [クライアント](https://nodaro.ai/docs/developers/sdk/client) |
| `Auth`、`StaticTokenAuth`、`CallbackAuth`、`supabaseAuth` | 型、クラス、関数 | [認証](https://nodaro.ai/docs/developers/sdk/auth) |
| `createSharedSupabaseClient` | 関数（`@nodaro/sdk/supabase`） | [認証](https://nodaro.ai/docs/developers/sdk/auth#createsharedsupabaseclientoptions) |
| `NodaroError`、`UnauthorizedError`、`ForbiddenError`、`NotFoundError`、`RateLimitedError`、`InsufficientCreditsError`、`StorageExceededError`、`WorkflowConflictError`、`JobBlockedError`、`JobFailedError`、`JobTimeoutError`、`JobAbortedError`、`JobHeldError`、`StudioOpError`、`StudioPreviewUnavailable`、`StudioPreviewAppliedError` | クラス | [エラー](https://nodaro.ai/docs/developers/sdk/errors) |
| `WorkflowConflictCode`、`throwFromResponse` | 型、関数 | [エラー](https://nodaro.ai/docs/developers/sdk/errors) |

## ワークフロー、実行、ノード
| エクスポート | 掲載ページ |
| --- | --- |
| `Workflow`、`ListWorkflowsParams`、`CreateWorkflowInput`、`UpdateWorkflowInput`、`RunWorkflowParams`、`RunWorkflowResult` | [ワークフローとプロジェクト](https://nodaro.ai/docs/developers/sdk/workflows) |
| `Project`、`CreateProjectInput`、`UpdateProjectInput` | [ワークフローとプロジェクト](https://nodaro.ai/docs/developers/sdk/workflows) |
| `GenericNode`、`GenericEdge`、`WorkflowExport`、`WorkflowExportCharacter`、`WorkflowExportObject`、`WorkflowExportLocation` | [ワークフローとプロジェクト](https://nodaro.ai/docs/developers/sdk/workflows) |
| `Job`、`JobStatus`、`JobStatusResult`、`JobErrorHint`、`SafetyBlockHint`、`PolicyBlockHint`、`CreditStatus`、`CancelJobResult`、`DeleteJobResult`、`ListJobsParams`、`ListJobsPage` | [ジョブと実行](https://nodaro.ai/docs/developers/sdk/jobs-and-executions) |
| `WorkflowExecution`、`WorkflowExecutionSummary`、`NodeExecutionState`、`NodeExecutionStatus`、`ExecutionStatus`、`ExecutionTriggerType`、`ListExecutionsForWorkflowParams`、`ListExecutionsPage`、`CancelExecutionParams` | [ジョブと実行](https://nodaro.ai/docs/developers/sdk/jobs-and-executions) |
| `StopVideoProResult`、`ContinueVideoProResult` | [ジョブと実行](https://nodaro.ai/docs/developers/sdk/jobs-and-executions#clientvideopro) |
| `NodeDescriptor`、`NodeCategory`、`OutputType`、`NodeInputField`、`NodeInputSchema` | [ノードの実行](https://nodaro.ai/docs/developers/sdk/nodes) |
| `RunNodeResult`、`RunNodeAdjustment`、`NodeJobOutput`、`RunAndWaitOptions`、`RunManyResult` | [ノードの実行](https://nodaro.ai/docs/developers/sdk/nodes) |
| `GenerateImageParams`、`GenerateVideoParams`、`TextToVideoParams`、`StructuredReferenceParams`、`ConnectedReference`、`DescribedReference` | [ノードの実行](https://nodaro.ai/docs/developers/sdk/nodes#typed-parameters) |
| `PromptAffixFields` | [プロンプトの前後のテキスト](https://nodaro.ai/docs/concepts/prompt-pre-post-text)の、ノードデータのフィールドです。`promptPrefix` と `promptSuffix` です。 |
| `PublishedApp`、`PublishedAppDetail`、`ListAppsParams`、`ListAppsResult`、`AppRunResult`、`RunAppOptions`、`AppRun`、`ListAppRunsParams`、`DeleteAppRunResult` | [アプリとテンプレート](https://nodaro.ai/docs/developers/sdk/apps-and-templates) |
| `Template`、`TemplateBrowseCard`、`TemplateSort`、`BrowseTemplatesParams`、`BrowseTemplatesResult`、`CloneTemplateParams`、`CloneTemplateResult` | [アプリとテンプレート](https://nodaro.ai/docs/developers/sdk/apps-and-templates) |
| `TutorialCategory`、`TutorialVideoItem`、`TutorialFlowItem` | [アプリとテンプレート](https://nodaro.ai/docs/developers/sdk/apps-and-templates#clienttutorials) |
| `LlmStructuredInput`、`LlmStructuredResult`、`LlmStructuredJobInput`、`LlmStructuredJobOutput` | [LLM と Reduce](https://nodaro.ai/docs/developers/sdk/llm-and-reduce) |
| `ReduceStrategyId`、`ReduceMeta`、`ReduceInput`、`ReduceResult` | [LLM と Reduce](https://nodaro.ai/docs/developers/sdk/llm-and-reduce) |

## メディア、ボイス、編集
| エクスポート | 掲載ページ |
| --- | --- |
| `UploadResult`、`LibraryAsset`、`ListLibraryParams`、`ListLibraryResult` | [メディアとアップロード](https://nodaro.ai/docs/developers/sdk/media-and-uploads) |
| `VideoMetadata`、`DownloadVideoProgress`、`MediaProcessInput`、`MediaProcessResult`、`OverlayPlacement` | [メディアとアップロード](https://nodaro.ai/docs/developers/sdk/media-and-uploads) |
| `AddCaptionsInput`、`CaptionLookInput`、`CaptionSegmentInput`、`CaptionEntry` | [メディアとアップロード](https://nodaro.ai/docs/developers/sdk/media-and-uploads#mediaaddcaptionsinput) |
| `Voice`、`SharedVoice`、`VoiceClone`、`VoiceLibraryParams`、`VoiceLibraryResponse` | [ボイスとオーディオ](https://nodaro.ai/docs/developers/sdk/voices-and-audio) |
| `VoiceChangerProInput`、`VoiceChangerProVoice`、`VcpAnalyzeInput`、`VcpAnalysis`、`VcpAnalysisSpeaker`、`VcpExportInput`、`VcpExportTrack` | [ボイスとオーディオ](https://nodaro.ai/docs/developers/sdk/voices-and-audio#voicesrecastinput) |
| `VoiceDesignInput`、`VoiceRemixInput`、`DubbingInput`、`AudioFxPreset` | [ボイスとオーディオ](https://nodaro.ai/docs/developers/sdk/voices-and-audio) |
| `TranscribeWord`、`TranscribeJobOutput`、`TranscribeProvider`、`TranscribeLane` | [ボイスとオーディオ](https://nodaro.ai/docs/developers/sdk/voices-and-audio#audiotranscribeinput) |
| `EditJobResult`、`SilenceDetectInput`、`SilenceRanges`、`AudioSyncInput`、`AudioSyncSource`、`AudioSyncOffset`、`AudioSyncResult`、`ApplyEdlInput`、`EditPlanInput`、`EditPlanSource`、`EditPlanMode`、`EditPlanTier`、`Edl`、`EdlClipSet`、`ChapterSet`、`Transcript` | [編集](https://nodaro.ai/docs/developers/sdk/editing) |
| `GenerateScene3DParams`、`EditScene3DParams`、`RenderScene3DParams`、`Scene3DJobOutput`、`Scene3DCapabilities`、`Scene3DAuthoringEngine`、`RetainedScene3DEditParams`、`RetainedScene3DEditResult`、`Scene3DDelivery`、`Scene3DDeliveryAsset`、`Scene3DDeliveryAssetKind` | [3D シーン](https://nodaro.ai/docs/developers/sdk/scenes-3d) |

## アセット
| エクスポート | 掲載ページ |
| --- | --- |
| `Character`、`CharacterDetail`、`CharacterUsage`、`ReferencePhoto`、`ReferencePhotoKind`、`UpsertCharacterInput`、`UpsertCharacterResult`、`ListCharactersParams`、`ListCharactersResult`、`DuplicateCharacterInput`、`GenerateCharacterInput`、`GenerateCharacterResult`、`GenerateAssetInput`、`GenerateMotionInput`、`ApprovePortraitResult`、`RecaptionResult`、`CharacterAspectRatio`、`EntityStyle` | [キャラクター](https://nodaro.ai/docs/developers/sdk/characters) |
| `Location`、`LocationDetail`、`LocationReferencePhoto`、`LocationReferencePhotoKind`、`CreateLocationInput`、`UpdateLocationInput`、`UpdateLocationResult`、`ListLocationsParams`、`GenerateLocationInput`、`GenerateLocationResult`、`GenerateLocationAssetInput`、`GenerateSurroundContinuationInput`、`ApproveMainImageResult`、`RecaptionLocationResult`、`LocationAssetType`、`LocationAttachColumn`、`SurroundDirection` | [ロケーション](https://nodaro.ai/docs/developers/sdk/locations) |
| `Object`、`ObjectDetail`、`ObjectCategory`、`ObjectReferencePhoto`、`ObjectReferencePhotoKind`、`CreateObjectInput`、`UpdateObjectInput`、`UpdateObjectResult`、`UpsertObjectInput`、`UpsertObjectResult`、`ListObjectsParams`、`GenerateObjectInput`、`GenerateObjectResult`、`GenerateObjectAssetInput`、`GenerateObjectAssetResult`、`GenerateObjectMotionInput`、`GenerateObjectMotionResult`、`ApproveObjectMainImageResult`、`RecaptionObjectResult`、`ObjectAssetType`、`ObjectAttachColumn`、`ObjectAspectRatio` | [オブジェクトとクリーチャー](https://nodaro.ai/docs/developers/sdk/objects-and-creatures) |
| `Creature`、`CreatureDetail`、`CreatureReferencePhoto`、`CreatureReferencePhotoKind`、`CreateCreatureInput`、`UpdateCreatureInput`、`UpdateCreatureResult`、`UpsertCreatureInput`、`UpsertCreatureResult`、`ListCreaturesParams`、`GenerateCreatureInput`、`GenerateCreatureResult`、`GenerateCreatureAssetInput`、`GenerateCreatureAssetResult`、`GenerateCreatureMotionInput`、`GenerateCreatureMotionResult`、`ApproveCreatureMainImageResult`、`RecaptionCreatureResult`、`CreatureAssetType`、`CreatureAttachColumn`、`CreatureAspectRatio` | [オブジェクトとクリーチャー](https://nodaro.ai/docs/developers/sdk/objects-and-creatures#clientcreatures) |
| `CommunityCard`、`CommunityEntityType`、`CommunitySort`、`CommunityReportReason`、`BrowseCommunityParams`、`BrowseCommunityResult`、`CloneListingResult`、`FavoriteListingResult`、`ReportListingResult` | [コミュニティライブラリ](https://nodaro.ai/docs/developers/sdk/community) |

## プロダクション
| エクスポート | 掲載ページ |
| --- | --- |
| `StudioProduction`、`StudioProductionDetail`、`StudioSkillResponse`、`StudioValidatePlanResponse`、`StudioPlanIssue`、`StudioListProductionsResponse`、`ListStudioProductionsOptions`、`GetProductionOptions`、`StudioExportPlanOptions`、`StudioExportPlanResponse`、`StudioExportStep` | [スタジオプロダクション](https://nodaro.ai/docs/developers/sdk/studio) |
| `StudioCreateProductionRequest`、`StudioProductionResponse`、`StudioImportSummary`、`StudioClientRequestId`、`StudioOpsRequest`、`StudioOpsResponse`、`StudioOpsReceipt`、`StudioOpsImpact`、`StudioOpClass`、`StudioOpsDryRunReceipt`、`StudioOpsDryRunResponse`、`StudioReconcileResponse` | [スタジオプロダクション](https://nodaro.ai/docs/developers/sdk/studio#productionsopsproductionid-input) |
| `StudioGenerateRequest`、`StudioGenerateOptions`、`StudioGenerateResult`、`StudioGenerateEstimate`、`StudioGenerateResponse`、`StudioVideoLane`、`StudioDescribeRequest`、`StudioFrameRequest`、`StudioVoiceRequest`、`StudioRevoiceRequest`、`StudioMusicRequest`、`StudioMediaResponse`、`StudioJobStartedResponse`、`StudioCloneRequest` | [スタジオプロダクション](https://nodaro.ai/docs/developers/sdk/studio#generate-stills-and-clips) |
| `StudioProductionCapabilities`、`StudioKeyframeRecord`、`StudioProductionRecord`、`StudioProductionReply`、`StudioEditInput`、`StudioKeyframeGenerationInput`、`StudioKeyframeAcceptanceInput`、`StudioShotGenerationInput`、`StudioGenerationReply`、`StudioDocumentJson` | [スタジオプロダクション](https://nodaro.ai/docs/developers/sdk/studio#clientstudio-planned-frames) |
| `Shot`、`ShotMode`、`ShotEntityRef`、`CreateShotInput`、`UpdateShotInput` | [スタジオプロダクション](https://nodaro.ai/docs/developers/sdk/studio#clientshots) |
| `CreateRecastInput`、`EstimateRecastInput`、`RecastEstimate`、`RecastRunSnapshot`、`ResolveRecastGateInput`、`RecastScriptValidation`、`RecastScriptValidationError`、`RecastScriptImportResult` | [Recast](https://nodaro.ai/docs/developers/sdk/recast) |
| `RecastAudioManifestV1`、`RecastAudioLayerName`、`RecastAudioMix`、`RecastAudioMixControl`、`RecastAudioSectionReplacement`、`RecastRescoreReplacement`、`RecastRescoreOperation`、`EstimateRecastRescoreInput`、`RecastRescoreRequestV2`、`RecastRescoreQuote`、`RecastRescoreResponse` | [Recast](https://nodaro.ai/docs/developers/sdk/recast#change-the-music-mix) |
| `PipelineStageName`、`BranchPipelineInput`、`BranchPipelineResult`、`ChatTurn`、`ChatStageResult`、`ApplyChatProposalResult` | [パイプライン](https://nodaro.ai/docs/developers/sdk/pipelines) |
| `CopilotThread`、`CopilotThreadWorkflow`、`CopilotSurface`、`CopilotRunMode`、`CopilotModelTier`、`CopilotMessage`、`CopilotMessagePart`、`CreateCopilotThreadInput`、`CopilotStreamOptions`、`CopilotStreamFrame` とフレームのデータ型 | [Copilot](https://nodaro.ai/docs/developers/sdk/copilot) |

## アカウントとカタログ
| エクスポート | 掲載ページ |
| --- | --- |
| `ModelSummary`、`ModelsListResult`、`ListModelsOptions`、`UserBalance`、`ModelCostsResult` | [モデルとクレジット](https://nodaro.ai/docs/developers/sdk/models-and-credits) |
| `PickerCatalog`、`PickerCatalogSummary`、`PickerOption`、`PickerDimension`、`PickerCatalogSection`、`GetPickerCatalogOptions` | [ピッカー、プリセット、プロンプト](https://nodaro.ai/docs/developers/sdk/pickers-and-prompts) |
| `CatalogsListResponse`、`ProjectedCatalog`、`ProjectedCatalogOption`、`ProjectedCatalogDimension`、`ProjectedCatalogSection` | [ピッカー、プリセット、プロンプト](https://nodaro.ai/docs/developers/sdk/pickers-and-prompts#clientcatalogs) |
| `NodePreset`、`NodePresetGroup`、`FactoryPresetsResult` | [ピッカー、プリセット、プロンプト](https://nodaro.ai/docs/developers/sdk/pickers-and-prompts#clientpresets) |
| `AnalyzeInput`、`AnalyzeResult`、`GenerateInput`、`EnhanceInput`、`PromptResult`、`WizardQuestion`、`WizardOption`、`WizardSelection`、`RecommendedModel`、`WizardNodeContext` | [ピッカー、プリセット、プロンプト](https://nodaro.ai/docs/developers/sdk/pickers-and-prompts#clientprompthelper) |
| `OrganizationView`、`OrganizationSummary`、`OrgMemberView`、`OrgKind`、`OrgRole`、`OrgStatus`、`OrgSettings`、`OrgAuditEntry`、`OrgPage`、`OrgErrorCode`、`MemberStatus`、`CreateOrgInput`、`InviteInput`、`ListInvitationsOptions` | [組織とワークスペース](https://nodaro.ai/docs/developers/sdk/organizations) |
| `InvitationView`、`InvitationDelivery`、`InvitationPreview`、`InvitationState`、`JoinCodeView` | [組織とワークスペース](https://nodaro.ai/docs/developers/sdk/organizations) |
| `WorkspaceView`、`WorkspaceSummary`、`WorkspaceMemberView`、`WorkspaceRole`、`WorkspaceSettings`、`CreateWorkspaceInput` | [組織とワークスペース](https://nodaro.ai/docs/developers/sdk/organizations#clientworkspaces) |
| `UsageQuery`、`UsageGroupBy`、`UsageReport`、`UsageReportRow`、`UsageReportTotals`、`UsageVarianceRow`、`UsageLogEntry` | [組織とワークスペース](https://nodaro.ai/docs/developers/sdk/organizations#organization-usage) |
| `DeveloperApp`、`DeveloperAppScope`、`DeveloperAppStatus`、`DeveloperAppKind`、`CreateDeveloperAppInput`、`UpdateDeveloperAppInput`、`CreateDeveloperAppResult`、`RotateSecretResult` | [OAuth と開発者アプリ](https://nodaro.ai/docs/developers/sdk/developer-apps) |
| `ExchangeCodeInput`、`AccessTokenResponse`、`OAuthAppInfo` | [OAuth と開発者アプリ](https://nodaro.ai/docs/developers/sdk/developer-apps#clientoauth) |

## ヘルパー関数と定数
これらは型ではなく値なので、`type` を付けずにインポートします。

| エクスポート | 内容 |
| --- | --- |
| `nodeStateMayCarryOutput(status)`、`OUTPUT_BEARING_NODE_STATUSES` | ノードの状態が `output` を持てるかどうかです。`completed` と `failed` です。[ジョブと実行](https://nodaro.ai/docs/developers/sdk/jobs-and-executions#executionsgetid)を参照してください。 |
| `isStudioGenerateEstimate(result)` | 生成の見積もりと、開始された実行を見分けます。[スタジオプロダクション](https://nodaro.ai/docs/developers/sdk/studio#generate-stills-and-clips)を参照してください。 |
| `unwrapEditPlanOutput(outputData)` | 編集プランのジョブの出力を、EDL、EDL のリスト、チャプターのいずれかとして読み取ります。[編集](https://nodaro.ai/docs/developers/sdk/editing#editeditplaninput)を参照してください。 |
| `throwFromResponse(status, body)` | API の応答に対応するエラークラスをスローします。[エラー](https://nodaro.ai/docs/developers/sdk/errors#throwfromresponsestatus-body)を参照してください。 |
| `PROMPT_PREFIX_KEY`、`PROMPT_SUFFIX_KEY` | プロンプトの前後のテキストの、ノードデータのキーです。 |
| `WORKSPACE_HEADER` | ワークスペースを指定するヘッダーの名前で、`X-Nodaro-Workspace` です。 |
| `USAGE_GROUP_BYS` | 使用状況レポートが受け付ける集計単位です。 |
| `LOCATION_ASSET_TYPES`、`LOCATION_ATTACH_COLUMNS`、`SURROUND_DIRECTIONS` | ロケーションで使えるバリエーションの種類、コレクション、360 度ビューの方向です。 |
| `OBJECT_ASSET_TYPES`、`OBJECT_ATTACH_COLUMNS`、`OBJECT_ASPECT_OPTIONS`、`OBJECT_ASPECT_DEFAULTS` | オブジェクトで使えるバリエーションの種類、コレクション、アスペクト比です。 |
| `CREATURE_ASSET_TYPES`、`CREATURE_ATTACH_COLUMNS`、`CREATURE_ASPECT_OPTIONS`、`CREATURE_ASPECT_DEFAULTS` | クリーチャーについての、同じ内容のリストです。 |
| `CHARACTER_STYLES`、`CHARACTER_ASPECT_OPTIONS`、`CHARACTER_ASPECT_DEFAULTS` | キャラクターのスタイルとアスペクト比です。 |
| `SCENE3D_DELIVERY_ASSET_USAGE` | 納品ファイルの種類と用途の、使用できる組み合わせです。 |

`WorkflowsResource` や `NodesResource` のような各リソースのクラスも、高度な型付けのためにエクスポートされています。通常は必要ありません。`createClient` が、すべてのリソースを代わりに組み立てます。

## Frequently asked questions

### Nodaro SDK から型をインポートするには、どうすればよいですか？

型の名前を指定して import type を使います。たとえば import type { Workflow, Job } from @nodaro/sdk のようにします。メソッドが使う型の中には、エクスポートされていないものもあります。それらは @nodaro/shared からインポートするか、メソッドから導出してください。

### 一部のフィールドが snake_case で、ほかが camelCase なのはなぜですか？

型は、API の通信形式に従っています。Job が output_data や created_at のような snake_case を使うのは、API がその形でデータを送るためです。Workflow と WorkflowExecution は camelCase を使います。

### @nodaro/shared も必要ですか？

通常は必要ありません。SDK は、そのメソッドが使う共有の型の大半（組織関連や編集関連の型など）を再エクスポートしています。3D レビュー用のヘルパーや toConnectedReference などの一部のヘルパーと、PipelineInput や CommunityFullDetail などの一部の型は、@nodaro/shared から直接インポートします。
