{
  "service": "bookingmood",
  "displayName": "Bookingmood",
  "categories": [
    "Productivity"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "bookingmood_api_key",
      "description": "Bookingmood API key used as an Authorization Bearer token. Create or view it from your Bookingmood account API settings: https://www.bookingmood.com/en-US/api-reference.",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://www.bookingmood.com",
  "actions": [
    {
      "id": "bookingmood.list_bookings",
      "service": "bookingmood",
      "name": "list_bookings",
      "description": "List Bookingmood bookings with optional PostgREST select, pagination, ordering, and ID filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "select": {
            "type": "string",
            "minLength": 1,
            "description": "Columns to select from the bookings endpoint."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "description": "Maximum number of bookings to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of bookings to skip before returning results."
          },
          "order": {
            "type": "string",
            "minLength": 1,
            "description": "PostgREST order expression for bookings, such as created_at.desc or updated_at.asc."
          },
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "PostgREST filter for a specific booking ID."
          },
          "organization_id": {
            "type": "string",
            "minLength": 1,
            "description": "PostgREST filter for a specific organization ID."
          },
          "product_id": {
            "type": "string",
            "minLength": 1,
            "description": "PostgREST filter for bookings related to a product ID."
          }
        },
        "additionalProperties": false,
        "description": "Query parameters for listing Bookingmood bookings."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "bookings": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The unique booking identifier."
                },
                "organization_id": {
                  "type": "string",
                  "description": "The organization identifier that owns the booking."
                },
                "product_id": {
                  "type": "string",
                  "description": "The product identifier associated with the booking."
                },
                "status": {
                  "type": "string",
                  "description": "The booking status returned by Bookingmood."
                },
                "start_at": {
                  "type": "string",
                  "description": "The booking start timestamp returned by Bookingmood."
                },
                "end_at": {
                  "type": "string",
                  "description": "The booking end timestamp returned by Bookingmood."
                },
                "created_at": {
                  "type": "string",
                  "description": "The booking creation timestamp returned by Bookingmood."
                },
                "updated_at": {
                  "type": "string",
                  "description": "The booking update timestamp returned by Bookingmood."
                }
              },
              "additionalProperties": true,
              "description": "A Bookingmood booking object."
            },
            "description": "Booking records returned by Bookingmood."
          }
        },
        "additionalProperties": false,
        "required": [
          "bookings"
        ],
        "description": "Bookingmood bookings returned by the API."
      }
    },
    {
      "id": "bookingmood.list_products",
      "service": "bookingmood",
      "name": "list_products",
      "description": "List Bookingmood products with optional PostgREST select, pagination, ordering, and ID filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "select": {
            "type": "string",
            "minLength": 1,
            "description": "Columns to select from the products endpoint."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "description": "Maximum number of products to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Number of products to skip before returning results."
          },
          "order": {
            "type": "string",
            "minLength": 1,
            "description": "PostgREST order expression for products, such as created_at.desc or updated_at.asc."
          },
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "PostgREST filter for a specific product ID."
          },
          "organization_id": {
            "type": "string",
            "minLength": 1,
            "description": "PostgREST filter for a specific organization ID."
          }
        },
        "additionalProperties": false,
        "description": "Query parameters for listing Bookingmood products."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "products": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The unique product identifier."
                },
                "organization_id": {
                  "type": "string",
                  "description": "The organization identifier that owns the product."
                },
                "name": {
                  "description": "The localized product name returned by Bookingmood."
                },
                "timezone": {
                  "type": "string",
                  "description": "The product timezone."
                },
                "rent_period": {
                  "type": "string",
                  "description": "The product rent period."
                },
                "created_at": {
                  "type": "string",
                  "description": "The product creation timestamp returned by Bookingmood."
                },
                "updated_at": {
                  "type": "string",
                  "description": "The product update timestamp returned by Bookingmood."
                }
              },
              "additionalProperties": true,
              "description": "A Bookingmood product object."
            },
            "description": "Product records returned by Bookingmood."
          }
        },
        "additionalProperties": false,
        "required": [
          "products"
        ],
        "description": "Bookingmood products returned by the API."
      }
    },
    {
      "id": "bookingmood.query_availability",
      "service": "bookingmood",
      "name": "query_availability",
      "description": "Fetch Bookingmood availability for a product using the official availability endpoint.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "product_id": {
            "type": "string",
            "description": "Bookingmood product ID to query availability for.",
            "format": "uuid"
          },
          "start": {
            "type": "string",
            "description": "Start date for the availability window.",
            "format": "date"
          },
          "end": {
            "type": "string",
            "description": "End date for the availability window.",
            "format": "date"
          }
        },
        "additionalProperties": false,
        "required": [
          "product_id"
        ],
        "description": "Query parameters for fetching Bookingmood availability for one product."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "availability": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "date": {
                  "type": "string",
                  "description": "The date or interval key returned by Bookingmood."
                },
                "available": {
                  "type": "boolean",
                  "description": "Whether the product is available for the interval."
                }
              },
              "additionalProperties": true,
              "description": "A Bookingmood availability entry."
            },
            "description": "Availability entries returned by Bookingmood."
          },
          "raw": {
            "description": "Raw availability payload returned by Bookingmood."
          }
        },
        "additionalProperties": false,
        "required": [
          "availability",
          "raw"
        ],
        "description": "Bookingmood availability returned for the requested product."
      }
    }
  ]
}
