Skip to content

APIリファレンス

この包括的なAPIリファレンスは、Traeで構築されたアプリケーション向けの利用可能なすべてのエンドポイント、認証方法、統合パターンの詳細なドキュメントを提供します。

概要

Trae APIは、コアプラットフォーム機能へのプログラマティックアクセスを提供するRESTful APIです。このリファレンスでは以下をカバーします:

  • 認証と認可
  • コアAPIエンドポイント
  • リクエスト/レスポンス形式
  • エラーハンドリング
  • レート制限
  • SDK使用方法
  • 統合例

ベースURL

本番環境: https://api.trae.dev/v1
ステージング環境: https://staging-api.trae.dev/v1
開発環境: http://localhost:3000/api/v1

認証

APIキー認証

Trae APIは認証にAPIキーを使用します。AuthorizationヘッダーにAPIキーを含めてください:

http
Authorization: Bearer YOUR_API_KEY

APIキーの取得

  1. Traeダッシュボードにログイン
  2. 設定 > APIキーに移動
  3. 「新しいキーを生成」をクリック
  4. APIキーをコピーして安全に保存
bash
# curlを使用した例
curl -H "Authorization: Bearer YOUR_API_KEY" \
     https://api.trae.dev/v1/projects

OAuth 2.0認証

ユーザー固有のアクセスが必要なアプリケーションの場合、OAuth 2.0を使用します:

認可コードフロー

http
# ステップ1: 認可リクエスト
GET https://api.trae.dev/oauth/authorize?
  response_type=code&
  client_id=YOUR_CLIENT_ID&
  redirect_uri=YOUR_REDIRECT_URI&
  scope=read:projects write:projects&
  state=RANDOM_STATE_STRING
http
# ステップ2: トークン交換
POST https://api.trae.dev/oauth/token
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&
code=AUTHORIZATION_CODE&
client_id=YOUR_CLIENT_ID&
client_secret=YOUR_CLIENT_SECRET&
redirect_uri=YOUR_REDIRECT_URI

レスポンス

json
{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type": "Bearer",
  "expires_in": 3600,
  "refresh_token": "def50200...",
  "scope": "read:projects write:projects"
}

JWTトークン認証

サービス間通信の場合:

javascript
// JWTトークンを生成
const jwt = require('jsonwebtoken');

const payload = {
  iss: 'your-service-id',
  aud: 'trae-api',
  sub: 'service-account',
  exp: Math.floor(Date.now() / 1000) + (60 * 60), // 1時間
  iat: Math.floor(Date.now() / 1000)
};

const token = jwt.sign(payload, process.env.JWT_SECRET, {
  algorithm: 'HS256'
});

// リクエストでトークンを使用
const response = await fetch('https://api.trae.dev/v1/projects', {
  headers: {
    'Authorization': `Bearer ${token}`,
    'Content-Type': 'application/json'
  }
});

コアエンドポイント

プロジェクト

プロジェクト一覧

http
GET /projects

パラメータ:

