{
  "service": "quo",
  "displayName": "Quo (OpenPhone)",
  "categories": [
    "Communication"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "QUO_API_KEY",
      "description": "Quo API key sent with the Authorization header. Generate it from the API tab in Quo workspace settings: https://www.quo.com/docs/mdx/api-reference/authentication.md."
    }
  ],
  "homepageUrl": "https://www.quo.com",
  "actions": [
    {
      "id": "quo.create_contact",
      "service": "quo",
      "name": "create_contact",
      "description": "Create a contact in the connected Quo workspace.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "defaultFields": {
            "type": "object",
            "properties": {
              "firstName": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "description": "Contact first name."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "lastName": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "description": "Contact last name."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "company": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "description": "Contact company name."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "role": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "description": "Contact role or title."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "emails": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Display name for this contact field."
                    },
                    "value": {
                      "anyOf": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "description": "Value for this contact field."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "id": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Existing field identifier used when updating a contact field."
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "name",
                    "value"
                  ],
                  "description": "One named contact field value."
                },
                "description": "Email fields to store on the contact."
              },
              "phoneNumbers": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Display name for this contact field."
                    },
                    "value": {
                      "anyOf": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "description": "Value for this contact field."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "id": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Existing field identifier used when updating a contact field."
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "name",
                    "value"
                  ],
                  "description": "One named contact field value."
                },
                "description": "Phone number fields to store on the contact."
              }
            },
            "additionalProperties": false,
            "required": [
              "firstName"
            ],
            "description": "Default Quo contact fields."
          },
          "customFields": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Identifying key for the contact custom field."
                },
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Existing custom field identifier used when updating a contact."
                },
                "value": {
                  "anyOf": [
                    {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "minLength": 1,
                        "description": "Custom field item."
                      },
                      "description": "String values for a multi-value custom field."
                    },
                    {
                      "type": "string",
                      "minLength": 1,
                      "description": "String or datetime value for a custom field."
                    },
                    {
                      "type": "number",
                      "description": "Numeric value for a custom field."
                    },
                    {
                      "type": "boolean",
                      "description": "Boolean value for a custom field."
                    },
                    {
                      "type": "null",
                      "description": "Clear the custom field value."
                    }
                  ],
                  "description": "Value for a Quo contact custom field."
                }
              },
              "additionalProperties": false,
              "required": [
                "key",
                "value"
              ],
              "description": "One Quo contact custom field value."
            },
            "description": "Custom fields to store on the contact."
          },
          "createdByUserId": {
            "type": "string",
            "minLength": 1,
            "description": "Quo user ID for the user creating the contact."
          },
          "source": {
            "type": "string",
            "minLength": 1,
            "description": "Contact source identifier, such as public-api or a custom source."
          },
          "sourceUrl": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "description": "URL for the contact in the source system.",
            "format": "uri"
          },
          "externalId": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 75,
                "description": "Unique identifier for this contact in an external system."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "defaultFields"
        ],
        "description": "Input parameters for creating a Quo contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Quo record returned by the API."
          }
        },
        "additionalProperties": false,
        "description": "Quo single-record response payload."
      }
    },
    {
      "id": "quo.delete_contact",
      "service": "quo",
      "name": "delete_contact",
      "description": "Delete a contact from the connected Quo workspace.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "Quo contact ID."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for reading or deleting a Quo contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Raw Quo record returned by the API."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "description": "Quo delete contact response payload."
      }
    },
    {
      "id": "quo.get_contact",
      "service": "quo",
      "name": "get_contact",
      "description": "Get details for a Quo contact by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "Quo contact ID."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for reading or deleting a Quo contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Quo record returned by the API."
          }
        },
        "additionalProperties": false,
        "description": "Quo single-record response payload."
      }
    },
    {
      "id": "quo.get_message",
      "service": "quo",
      "name": "get_message",
      "description": "Get details for a Quo message by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "Quo message ID."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for reading a Quo message."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Quo record returned by the API."
          }
        },
        "additionalProperties": false,
        "description": "Quo single-record response payload."
      }
    },
    {
      "id": "quo.get_phone_number",
      "service": "quo",
      "name": "get_phone_number",
      "description": "Get details for a Quo phone number by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "phoneNumberId": {
            "type": "string",
            "minLength": 1,
            "description": "Quo phone number ID."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for reading a Quo phone number."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Quo record returned by the API."
          }
        },
        "additionalProperties": false,
        "description": "Quo single-record response payload."
      }
    },
    {
      "id": "quo.get_user",
      "service": "quo",
      "name": "get_user",
      "description": "Get details for a Quo user by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "minLength": 1,
            "description": "Quo user ID."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for reading a Quo user."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Quo record returned by the API."
          }
        },
        "additionalProperties": false,
        "description": "Quo single-record response payload."
      }
    },
    {
      "id": "quo.list_contacts",
      "service": "quo",
      "name": "list_contacts",
      "description": "List contacts in the connected Quo workspace with optional filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "externalIds": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 75,
              "description": "External contact ID."
            },
            "description": "External contact IDs used to filter contacts.",
            "minItems": 1
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 75,
              "description": "Contact source name."
            },
            "description": "Contact source names used to filter contacts.",
            "minItems": 1
          },
          "maxResults": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Maximum number of contacts to return per page."
          },
          "pageToken": {
            "type": "string",
            "minLength": 1,
            "description": "Opaque page token returned by Quo."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Quo contacts."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Raw Quo record returned by the API."
            },
            "description": "Records returned by Quo."
          },
          "nextPageToken": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "description": "Token for the next page when available."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "data"
        ],
        "description": "Quo list response payload."
      }
    },
    {
      "id": "quo.list_messages",
      "service": "quo",
      "name": "list_messages",
      "description": "List messages exchanged between a Quo number and conversation participants.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "phoneNumberId": {
            "type": "string",
            "minLength": 1,
            "description": "Quo phone number ID used to send or receive the messages."
          },
          "participants": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 3,
              "maxLength": 16,
              "description": "Participant phone number in E.164 format.",
              "pattern": "^\\+[1-9]\\d{1,14}$"
            },
            "description": "External participant phone numbers in E.164 format.",
            "minItems": 1
          },
          "userId": {
            "type": "string",
            "minLength": 1,
            "description": "Quo user ID that sent the message."
          },
          "createdAfter": {
            "type": "string",
            "description": "Only include messages created after this ISO 8601 timestamp.",
            "format": "date-time"
          },
          "createdBefore": {
            "type": "string",
            "description": "Only include messages created before this ISO 8601 timestamp.",
            "format": "date-time"
          },
          "maxResults": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum number of messages to return per page."
          },
          "pageToken": {
            "type": "string",
            "minLength": 1,
            "description": "Opaque page token returned by Quo."
          }
        },
        "additionalProperties": false,
        "required": [
          "phoneNumberId",
          "participants"
        ],
        "description": "Input parameters for listing Quo messages in a conversation."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Raw Quo record returned by the API."
            },
            "description": "Records returned by Quo."
          },
          "nextPageToken": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "description": "Token for the next page when available."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "data"
        ],
        "description": "Quo list response payload."
      }
    },
    {
      "id": "quo.list_phone_numbers",
      "service": "quo",
      "name": "list_phone_numbers",
      "description": "List phone numbers in the connected Quo workspace.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "minLength": 1,
            "description": "Only return phone numbers associated with this Quo user ID."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Quo phone numbers."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Raw Quo record returned by the API."
            },
            "description": "Records returned by Quo."
          },
          "nextPageToken": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "description": "Token for the next page when available."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "data"
        ],
        "description": "Quo list response payload."
      }
    },
    {
      "id": "quo.list_users",
      "service": "quo",
      "name": "list_users",
      "description": "List users in the connected Quo workspace.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "maxResults": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Maximum number of users to return per page."
          },
          "pageToken": {
            "type": "string",
            "minLength": 1,
            "description": "Opaque page token returned by Quo."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Quo users."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Raw Quo record returned by the API."
            },
            "description": "Records returned by Quo."
          },
          "nextPageToken": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "description": "Token for the next page when available."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "data"
        ],
        "description": "Quo list response payload."
      }
    },
    {
      "id": "quo.send_text_message",
      "service": "quo",
      "name": "send_text_message",
      "description": "Send a text message from a Quo phone number.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1600,
            "description": "Text content to send."
          },
          "from": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "description": "Quo phone number ID."
              },
              {
                "type": "string",
                "minLength": 3,
                "maxLength": 16,
                "description": "Sender phone number in E.164 format.",
                "pattern": "^\\+[1-9]\\d{1,14}$"
              }
            ],
            "description": "Quo sender phone number ID or E.164 phone number."
          },
          "to": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 3,
              "maxLength": 16,
              "description": "Recipient phone number in E.164 format.",
              "pattern": "^\\+[1-9]\\d{1,14}$"
            },
            "description": "Recipient phone numbers.",
            "minItems": 1,
            "maxItems": 1
          },
          "userId": {
            "type": "string",
            "minLength": 1,
            "description": "Quo user ID to send the message as."
          },
          "setInboxStatus": {
            "type": "string",
            "enum": [
              "done"
            ],
            "description": "Conversation inbox status to set after sending."
          }
        },
        "additionalProperties": false,
        "required": [
          "content",
          "from",
          "to"
        ],
        "description": "Input parameters for sending a Quo text message."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Quo record returned by the API."
          }
        },
        "additionalProperties": false,
        "description": "Quo single-record response payload."
      }
    },
    {
      "id": "quo.update_contact",
      "service": "quo",
      "name": "update_contact",
      "description": "Update a contact in the connected Quo workspace.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "Quo contact ID to update."
          },
          "defaultFields": {
            "type": "object",
            "properties": {
              "firstName": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "description": "Contact first name."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "lastName": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "description": "Contact last name."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "company": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "description": "Contact company name."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "role": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "description": "Contact role or title."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "emails": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Display name for this contact field."
                    },
                    "value": {
                      "anyOf": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "description": "Value for this contact field."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "id": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Existing field identifier used when updating a contact field."
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "name",
                    "value"
                  ],
                  "description": "One named contact field value."
                },
                "description": "Email fields to store on the contact."
              },
              "phoneNumbers": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Display name for this contact field."
                    },
                    "value": {
                      "anyOf": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "description": "Value for this contact field."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "id": {
                      "type": "string",
                      "minLength": 1,
                      "description": "Existing field identifier used when updating a contact field."
                    }
                  },
                  "additionalProperties": false,
                  "required": [
                    "name",
                    "value"
                  ],
                  "description": "One named contact field value."
                },
                "description": "Phone number fields to store on the contact."
              }
            },
            "additionalProperties": false,
            "required": [
              "firstName"
            ],
            "description": "Default Quo contact fields."
          },
          "customFields": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "key": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Identifying key for the contact custom field."
                },
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Existing custom field identifier used when updating a contact."
                },
                "value": {
                  "anyOf": [
                    {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "minLength": 1,
                        "description": "Custom field item."
                      },
                      "description": "String values for a multi-value custom field."
                    },
                    {
                      "type": "string",
                      "minLength": 1,
                      "description": "String or datetime value for a custom field."
                    },
                    {
                      "type": "number",
                      "description": "Numeric value for a custom field."
                    },
                    {
                      "type": "boolean",
                      "description": "Boolean value for a custom field."
                    },
                    {
                      "type": "null",
                      "description": "Clear the custom field value."
                    }
                  ],
                  "description": "Value for a Quo contact custom field."
                }
              },
              "additionalProperties": false,
              "required": [
                "key",
                "value"
              ],
              "description": "One Quo contact custom field value."
            },
            "description": "Custom fields to store on the contact."
          },
          "createdByUserId": {
            "type": "string",
            "minLength": 1,
            "description": "Quo user ID for the user creating the contact."
          },
          "source": {
            "type": "string",
            "minLength": 1,
            "description": "Contact source identifier, such as public-api or a custom source."
          },
          "sourceUrl": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "description": "URL for the contact in the source system.",
            "format": "uri"
          },
          "externalId": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 75,
                "description": "Unique identifier for this contact in an external system."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "Input parameters for updating a Quo contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Quo record returned by the API."
          }
        },
        "additionalProperties": false,
        "description": "Quo single-record response payload."
      }
    }
  ]
}
