{
  "service": "loomio",
  "displayName": "Loomio",
  "categories": [
    "Productivity",
    "Communication"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "LOOMIO_API_KEY",
      "description": "Loomio per-user API key sent as the api_key query parameter. After signing in, open https://www.loomio.com/help/api2 to view your key.",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://www.loomio.com",
  "actions": [
    {
      "id": "loomio.get_poll",
      "service": "loomio",
      "name": "get_poll",
      "description": "Get one Loomio poll by numeric ID or poll key.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "pollIdOrKey": {
            "type": "string",
            "minLength": 1,
            "description": "Numeric poll ID or poll key to retrieve."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for getting one Loomio poll."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "poll": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer",
                "minimum": 1,
                "description": "Unique poll identifier returned by Loomio."
              },
              "key": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Poll key returned by Loomio when available."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "title": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Poll title returned by Loomio when available."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "pollType": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Poll type returned by Loomio when available."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "groupId": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "Group identifier attached to the poll when available."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "authorId": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "Author identifier attached to the poll when available."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "discussionId": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "Discussion identifier attached to the poll when available."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "createdAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Poll creation timestamp returned by Loomio when available."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "closingAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Poll closing timestamp returned by Loomio when available."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "closedAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Poll closed timestamp returned by Loomio when available."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "currentOutcome": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": true,
                    "description": "Raw Loomio API object."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Raw Loomio API object."
              },
              "status": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Poll status returned by Loomio when available."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "details": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "Poll details body returned by Loomio when available."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "options": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "integer",
                      "minimum": 1,
                      "description": "Unique option identifier returned by Loomio."
                    },
                    "name": {
                      "anyOf": [
                        {
                          "type": "string",
                          "description": "Display name of the poll option when Loomio returns it."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "priority": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "description": "Display order priority of the poll option when Loomio returns it."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "icon": {
                      "anyOf": [
                        {
                          "type": "string",
                          "description": "Icon identifier returned by Loomio for the poll option."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "color": {
                      "anyOf": [
                        {
                          "type": "string",
                          "description": "Color value returned by Loomio for the poll option."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "prompt": {
                      "anyOf": [
                        {
                          "type": "string",
                          "description": "Prompt text returned by Loomio for the poll option."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "meaning": {
                      "anyOf": [
                        {
                          "type": "string",
                          "description": "Meaning text returned by Loomio for the poll option."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "raw": {
                      "type": "object",
                      "properties": {},
                      "additionalProperties": true,
                      "description": "Raw Loomio API object."
                    }
                  },
                  "additionalProperties": true,
                  "required": [
                    "id"
                  ],
                  "description": "One Loomio poll option returned by the poll detail endpoint."
                },
                "description": "Poll options returned by Loomio."
              }
            },
            "additionalProperties": true,
            "required": [
              "id"
            ],
            "description": "Detailed Loomio poll payload returned by the show endpoint."
          }
        },
        "additionalProperties": false,
        "description": "Single Loomio poll response."
      }
    },
    {
      "id": "loomio.list_polls",
      "service": "loomio",
      "name": "list_polls",
      "description": "List Loomio polls in one group with optional status filtering and offset pagination.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "groupId": {
            "type": "integer",
            "minimum": 1,
            "description": "Group identifier to list polls from."
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "closed",
              "all"
            ],
            "description": "Poll status filter accepted by Loomio."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "description": "Maximum number of polls to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Zero-based offset for poll pagination."
          }
        },
        "additionalProperties": false,
        "required": [
          "groupId"
        ],
        "description": "Input parameters for listing Loomio polls in one group."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "polls": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "Unique poll identifier returned by Loomio."
                },
                "key": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "Poll key returned by Loomio when available."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "title": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "Poll title returned by Loomio when available."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "pollType": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "Poll type returned by Loomio when available."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "groupId": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "Group identifier attached to the poll when available."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "authorId": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "Author identifier attached to the poll when available."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "discussionId": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "Discussion identifier attached to the poll when available."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "createdAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "Poll creation timestamp returned by Loomio when available."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "closingAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "Poll closing timestamp returned by Loomio when available."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "closedAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "Poll closed timestamp returned by Loomio when available."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "currentOutcome": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {},
                      "additionalProperties": true,
                      "description": "Raw Loomio API object."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "Raw Loomio API object."
                }
              },
              "additionalProperties": true,
              "required": [
                "id"
              ],
              "description": "Summary of one Loomio poll returned by the list endpoint."
            },
            "description": "Polls returned by Loomio."
          },
          "total": {
            "type": "integer",
            "minimum": 0,
            "description": "Total number of polls matching the filter."
          },
          "rawMeta": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Raw Loomio API object."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "description": "Loomio poll list response."
      }
    }
  ]
}