パラメータ説明デフォルト
pageintegerページ番号1
limitintegerページあたりのアイテム数(最大100)20
sortstringソートフィールド(namecreated_atupdated_atcreated_at
orderstringソート順(ascdescdesc
searchstring検索クエリ-
statusstringステータスでフィルタ(activearchived-

リクエスト例:

bash
curl -H "Authorization: Bearer YOUR_API_KEY" \
     "https://api.trae.dev/v1/projects?page=1&limit=10&sort=name&order=asc"

レスポンス:

json
{
  "data": [
    {
      "id": "proj_1234567890",
      "name": "My Project",
      "description": "サンプルプロジェクト",
      "status": "active",
      "created_at": "2024-01-15T10:30:00Z",
      "updated_at": "2024-01-15T10:30:00Z",
      "owner": {
        "id": "user_1234567890",
        "name": "John Doe",
        "email": "john@example.com"
      },
      "settings": {
        "public": false,
        "collaboration_enabled": true
      },
      "stats": {
        "files_count": 25,
        "collaborators_count": 3,
        "last_activity": "2024-01-15T09:45:00Z"
      }
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 10,
    "total": 1,
    "total_pages": 1
  }
}

プロジェクト取得

http
GET /projects/{project_id}

リクエスト例:

bash
curl -H "Authorization: Bearer YOUR_API_KEY" \
     https://api.trae.dev/v1/projects/proj_1234567890

レスポンス:

json
{
  "id": "proj_1234567890",
  "name": "My Project",
  "description": "サンプルプロジェクト",
  "status": "active",
  "created_at": "2024-01-15T10:30:00Z",
  "updated_at": "2024-01-15T10:30:00Z",
  "owner": {
    "id": "user_1234567890",
    "name": "John Doe",
    "email": "john@example.com"
  },
  "collaborators": [
    {
      "id": "user_0987654321",
      "name": "Jane Smith",
      "email": "jane@example.com",
      "role": "editor",
      "joined_at": "2024-01-16T14:20:00Z"
    }
  ],
  "settings": {
    "public": false,
    "collaboration_enabled": true,
    "auto_save": true,
    "version_control": true
  },
  "repository": {
    "url": "https://github.com/user/repo",
    "branch": "main",
    "last_sync": "2024-01-15T09:45:00Z"
  }
}

プロジェクト作成

http
POST /projects

リクエストボディ:

json
{
  "name": "新しいプロジェクト",
  "description": "プロジェクトの説明",
  "template": "react",
  "settings": {
    "public": false,
    "collaboration_enabled": true
  },
  "repository": {
    "url": "https://github.com/user/repo",
    "branch": "main"
  }
}

リクエスト例:

bash
curl -X POST \
     -H "Authorization: Bearer YOUR_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{
       "name": "新しいプロジェクト",
       "description": "新しいプロジェクト",
       "template": "react"
     }' \
     https://api.trae.dev/v1/projects

レスポンス:

json
{
  "id": "proj_2345678901",
  "name": "新しいプロジェクト",
  "description": "新しいプロジェクト",
  "status": "active",
  "created_at": "2024-01-16T15:30:00Z",
  "updated_at": "2024-01-16T15:30:00Z",
  "owner": {
    "id": "user_1234567890",
    "name": "John Doe",
    "email": "john@example.com"
  },
  "settings": {
    "public": false,
    "collaboration_enabled": true,
    "auto_save": true,
    "version_control": true
  }
}

プロジェクト更新

http
PUT /projects/{project_id}
PATCH /projects/{project_id}

リクエストボディ(PATCH例):

json
{
  "name": "更新されたプロジェクト名",
  "settings": {
    "public": true
  }
}

プロジェクト削除

http
DELETE /projects/{project_id}

レスポンス:

json
{
  "message": "プロジェクトが正常に削除されました",
  "deleted_at": "2024-01-16T16:00:00Z"
}

ファイル

ファイル一覧

http
GET /projects/{project_id}/files

パラメータ:

パラメータ説明
pathstringディレクトリパス
recursivebooleanサブディレクトリを含む
typestringファイルタイプでフィルタ

リクエスト例:

bash
curl -H "Authorization: Bearer YOUR_API_KEY" \
     "https://api.trae.dev/v1/projects/proj_1234567890/files?path=/src&recursive=true"

レスポンス:

json
{
  "data": [
    {
      "id": "file_1234567890",
      "name": "index.js",
      "path": "/src/index.js",
      "type": "file",
      "size": 1024,
      "mime_type": "application/javascript",
      "created_at": "2024-01-15T10:30:00Z",
      "updated_at": "2024-01-15T11:45:00Z",
      "checksum": "sha256:abc123..."
    },
    {
      "id": "dir_1234567890",
      "name": "components",
      "path": "/src/components",
      "type": "directory",
      "created_at": "2024-01-15T10:30:00Z",
      "updated_at": "2024-01-15T10:30:00Z"
    }
  ]
}

ファイル内容取得

http
GET /projects/{project_id}/files/{file_id}/content

レスポンス:

javascript
// ファイル内容がテキストとして返される
import React from 'react';

function App() {
  return (
    <div className="App">
      <h1>Hello World</h1>
    </div>
  );
}

export default App;

ファイル作成/更新

http
PUT /projects/{project_id}/files

リクエストボディ:

json
{
  "path": "/src/components/Button.js",
  "content": "import React from 'react';\n\nconst Button = ({ children, onClick }) => {\n  return <button onClick={onClick}>{children}</button>;\n};\n\nexport default Button;",
  "encoding": "utf-8"
}

ファイル削除

http
DELETE /projects/{project_id}/files/{file_id}

ユーザー

現在のユーザー取得

http
GET /user

レスポンス:

json
{
  "id": "user_1234567890",
  "name": "John Doe",
  "email": "john@example.com",
  "avatar_url": "https://avatars.example.com/user_1234567890",
  "created_at": "2024-01-01T00:00:00Z",
  "subscription": {
    "plan": "pro",
    "status": "active",
    "expires_at": "2024-12-31T23:59:59Z"
  },
  "preferences": {
    "theme": "dark",
    "language": "ja",
    "notifications": {
      "email": true,
      "push": false
    }
  }
}

ユーザープロフィール更新

http
PATCH /user

リクエストボディ:

json
{
  "name": "John Smith",
  "preferences": {
    "theme": "light",
    "notifications": {
      "email": false
    }
  }
}

コラボレーション

プロジェクトコラボレーター一覧

http
GET /projects/{project_id}/collaborators

レスポンス:

json
{
  "data": [
    {
      "id": "collab_1234567890",
      "user": {
        "id": "user_0987654321",
        "name": "Jane Smith",
        "email": "jane@example.com",
        "avatar_url": "https://avatars.example.com/user_0987654321"
      },
      "role": "editor",
      "permissions": [
        "read",
        "write",
        "comment"
      ],
      "invited_by": "user_1234567890",
      "invited_at": "2024-01-16T14:00:00Z",
      "joined_at": "2024-01-16T14:20:00Z",
      "status": "active"
    }
  ]
}

コラボレーター招待

http
POST /projects/{project_id}/collaborators

リクエストボディ:

json
{
  "email": "collaborator@example.com",
  "role": "editor",
  "message": "私のプロジェクトに参加してください!"
}

コラボレーター役割更新

http
PATCH /projects/{project_id}/collaborators/{collaborator_id}

リクエストボディ:

json
{
  "role": "viewer",
  "permissions": ["read", "comment"]
}

コラボレーター削除

http
DELETE /projects/{project_id}/collaborators/{collaborator_id}

テンプレート

テンプレート一覧

http
GET /templates

パラメータ:

パラメータ説明
categorystringカテゴリでフィルタ
languagestringプログラミング言語でフィルタ
featuredboolean注目のテンプレートのみ表示

レスポンス:

json
{
  "data": [
    {
      "id": "template_react",
      "name": "React App",
      "description": "TypeScriptを使用したモダンなReactアプリケーション",
      "category": "frontend",
      "language": "javascript",
      "tags": ["react", "typescript", "vite"],
      "featured": true,
      "author": {
        "name": "Trae Team",
        "url": "https://trae.dev"
      },
      "preview_url": "https://templates.trae.dev/react",
      "repository_url": "https://github.com/trae-dev/template-react",
      "created_at": "2024-01-01T00:00:00Z",
      "updated_at": "2024-01-15T10:00:00Z"
    }
  ]
}

テンプレート取得

http
GET /templates/{template_id}

デプロイメント

デプロイメント一覧

http
GET /projects/{project_id}/deployments

レスポンス:

json
{
  "data": [
    {
      "id": "deploy_1234567890",
      "status": "success",
      "environment": "production",
      "url": "https://my-app.trae.app",
      "commit": {
        "sha": "abc123def456",
        "message": "新機能を追加",
        "author": "John Doe"
      },
      "created_at": "2024-01-16T15:00:00Z",
      "completed_at": "2024-01-16T15:05:00Z",
      "duration": 300,
      "logs_url": "https://api.trae.dev/v1/projects/proj_1234567890/deployments/deploy_1234567890/logs"
    }
  ]
}

デプロイメント作成

http
POST /projects/{project_id}/deployments

リクエストボディ:

json
{
  "environment": "production",
  "branch": "main",
  "build_command": "npm run build",
  "environment_variables": {
    "NODE_ENV": "production",
    "API_URL": "https://api.example.com"
  }
}

デプロイメントログ取得

http
GET /projects/{project_id}/deployments/{deployment_id}/logs

レスポンス:

json
{
  "logs": [
    {
      "timestamp": "2024-01-16T15:00:30Z",
      "level": "info",
      "message": "ビルドプロセスを開始"
    },
    {
      "timestamp": "2024-01-16T15:01:00Z",
      "level": "info",
      "message": "依存関係をインストール中"
    },
    {
      "timestamp": "2024-01-16T15:04:30Z",
      "level": "info",
      "message": "ビルドが正常に完了"
    },
    {
      "timestamp": "2024-01-16T15:05:00Z",
      "level": "info",
      "message": "デプロイメント完了"
    }
  ]
}

エラーハンドリング

エラーレスポンス形式

すべてのAPIエラーは一貫した形式に従います:

json
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "リクエストデータが無効です",
    "details": [
      {
        "field": "name",
        "message": "名前は必須です"
      },
      {
        "field": "email",
        "message": "メールアドレスは有効なメールアドレスである必要があります"
      }
    ],
    "request_id": "req_1234567890",
    "timestamp": "2024-01-16T15:30:00Z"
  }
}

HTTPステータスコード

ステータスコード説明
200OK - リクエスト成功
201Created - リソース作成成功
204No Content - リクエスト成功、コンテンツなし
400Bad Request - 無効なリクエストデータ
401Unauthorized - 認証が必要
403Forbidden - 権限不足
404Not Found - リソースが見つからない
409Conflict - リソースが既に存在
422Unprocessable Entity - バリデーションエラー
429Too Many Requests - レート制限超過
500Internal Server Error - サーバーエラー
503Service Unavailable - サービス一時的に利用不可

エラーコード

エラーコード説明
AUTHENTICATION_ERROR無効または欠落した認証
AUTHORIZATION_ERROR権限不足
VALIDATION_ERRORリクエストデータバリデーション失敗
NOT_FOUND要求されたリソースが見つからない
CONFLICTリソースが既に存在
RATE_LIMIT_EXCEEDEDリクエスト数が多すぎる
INTERNAL_ERROR内部サーバーエラー
SERVICE_UNAVAILABLEサービス一時的に利用不可

レート制限

レート制限ヘッダー

すべてのAPIレスポンスにはレート制限情報が含まれます:

http
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1642348800
X-RateLimit-Window: 3600

レート制限階層

プラン1時間あたりのリクエスト数バースト制限
Free1,000100
Pro10,000500
Enterprise100,0002,000

レート制限超過レスポンス

json
{
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "レート制限を超過しました",
    "details": {
      "limit": 1000,
      "window": 3600,
      "reset_at": "2024-01-16T16:00:00Z"
    }
  }
}

