Ping エンドポイント

Actions API のヘルスモニタリングと接続テスト用。

概要

Ping エンドポイントは、mindzieAPI との接続確認および認証検証を簡単に行う方法を提供します。これらのエンドポイントはシステムの健康状態の監視や接続問題のトラブルシューティングに不可欠です。

認証不要の Ping

GET /api/{tenantId}/{projectId}/action/unauthorized-ping

認証を必要としない基本的な接続テストです。APIへのアクセス可能性を確認するために利用します。

リクエスト

GET https://your-mindzie-instance.com/api/{tenantId}/{projectId}/action/unauthorized-ping

パスパラメータ

パラメータ 必須 説明
tenantId GUID はい テナント識別子
projectId GUID はい プロジェクト識別子

レスポンス

HTTP/1.1 200 OK
Content-Type: text/plain

Ping Successful

利用ケース

  • 基本的な接続テスト
  • ロードバランサのヘルスチェック
  • ネットワークのトラブルシューティング
  • サービス稼働状況の監視

認証済み Ping

GET /api/{tenantId}/{projectId}/action/ping

認証情報を検証し、指定されたテナント及びプロジェクトへのアクセス権を確認するための認証付き接続テスト。

リクエスト

GET https://your-mindzie-instance.com/api/{tenantId}/{projectId}/action/ping
Authorization: Bearer {your-access-token}

パスパラメータ

パラメータ 必須 説明
tenantId GUID はい テナント識別子
projectId GUID はい プロジェクト識別子

レスポンス

成功 (200 OK):

HTTP/1.1 200 OK
Content-Type: text/plain

Ping Successful (tenant id: 12345678-1234-1234-1234-123456789012)

認証エラー (401):

HTTP/1.1 401 Unauthorized
Content-Type: text/plain

{認証失敗を説明するエラーメッセージ}

利用ケース

  • 認証情報の検証
  • 権限の確認
  • トークンの有効性テスト
  • テナント/プロジェクトへのアクセス検証

実装例

cURL

# 認証不要の ping
curl -X GET "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/87654321-4321-4321-4321-210987654321/action/unauthorized-ping"

# 認証済み ping
curl -X GET "https://your-mindzie-instance.com/api/12345678-1234-1234-1234-123456789012/87654321-4321-4321-4321-210987654321/action/ping" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

JavaScript/Node.js

const TENANT_ID = '12345678-1234-1234-1234-123456789012';
const PROJECT_ID = '87654321-4321-4321-4321-210987654321';
const BASE_URL = 'https://your-mindzie-instance.com';

// 認証不要の ping
const unauthorizedPing = async () => {
  const response = await fetch(
    `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/action/unauthorized-ping`
  );
  const text = await response.text();
  console.log('Unauthorized ping:', text);
  return response.ok;
};

// 認証済み ping
const authenticatedPing = async (token) => {
  const response = await fetch(
    `${BASE_URL}/api/${TENANT_ID}/${PROJECT_ID}/action/ping`,
    {
      headers: {
        'Authorization': `Bearer ${token}`
      }
    }
  );

  if (response.ok) {
    const text = await response.text();
    console.log('Authenticated ping:', text);
    return true;
  } else {
    console.error('Authentication failed:', response.status);
    return false;
  }
};

Python

import requests

TENANT_ID = '12345678-1234-1234-1234-123456789012'
PROJECT_ID = '87654321-4321-4321-4321-210987654321'
BASE_URL = 'https://your-mindzie-instance.com'

def unauthorized_ping():
    """認証不要の基本的な接続テスト。"""
    url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/action/unauthorized-ping'
    response = requests.get(url)
    print(f'Unauthorized ping: {response.text}')
    return response.ok

def authenticated_ping(token):
    """認証付きの接続テスト。"""
    url = f'{BASE_URL}/api/{TENANT_ID}/{PROJECT_ID}/action/ping'
    headers = {
        'Authorization': f'Bearer {token}'
    }

    response = requests.get(url, headers=headers)

    if response.ok:
        print(f'Authenticated ping: {response.text}')
        return True
    else:
        print(f'Authentication failed: {response.status_code}')
        return False

C#

using System.Net.Http;
using System.Threading.Tasks;

public class ActionApiClient
{
    private readonly HttpClient _httpClient;
    private readonly string _baseUrl;
    private readonly Guid _tenantId;
    private readonly Guid _projectId;

    public ActionApiClient(string baseUrl, Guid tenantId, Guid projectId, string accessToken)
    {
        _baseUrl = baseUrl;
        _tenantId = tenantId;
        _projectId = projectId;
        _httpClient = new HttpClient();
        _httpClient.DefaultRequestHeaders.Authorization =
            new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
    }

    public async Task<bool> UnauthorizedPingAsync()
    {
        var url = $"{_baseUrl}/api/{_tenantId}/{_projectId}/action/unauthorized-ping";
        var response = await _httpClient.GetAsync(url);
        var content = await response.Content.ReadAsStringAsync();
        Console.WriteLine($"Unauthorized ping: {content}");
        return response.IsSuccessStatusCode;
    }

    public async Task<bool> AuthenticatedPingAsync()
    {
        var url = $"{_baseUrl}/api/{_tenantId}/{_projectId}/action/ping";
        var response = await _httpClient.GetAsync(url);
        var content = await response.Content.ReadAsStringAsync();

        if (response.IsSuccessStatusCode)
        {
            Console.WriteLine($"Authenticated ping: {content}");
            return true;
        }
        else
        {
            Console.WriteLine($"Authentication failed: {response.StatusCode}");
            return false;
        }
    }
}

ベストプラクティス

  • ヘルスチェック: 自動ヘルスモニタリングシステムには認証不要の ping を使用する
  • 事前検証: アクション実行前に認証済み ping を呼び出し、認証情報を検証する
  • エラーハンドリング: ネットワークタイムアウトや認証失敗は必ず適切に処理する
  • 監視: ping 失敗を基に自動アラートを設定し、サービス障害を早期検知する