Miryo API
Documentation/発注書生成API
POST/api/purchase-orders/generate
発注書生成API
日本語フォーマットの発注書PDFを生成するAPIエンドポイントです。発注者情報、発注先情報、発注明細を受け取り、Noto Sans JPフォントを使用したプロフェッショナルなPDF発注書を生成します。フォントサイズ、テーブルカラム構成、税率などを柔軟にカスタマイズでき、コンテンツに応じた自動ページ分割に対応しています。

最小限のリクエスト例(必須パラメータのみ)

curl -X POST https://api.miryo.ai/api/purchase-orders/generate \
  -H "Content-Type: application/json" \
  -H "x-api-key: your_api_key_here" \
  -d '{
    "issuer": {
      "company": "miryo.AI株式会社"
    },
    "customer": {
      "company": "サンプルシステム株式会社"
    },
    "order": {
      "subject": "Webシステム開発業務委託",
      "items": [
        {
          "name": "開発作業",
          "quantity": 1,
          "unitPrice": 1000000,
          "amount": 1000000
        }
      ]
    }
  }' \
  --output purchase-order.pdf

完全なリクエスト例(全オプション指定)

curl -X POST https://api.miryo.ai/api/purchase-orders/generate \
  -H "Content-Type: application/json" \
  -H "x-api-key: your_api_key_here" \
  -d '{
    "issuer": {
      "company": "miryo.AI株式会社",
      "email": "info@miryo.ai",
      "phone": "050-1725-6435",
      "address": "東京都港区1-2-3 ミリョービル5F",
      "contactPerson": "購買部 佐藤次郎"
    },
    "customer": {
      "company": "サンプルシステム株式会社",
      "name": "山田太郎",
      "email": "yamada@sample-system.co.jp",
      "phone": "03-1234-5678",
      "department": "開発部",
      "position": "部長",
      "nameKana": "ヤマダ タロウ",
      "zipCode": "150-0001",
      "address": "東京都渋谷区神宮前1-1-1"
    },
    "order": {
      "orderNumber": "PO-2025-12-001",
      "orderDate": "2025-12-07T00:00:00.000Z",
      "deliveryDate": "2025-12-31T00:00:00.000Z",
      "subject": "Webシステム開発業務委託",
      "items": [
        {
          "name": "要件定義・基本設計",
          "majorCategory": "設計",
          "description": "業務フロー分析、機能要件定義書作成、画面設計",
          "quantity": 1,
          "unitPrice": 500000,
          "amount": 500000
        },
        {
          "name": "詳細設計・開発",
          "majorCategory": "開発",
          "quantity": 1,
          "unitPrice": 800000,
          "amount": 800000
        }
      ],
      "taxRate": 0.1,
      "paymentTerms": "検収完了後、翌月末払い",
      "notes": "■ 納品物:ソースコード一式、設計書\n■ 検収期間:納品後2週間",
      "showItemDescription": true,
      "fontSize": {
        "customerCompany": 20,
        "customerName": 16
      },
      "tableColumns": {
        "showNo": true,
        "showMajorCategory": true
      }
    }
  }' \
  --output purchase-order.pdf

リクエストパラメータ

