{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/sakura-internet/main/json-schema/sakura-internet-nosql-create-request-schema.json", "title": "NosqlCreateRequest", "x-generated": "2026-10-09", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/sakura-internet-nosql-openapi.yml#/components/schemas/NosqlCreateRequest", "type": "object", "properties": { "Appliance": { "type": "object", "allOf": [ { "$ref": "#/$defs/NosqlApplianceInput" }, { "type": "object", "properties": { "ServiceClass": { "$ref": "#/$defs/ServiceClass" }, "Plan": { "$ref": "#/$defs/Plan" }, "Disk": { "type": [ "object", "null" ], "description": "ディスク情報 \nディスクの情報は暗号化する場合は EncryptionAlgorithm と EncryptionKey を指定する必要があります。\n", "properties": { "EncryptionKey": { "type": [ "object", "null" ], "description": "暗号化キー情報", "properties": { "KMSKeyID": { "type": [ "string", "null" ], "description": "KMSキーID" } } }, "EncryptionAlgorithm": { "type": "string", "description": "暗号化アルゴリズム" } } }, "Settings": { "$ref": "#/$defs/NosqlSettings" }, "Remark": { "$ref": "#/$defs/NosqlRemark" }, "UserInterfaces": { "type": "array", "items": { "type": "object", "properties": { "Switch": { "type": "object", "description": "スイッチ", "properties": { "ID": { "type": "string", "description": "スイッチID \n**新規作成時・ノード追加時必須**\n" } }, "required": [ "ID" ] }, "UserIPAddress1": { "type": "string", "description": "ユーザIPアドレス1 \n**新規作成時・ノード追加時必須**\n", "format": "ipv4" }, "UserIPAddress2": { "type": "string", "description": "ユーザIPアドレス2 \n**新規作成時・ノード追加時必須** \n40GBプラン(ノード数1)の場合は設定不要です。\n", "format": "ipv4" }, "UserIPAddress3": { "type": "string", "description": "ユーザIPアドレス3 \n**新規作成時必須** \n40GBプラン(ノード数1)の場合は設定不要です。\n", "format": "ipv4" }, "UserSubnet": { "type": "object", "properties": { "DefaultRoute": { "type": "string", "description": "ゲートウェイのアドレス \n**新規作成時・ノード追加時必須**\n" }, "NetworkMaskLen": { "type": "integer", "description": "ネットマスク \n**新規作成時・ノード追加時必須**\n" } }, "required": [ "NetworkMaskLen", "DefaultRoute" ] } }, "required": [ "Switch", "UserIPAddress1", "UserSubnet" ] } } }, "required": [ "Class", "Name", "ServiceClass", "Plan", "Remark", "UserInterfaces", "Settings" ] } ] } }, "required": [ "Appliance" ], "$defs": { "NosqlApplianceInput": { "type": "object", "properties": { "Class": { "type": "string", "description": "クラス \n**新規作成時・ノード追加時必須**\n" }, "Name": { "type": "string", "description": "NoSQLの名前 \n**新規作成時・ノード追加時必須**\n", "minLength": 1, "maxLength": 64 }, "Description": { "type": "string", "description": "NoSQLの説明", "minLength": 0, "maxLength": 512 }, "Tags": { "$ref": "#/$defs/Tags" } } }, "NosqlRemark": { "type": "object", "properties": { "Nosql": { "type": "object", "properties": { "PrimaryNodes": { "type": "object", "description": "プライマリノード情報。\n**ノード追加時必須** \nノード追加を行う場合は、対象となる既存NoSQLのアプライアンス情報を設定してください。\n", "properties": { "Appliance": { "type": "object", "description": "既存のNoSQLのアプライアンス情報 \n**ノード追加時必須**\n", "properties": { "ID": { "type": "string", "description": "既存のNoSQLのアプライアンスID \n**ノード追加時必須**\n" }, "Zone": { "type": "object", "description": "既存のNoSQLのゾーン \n**ノード追加時必須**\n", "properties": { "Name": { "type": "string", "description": "既存のNoSQLのゾーン情報 \n**ノード追加時必須**\n" } }, "required": [ "Name" ] } }, "required": [ "ID", "Zone" ] } }, "required": [ "Appliance" ] }, "DatabaseEngine": { "type": [ "string", "null" ], "description": "データベースに使用するエンジン \n**新規作成時必須**\n", "enum": [ "Cassandra" ] }, "DatabaseVersion": { "type": [ "string", "null" ], "description": "データベースバージョン \n**新規作成時必須**\n", "anyOf": [ { "pattern": "^\\d+\\.\\d+\\.\\d+$" }, { "pattern": "^$" } ] }, "DefaultUser": { "type": [ "string", "null" ], "description": "デフォルトユーザ名 \n**新規作成時必須**\n", "maxLength": 20, "anyOf": [ { "pattern": "^[a-z][a-z0-9_]{3,19}$" }, { "pattern": "^$" } ] }, "DiskSize": { "type": [ "integer", "null" ], "description": "ディスクサイズ(MB) \n未指定時はプランから自動設定\n" }, "Memory": { "type": [ "integer", "null" ], "description": "メモリ(MB) \n未指定時はプランから自動設定\n" }, "Nodes": { "type": [ "integer", "null" ], "description": "ノード数 \n未指定時はプランから自動設定\n", "minimum": 1, "maximum": 3 }, "Port": { "type": [ "integer", "null" ], "description": "ポート \n**新規作成時必須**\n", "minimum": 1024, "maximum": 65535 }, "Storage": { "type": [ "string", "null" ], "description": "ストレージ \n**新規作成時必須**\n", "enum": [ "SSD" ] }, "Virtualcore": { "type": [ "integer", "null" ], "description": "仮想コア \n未指定時はプランから自動設定 \n" }, "Zone": { "type": "string", "description": "ゾーン \n**新規作成時・ノード追加時必須**\n" } }, "required": [ "Zone" ] }, "Servers": { "type": "array", "items": { "type": "object", "properties": { "UserIPAddress": { "type": "string", "format": "ipv4", "description": "ユーザ側スイッチに接続するIPアドレス \n**新規作成時・ノード追加時必須**\n\n※ノード数分指定する\n" } }, "required": [ "UserIPAddress" ] } }, "Network": { "type": "object", "description": "ネットワーク情報", "properties": { "DefaultRoute": { "type": "string", "description": "ゲートウェイのアドレス \n**新規作成時・ノード追加時必須**\n" }, "NetworkMaskLen": { "type": "integer", "description": "ネットマスク \n**新規作成時・ノード追加時必須**\n" } }, "required": [ "DefaultRoute", "NetworkMaskLen" ] } }, "required": [ "Nosql", "Servers", "Network" ] }, "NosqlSettings": { "type": "object", "properties": { "Password": { "$ref": "#/$defs/Password" }, "ReserveIPAddress": { "description": "予備IPアドレス \n**新規作成時・ノード追加時必須** \n※デッドノード発生時、ノード切替を行う際に使用する予備のIPアドレス \nただし、40GBプランの場合は必須ではありません。\n", "type": "string", "format": "ipv4" }, "Backup": { "type": [ "object", "null" ], "description": "バックアップ情報", "properties": { "Connect": { "type": "string", "description": "バックアップ先(NFS URL形式)", "pattern": "^(nfs://[0-9\\.]+/[A-Za-z0-9_\\-\\/]+)$" }, "DayOfWeek": { "type": [ "array", "null" ], "description": "バックアップスケジュール", "items": { "type": "string", "enum": [ "sun", "mon", "tue", "wed", "thu", "fri", "sat" ] } }, "Time": { "type": [ "string", "null" ], "description": "バックアップする時間", "pattern": "^(([0-1][0-9]|2[0-3]):(00|15|30|45))?$" }, "Rotate": { "type": "integer", "description": "バックアップ数(1から8まで)", "minimum": 1, "maximum": 8 } }, "required": [ "Connect", "Rotate" ] }, "SourceNetwork": { "type": "array", "description": "送信元ネットワークアドレス", "uniqueItems": true, "items": { "type": "string", "pattern": "^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}(?:/(?:[0-9]|[1-2][0-9]|3[0-2]))?$" } }, "Repair": { "type": [ "object", "null" ], "description": "定期リペア設定 \n※40GBプランはノード数が1のため、リペア設定を行うことはできません。 \n", "properties": { "Incremental": { "type": "object", "description": "増分リペア設定", "properties": { "DaysOfWeek": { "type": "array", "description": "実行曜日", "items": { "type": "string", "enum": [ "sun", "mon", "tue", "wed", "thu", "fri", "sat" ] } }, "Time": { "type": "string", "description": "実行時間", "pattern": "^(([0-1][0-9]|2[0-3]):(00|15|30|45))?$" } }, "required": [ "DaysOfWeek", "Time" ] }, "Full": { "type": "object", "description": "完全リペア設定", "properties": { "Interval": { "type": "integer", "description": "7日ごとの実行間隔(日数)", "enum": [ 7, 14, 21, 28 ] }, "DayOfWeek": { "type": "string", "description": "実行曜日", "enum": [ "sun", "mon", "tue", "wed", "thu", "fri", "sat" ] }, "Time": { "type": "string", "description": "実行時間", "pattern": "^(([0-1][0-9]|2[0-3]):(00|15|30|45))?$" } }, "required": [ "Interval", "DayOfWeek", "Time" ] } } } } }, "Password": { "type": "string", "description": "パスワード \n**新規作成時必須**\n", "pattern": "^[a-zA-Z0-9-._]+$", "minLength": 12, "maxLength": 30 }, "Plan": { "type": "object", "description": "プラン \n**新規作成時・ノード追加時必須**\n", "properties": { "ID": { "type": "integer", "description": "プランID \n**新規作成時・ノード追加時必須**\n\n利用可能なプランID:\n| プラン名 | プランID | \n|--------------|------------|\n| 40GBプラン | 51142 |\n| 100GBプラン | 51143 |\n| 100GBプラン/ノード | 51145 |\n| 250GBプラン | 51144 |\n| 250GBプラン/ノード | 51146 |\n" } }, "required": [ "ID" ] }, "ServiceClass": { "type": "string", "description": "サービスクラス \n**新規作成時・ノード追加時必須**\n\n| プラン名 | サービスクラスパス | \n|--------------|----------------------------|\n| 40GBプラン | cloud/nosql/plan/1 |\n| 100GBプラン | cloud/nosql/plan/2 |\n| 100GBプラン/ノード | cloud/nosql/plan/2/node |\n| 250GBプラン | cloud/nosql/plan/3 |\n| 250GBプラン/ノード | cloud/nosql/plan/3/node |\n" }, "Tags": { "type": [ "array", "null" ], "description": "タグ", "maxItems": 10, "items": { "type": "string", "maxLength": 32, "pattern": "^[^\\s\\u3000]+$" } } } }