id: twilio
name: Twilio
version: 1.0.0
description: "Twilio (REST API) — SOC out-of-band alerting: send SMS messages, place voice calls, and read message status/history. HTTP Basic authentication; stdlib-only, no extra Python dependencies."
changelog: "1.0.0 — Initial release: send SMS, make call, get/list messages."
category: notification

# Per-instance configuration. HTTP Basic auth with the Account SID + Auth Token.
config_schema:
  properties:
    account_sid:
      type: string
      description: "Twilio Account SID"
    auth_token:
      type: string
      description: "Twilio Auth Token"
      x-soar-sensitive: true
    from_number:
      type: string
      description: "Default sender number (E.164, e.g. +15551234567)"
  required:
    - account_sid
    - auth_token

commands:
  - id: send_sms
    name: twilio-send-sms
    description: "Send an SMS message."
    inputs_schema:
      properties:
        to: { type: string, description: "Recipient number (E.164)" }
        body: { type: string, description: "Message text" }
        from_number: { type: string, description: "Sender number (overrides the configured default)" }
      required: [to, body]
    outputs_schema: { properties: {} }
  - id: make_call
    name: twilio-make-call
    description: "Place a voice call that plays TwiML."
    inputs_schema:
      properties:
        to: { type: string, description: "Recipient number (E.164)" }
        from_number: { type: string, description: "Caller number (overrides the configured default)" }
        twiml: { type: string, description: "TwiML to execute (provide this or url)" }
        url: { type: string, description: "URL returning TwiML (provide this or twiml)" }
      required: [to]
    outputs_schema: { properties: {} }
  - id: get_message
    name: twilio-get-message
    description: "Get a message's status and details by SID."
    risk: read
    inputs_schema:
      properties:
        message_sid: { type: string, description: "Message SID" }
      required: [message_sid]
    outputs_schema: { properties: {} }
  - id: list_messages
    name: twilio-list-messages
    description: "List recent messages."
    risk: read
    inputs_schema:
      properties:
        page_size: { type: number, description: "Max messages (default 20)" }
      required: []
    outputs_schema: { properties: {} }

  - id: test_connection
    name: twilio-test-connection
    description: "Verify connectivity and credentials (used by the Test button)."
    risk: read
    inputs_schema:
      properties: {}
      required: []
    outputs_schema: { properties: {} }