Webhook

Webhookイベント

イベント説明
project.createdプロジェクトが作成された
project.updatedプロジェクトが更新された
project.deletedプロジェクトが削除された
file.createdファイルが作成された
file.updatedファイルが更新された
file.deletedファイルが削除された
deployment.startedデプロイメントが開始された
deployment.completedデプロイメントが完了した
deployment.failedデプロイメントが失敗した
collaborator.invitedコラボレーターが招待された
collaborator.joinedコラボレーターが参加した
collaborator.removedコラボレーターが削除された

Webhookペイロード

json
{
  "id": "webhook_1234567890",
  "event": "project.created",
  "timestamp": "2024-01-16T15:30:00Z",
  "data": {
    "project": {
      "id": "proj_1234567890",
      "name": "新しいプロジェクト",
      "owner": {
        "id": "user_1234567890",
        "name": "John Doe"
      }
    }
  },
  "delivery_attempt": 1
}

Webhook設定

http
POST /webhooks

リクエストボディ:

json
{
  "url": "https://your-app.com/webhooks/trae",
  "events": ["project.created", "deployment.completed"],
  "secret": "your-webhook-secret"
}

Webhook検証

javascript
const crypto = require('crypto');

function verifyWebhook(payload, signature, secret) {
  const expectedSignature = crypto
    .createHmac('sha256', secret)
    .update(payload)
    .digest('hex');
  
  return crypto.timingSafeEqual(
    Buffer.from(signature, 'hex'),
    Buffer.from(expectedSignature, 'hex')
  );
}