パラメータ必須説明
issuer.companystring必須発注者の会社名
customer.companystring必須発注先の会社名
customer.namestring任意発注先の担当者名(null可、指定しない場合は「様」も表示されません)
customer.emailstring任意発注先のメールアドレス(email形式、任意)
customer.phonestring任意発注先の電話番号(任意)
order.subjectstring必須発注件名・タイトル
order.itemsarray必須発注明細の配列(最低1件必要)
order.items[].namestring必須明細項目名
order.items[].quantitynumber必須数量(正の数値)
order.items[].unitPricenumber必須単価(0以上の数値)
order.items[].amountnumber必須金額(0以上の数値)= quantity × unitPrice
issuer.emailstring任意発注者のメールアドレス(デフォルト: 表示なし)
issuer.phonestring任意発注者の電話番号(デフォルト: 表示なし)
issuer.addressstring任意発注者の住所(デフォルト: 表示なし)
issuer.contactPersonstring任意発注者の担当者名(デフォルト: 表示なし)
customer.departmentstring任意発注先の部署名(デフォルト: 表示なし)
customer.positionstring任意発注先の役職(デフォルト: 表示なし)
customer.nameKanastring任意発注先担当者名のカナ表記(デフォルト: 表示なし)
customer.zipCodestring任意発注先の郵便番号(デフォルト: 表示なし)
customer.addressstring任意発注先の住所(デフォルト: 表示なし)
order.orderNumberstring任意発注番号(未指定時は自動生成: PO-{timestamp}
order.orderDatestring任意発注日(ISO 8601形式、デフォルト: 現在日時)
order.deliveryDatestring任意納期(ISO 8601形式、デフォルト: 表示なし)
order.items[].descriptionstring任意明細項目の詳細説明(デフォルト: 表示なし)
order.items[].majorCategorystring任意大カテゴリ名(デフォルト: 表示なし、showMajorCategory: true で表示)
order.notesstring任意備考欄(改行は\nで指定、デフォルト: 表示なし)
order.paymentTermsstring任意支払条件(デフォルト: 表示なし)
order.showItemDescriptionboolean任意明細の詳細説明を表示するか(デフォルト: false)
order.taxRatenumber任意消費税率 0.0~1.0(デフォルト: 0.1 = 10%)
order.fontSizeobject任意フォントサイズカスタマイズ設定(デフォルト: システム標準値)
order.fontSize.customerCompanynumber任意発注先会社名のフォントサイズ(デフォルト: 20)
order.fontSize.customerNamenumber任意発注先担当者名のフォントサイズ(デフォルト: 16)
order.fontSize.customerOthernumber任意発注先その他情報のフォントサイズ(デフォルト: 10)
order.fontSize.issuerCompanynumber任意発注者会社名のフォントサイズ(デフォルト: 12)
order.fontSize.issuerNamenumber任意発注者担当者名のフォントサイズ(デフォルト: 10)
order.fontSize.issuerOthernumber任意発注者その他情報のフォントサイズ(デフォルト: 10)
order.fontSize.itemDetailnumber任意明細詳細のフォントサイズ(デフォルト: 9)
order.tableColumnsobject任意テーブル列の表示設定(デフォルト: 全てfalse)
order.tableColumns.showNoboolean任意No列を表示するか(デフォルト: false)
order.tableColumns.showMajorCategoryboolean任意大カテゴリ列を表示するか(デフォルト: false)

レスポンス

PDF Binary Data (application/pdf)

Response Headers:
Content-Type: application/pdf
Content-Disposition: attachment; filename="purchase-order-PO-2025-12-001.pdf"
X-Order-Number: PO-2025-12-001

注: 発注番号がリクエストで指定されていない場合、自動生成された番号がX-Order-Numberヘッダーに含まれます。

エラーレスポンス

400Bad Request - バリデーションエラー
{
  "error": "Invalid request data",
  "details": [
    {
      "code": "invalid_type",
      "expected": "string",
      "received": "undefined",
      "path": ["customer", "name"],
      "message": "Required"
    }
  ]
}
401Unauthorized - API Keyが未指定
{
  "error": "API key is required"
}

サンプルコード

JavaScript (Node.js)
const axios = require('axios');
const fs = require('fs');

async function generatePurchaseOrder() {
  const response = await axios.post(
    'https://api.miryo.ai/api/purchase-orders/generate',
    {
      issuer: { 
        company: 'miryo.AI株式会社',
        contactPerson: '購買部 佐藤次郎'
      },
      customer: {
        company: 'サンプルシステム株式会社',
        name: '山田太郎',
        email: 'yamada@sample-system.co.jp',
        phone: '03-1234-5678'
      },
      order: {
        subject: 'Webシステム開発業務委託',
        deliveryDate: '2025-12-31T00:00:00.000Z',
        items: [{
          name: '開発作業',
          quantity: 1,
          unitPrice: 1000000,
          amount: 1000000  // quantity × unitPrice
        }]
      }
    },
    {
      headers: { 'x-api-key': 'your_api_key_here' },
      responseType: 'arraybuffer'
    }
  );

  fs.writeFileSync('purchase-order.pdf', response.data);
  console.log('Order Number:', response.headers['x-order-number']);
}
Python
import requests

def generate_purchase_order():
    response = requests.post(
        'https://api.miryo.ai/api/purchase-orders/generate',
        headers={'x-api-key': 'your_api_key_here'},
        json={
            'issuer': {
                'company': 'miryo.AI株式会社',
                'contactPerson': '購買部 佐藤次郎'
            },
            'customer': {
                'company': 'サンプルシステム株式会社',
                'name': '山田太郎',
                'email': 'yamada@sample-system.co.jp',
                'phone': '03-1234-5678'
            },
            'order': {
                'subject': 'Webシステム開発業務委託',
                'deliveryDate': '2025-12-31T00:00:00.000Z',
                'items': [{
                    'name': '開発作業',
                    'quantity': 1,
                    'unitPrice': 1000000,
                    'amount': 1000000  # quantity × unitPrice
                }],
                'notes': '■ 納品物:ソースコード一式、設計書\n■ 検収期間:納品後2週間'
            }
        }
    )

    with open('purchase-order.pdf', 'wb') as f:
        f.write(response.content)

    order_number = response.headers.get('X-Order-Number')
    if order_number:
        print('Order Number:', order_number)

請求書APIとの違い

項目発注書API請求書API
エンドポイント/api/purchase-orders/generate/api/invoices/generate
メインオブジェクトorderinvoice
番号フィールドorderNumberinvoiceNumber
日付フィールドorderDate, deliveryDateinvoiceDate, paymentDueDate
振込先情報なしbankAccount
適格請求書対応なしqualifiedInvoice, registrationNumber
担当者名必須任意

注意事項

  • 【重要】amount = quantity × unitPrice で計算してください
  • 【重要】発注書では customer.name(発注先担当者名)が必須です
  • 【日付フォーマット】ISO 8601形式で指定(例: "2025-12-07T00:00:00.000Z")
  • 【税率】デフォルト0.1 (10%)。0.0~1.0の範囲で指定可能
  • 【自動改ページ】コンテンツに応じて自動的に改ページされます
  • 【データ保存】このAPIは発注書を保存しません。PDF生成のみを行います