// Express.js例
app.post('/webhooks/trae', (req, res) => {
  const signature = req.headers['x-trae-signature'];
  const payload = JSON.stringify(req.body);
  
  if (!verifyWebhook(payload, signature, process.env.WEBHOOK_SECRET)) {
    return res.status(401).send('Unauthorized');
  }
  
  const { event, data } = req.body;
  
  switch (event) {
    case 'project.created':
      console.log('新しいプロジェクトが作成されました:', data.project.name);
      break;
    case 'deployment.completed':
      console.log('デプロイメントが完了しました:', data.deployment.url);
      break;
  }
  
  res.status(200).send('OK');
});

SDK使用方法

JavaScript/Node.js SDK

インストール

bash
npm install @trae/sdk
# または
yarn add @trae/sdk

基本的な使用方法

javascript
const { TraeClient } = require('@trae/sdk');

const client = new TraeClient({
  apiKey: process.env.TRAE_API_KEY,
  baseUrl: 'https://api.trae.dev/v1' // オプション
});

// プロジェクト一覧
const projects = await client.projects.list({
  page: 1,
  limit: 10
});

// プロジェクト取得
const project = await client.projects.get('proj_1234567890');

// プロジェクト作成
const newProject = await client.projects.create({
  name: '私の新しいプロジェクト',
  template: 'react'
});

// プロジェクト更新
const updatedProject = await client.projects.update('proj_1234567890', {
  name: '更新されたプロジェクト名'
});

// プロジェクト削除
await client.projects.delete('proj_1234567890');

ファイル操作

javascript
// ファイル一覧
const files = await client.files.list('proj_1234567890', {
  path: '/src',
  recursive: true
});

// ファイル内容取得
const content = await client.files.getContent('proj_1234567890', 'file_1234567890');

// ファイル作成/更新
await client.files.createOrUpdate('proj_1234567890', {
  path: '/src/components/Button.js',
  content: 'import React from "react";\n\nconst Button = () => <button>クリックしてください</button>;\n\nexport default Button;'
});

// ファイル削除
await client.files.delete('proj_1234567890', 'file_1234567890');

デプロイメント操作

javascript
// デプロイメント一覧
const deployments = await client.deployments.list('proj_1234567890');

// デプロイメント作成
const deployment = await client.deployments.create('proj_1234567890', {
  environment: 'production',
  branch: 'main'
});

// デプロイメントログ取得
const logs = await client.deployments.getLogs('proj_1234567890', 'deploy_1234567890');

エラーハンドリング

javascript
try {
  const project = await client.projects.get('invalid_id');
} catch (error) {
  if (error instanceof TraeAPIError) {
    console.error('APIエラー:', error.code, error.message);
    console.error('詳細:', error.details);
  } else {
    console.error('予期しないエラー:', error);
  }
}

Python SDK

インストール

bash
pip install trae-sdk

基本的な使用方法

python
from trae_sdk import TraeClient

client = TraeClient(
    api_key=os.environ['TRAE_API_KEY'],
    base_url='https://api.trae.dev/v1'  # オプション
)

# プロジェクト一覧
projects = client.projects.list(page=1, limit=10)

# プロジェクト取得
project = client.projects.get('proj_1234567890')

# プロジェクト作成
new_project = client.projects.create({
    'name': '私の新しいプロジェクト',
    'template': 'react'
})

# プロジェクト更新
updated_project = client.projects.update('proj_1234567890', {
    'name': '更新されたプロジェクト名'
})

# プロジェクト削除
client.projects.delete('proj_1234567890')

Go SDK

インストール

bash
go get github.com/trae-dev/go-sdk

基本的な使用方法

go
package main

import (
    "context"
    "log"
    "os"
    
    "github.com/trae-dev/go-sdk/trae"
)

func main() {
    client := trae.NewClient(trae.Config{
        APIKey:  os.Getenv("TRAE_API_KEY"),
        BaseURL: "https://api.trae.dev/v1",
    })
    
    ctx := context.Background()
    
    // プロジェクト一覧
    projects, err := client.Projects.List(ctx, &trae.ProjectListOptions{
        Page:  1,
        Limit: 10,
    })
    if err != nil {
        log.Fatal(err)
    }
    
    // プロジェクト取得
    project, err := client.Projects.Get(ctx, "proj_1234567890")
    if err != nil {
        log.Fatal(err)
    }
    
    // プロジェクト作成
    newProject, err := client.Projects.Create(ctx, &trae.ProjectCreateRequest{
        Name:     "私の新しいプロジェクト",
        Template: "react",
    })
    if err != nil {
        log.Fatal(err)
    }
}

統合例

GitHub Actions統合

yaml
# .github/workflows/deploy.yml
name: Traeにデプロイ

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      
      - name: Traeにデプロイ
        uses: trae-dev/deploy-action@v1
        with:
          api-key: ${{ secrets.TRAE_API_KEY }}
          project-id: ${{ secrets.TRAE_PROJECT_ID }}
          environment: production

CI/CDパイプライン統合

javascript
// deploy.js
const { TraeClient } = require('@trae/sdk');

async function deploy() {
  const client = new TraeClient({
    apiKey: process.env.TRAE_API_KEY
  });
  
  try {
    // デプロイメント作成
    const deployment = await client.deployments.create(process.env.PROJECT_ID, {
      environment: process.env.ENVIRONMENT || 'production',
      branch: process.env.GITHUB_REF_NAME || 'main',
      environment_variables: {
        NODE_ENV: 'production',
        API_URL: process.env.API_URL
      }
    });
    
    console.log(`デプロイメント開始: ${deployment.id}`);
    
    // 完了をポーリング
    let status = 'pending';
    while (status === 'pending' || status === 'building') {
      await new Promise(resolve => setTimeout(resolve, 5000));
      
      const updated = await client.deployments.get(process.env.PROJECT_ID, deployment.id);
      status = updated.status;
      
      console.log(`デプロイメントステータス: ${status}`);
    }
    
    if (status === 'success') {
      console.log(`デプロイメント成功: ${deployment.url}`);
      process.exit(0);
    } else {
      console.error('デプロイメント失敗');
      process.exit(1);
    }
    
  } catch (error) {
    console.error('デプロイメントエラー:', error.message);
    process.exit(1);
  }
}

deploy();

Slackボット統合

javascript
// slack-bot.js
const { App } = require('@slack/bolt');
const { TraeClient } = require('@trae/sdk');

const app = new App({
  token: process.env.SLACK_BOT_TOKEN,
  signingSecret: process.env.SLACK_SIGNING_SECRET
});

const trae = new TraeClient({
  apiKey: process.env.TRAE_API_KEY
});

// デプロイコマンド
app.command('/deploy', async ({ command, ack, respond }) => {
  await ack();
  
  const [projectId, environment = 'production'] = command.text.split(' ');
  
  if (!projectId) {
    return respond('使用方法: /deploy <project-id> [environment]');
  }
  
  try {
    const deployment = await trae.deployments.create(projectId, {
      environment
    });
    
    respond(`🚀 プロジェクト ${projectId} の ${environment} へのデプロイメントを開始しました\nデプロイメントID: ${deployment.id}`);
    
  } catch (error) {
    respond(`❌ デプロイメント失敗: ${error.message}`);
  }
});

// プロジェクト一覧コマンド
app.command('/projects', async ({ ack, respond }) => {
  await ack();
  
  try {
    const projects = await trae.projects.list({ limit: 10 });
    
    const projectList = projects.data.map(p => 
      `• ${p.name} (${p.id}) - ${p.status}`
    ).join('\n');
    
    respond(`📁 あなたのプロジェクト:\n${projectList}`);
    
  } catch (error) {
    respond(`❌ プロジェクトの取得に失敗しました: ${error.message}`);
  }
});

app.start(process.env.PORT || 3000);

ベストプラクティス

認証

  1. APIキーの安全な保管: APIキーを安全に保管し、バージョン管理にコミットしない
  2. 環境変数の使用: 機密データは環境変数に保存
  3. 定期的なキーローテーション: セキュリティのためAPIキーを定期的にローテーション
  4. 権限のスコープ: 各APIキーに必要最小限の権限を使用

エラーハンドリング

  1. レート制限の処理: レート制限エラーに対して指数バックオフを実装
  2. リトライロジック: 一時的なエラーに対してリトライロジックを実装
  3. エラーログ: デバッグ用にリクエストIDと共にAPIエラーをログ
  4. グレースフルデグラデーション: アプリケーションでAPIの失敗を適切に処理

パフォーマンス

  1. ページネーションの使用: リストエンドポイントには常にページネーションを使用
  2. レスポンスのキャッシュ: 適切な場合はAPIレスポンスをキャッシュ
  3. バッチ操作: 利用可能な場合はバッチ操作を使用
  4. 使用量の監視: API使用量を監視し、それに応じて最適化

セキュリティ

  1. HTTPS のみ: APIリクエストには常にHTTPSを使用
  2. Webhook の検証: Webhook署名を常に検証
  3. 入力検証: APIに送信する前にすべての入力データを検証
  4. 監査ログ: 疑わしい活動についてAPIアクセスログを監視

関連記事

究極の AI 駆動 IDE 学習ガイド