{
  "service": "quickbase",
  "displayName": "Quickbase",
  "categories": [
    "Productivity",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "User Token",
      "placeholder": "QB_USER_TOKEN",
      "description": "Quickbase user token sent as QB-USER-TOKEN authorization. Create or copy a user token from Quickbase My preferences: https://help.quickbase.com/docs/create-and-use-user-tokens.",
      "extraFields": [
        {
          "key": "realmHostname",
          "label": "Realm Hostname",
          "inputType": "text",
          "required": true,
          "secret": false,
          "placeholder": "example.quickbase.com",
          "description": "Your Quickbase realm hostname used in the QB-Realm-Hostname header, such as example.quickbase.com or example.quickbase.eu."
        }
      ]
    }
  ],
  "homepageUrl": "https://www.quickbase.com",
  "actions": [
    {
      "id": "quickbase.delete_records",
      "service": "quickbase",
      "name": "delete_records",
      "description": "Delete records from a Quickbase table by record id.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "tableId": {
            "type": "string",
            "minLength": 1,
            "description": "Quickbase table identifier."
          },
          "recordIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1,
              "description": "Quickbase record identifier."
            },
            "description": "Quickbase record ids to delete.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for deleting Quickbase records."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "deletedRecordIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1,
              "description": "Quickbase record identifier."
            },
            "description": "Record ids deleted by Quickbase."
          },
          "numberDeleted": {
            "type": "integer",
            "description": "Number of records deleted by Quickbase."
          }
        },
        "additionalProperties": false,
        "description": "Quickbase delete records response."
      }
    },
    {
      "id": "quickbase.get_app",
      "service": "quickbase",
      "name": "get_app",
      "description": "Retrieve metadata for a Quickbase app.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "appId": {
            "type": "string",
            "minLength": 1,
            "description": "Quickbase app identifier."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for retrieving a Quickbase app."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "app": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Object returned by Quickbase."
          }
        },
        "additionalProperties": false,
        "description": "Quickbase app response."
      }
    },
    {
      "id": "quickbase.get_table_fields",
      "service": "quickbase",
      "name": "get_table_fields",
      "description": "List fields in a Quickbase table.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "tableId": {
            "type": "string",
            "minLength": 1,
            "description": "Quickbase table identifier."
          },
          "includeFieldPerms": {
            "type": "boolean",
            "description": "Whether to include field permission metadata."
          }
        },
        "additionalProperties": false,
        "required": [
          "tableId"
        ],
        "description": "Input parameters for listing fields in a Quickbase table."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "fields": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Object returned by Quickbase."
            },
            "description": "Fields returned by Quickbase."
          }
        },
        "additionalProperties": false,
        "description": "Quickbase field list response."
      }
    },
    {
      "id": "quickbase.list_app_tables",
      "service": "quickbase",
      "name": "list_app_tables",
      "description": "List tables in a Quickbase app.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "appId": {
            "type": "string",
            "minLength": 1,
            "description": "Quickbase app identifier."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing tables in a Quickbase app."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "tables": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Object returned by Quickbase."
            },
            "description": "Tables returned by Quickbase."
          }
        },
        "additionalProperties": false,
        "description": "Quickbase table list response."
      }
    },
    {
      "id": "quickbase.query_records",
      "service": "quickbase",
      "name": "query_records",
      "description": "Query records from a Quickbase table.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "tableId": {
            "type": "string",
            "minLength": 1,
            "description": "Quickbase table identifier to query."
          },
          "select": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1,
              "description": "Quickbase field identifier."
            },
            "description": "Field ids to return. Omit to use Quickbase defaults.",
            "minItems": 1
          },
          "where": {
            "type": "string",
            "minLength": 1,
            "description": "Quickbase query filter string."
          },
          "sortBy": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "fieldId": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "Quickbase field identifier."
                },
                "order": {
                  "type": "string",
                  "enum": [
                    "ASC",
                    "DESC"
                  ],
                  "description": "Sort order used by Quickbase."
                }
              },
              "additionalProperties": false,
              "description": "Quickbase query sort instruction."
            },
            "description": "Sort instructions for returned records.",
            "minItems": 1
          },
          "groupBy": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "fieldId": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "Quickbase field identifier."
                },
                "grouping": {
                  "type": "string",
                  "enum": [
                    "equal-values"
                  ],
                  "description": "Quickbase grouping mode."
                }
              },
              "additionalProperties": false,
              "description": "Quickbase query grouping instruction."
            },
            "description": "Grouping instructions for returned records.",
            "minItems": 1
          },
          "options": {
            "type": "object",
            "properties": {
              "skip": {
                "type": "integer",
                "minimum": 0,
                "description": "Number of records to skip."
              },
              "top": {
                "type": "integer",
                "minimum": 1,
                "description": "Maximum number of records to return."
              },
              "compareWithAppLocalTime": {
                "type": "boolean",
                "description": "Whether to compare date values in app local time."
              }
            },
            "additionalProperties": false,
            "description": "Quickbase query paging options."
          }
        },
        "additionalProperties": false,
        "required": [
          "tableId"
        ],
        "description": "Input parameters for querying Quickbase records."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {
                "type": "object",
                "properties": {
                  "value": {
                    "description": "Field value returned by Quickbase."
                  }
                },
                "additionalProperties": true,
                "description": "Quickbase field value wrapper returned by the API."
              },
              "description": "Mapping of Quickbase field ids to field value wrappers."
            },
            "description": "Records returned by Quickbase."
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Object returned by Quickbase."
            },
            "description": "Field metadata returned with the query."
          },
          "metadata": {
            "type": "object",
            "properties": {
              "totalRecords": {
                "type": "integer",
                "description": "Total record count reported by Quickbase."
              },
              "numRecords": {
                "type": "integer",
                "description": "Number of records in the current response."
              },
              "numFields": {
                "type": "integer",
                "description": "Number of fields in each returned record."
              },
              "skip": {
                "type": "integer",
                "description": "Number of records skipped."
              },
              "top": {
                "type": "integer",
                "description": "Maximum number of records requested."
              }
            },
            "additionalProperties": true,
            "description": "Query metadata returned by Quickbase."
          }
        },
        "additionalProperties": false,
        "description": "Quickbase record query response."
      }
    },
    {
      "id": "quickbase.upsert_records",
      "service": "quickbase",
      "name": "upsert_records",
      "description": "Insert or update records in a Quickbase table.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "tableId": {
            "type": "string",
            "minLength": 1,
            "description": "Quickbase table identifier."
          },
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {
                "type": "object",
                "properties": {
                  "value": {
                    "description": "Value to write for the field."
                  }
                },
                "additionalProperties": true,
                "description": "Quickbase field value wrapper keyed by field id."
              },
              "description": "Mapping of Quickbase field ids to field value wrappers."
            },
            "description": "Records to insert or update.",
            "minItems": 1
          },
          "fieldsToReturn": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1,
              "description": "Quickbase field identifier."
            },
            "description": "Field ids to include in the response.",
            "minItems": 1
          },
          "mergeFieldId": {
            "type": "integer",
            "minimum": 1,
            "description": "Quickbase field identifier."
          },
          "mergeFieldName": {
            "type": "string",
            "minLength": 1,
            "description": "Quickbase field name used as the merge key."
          }
        },
        "additionalProperties": false,
        "required": [
          "tableId",
          "data"
        ],
        "description": "Input parameters for inserting or updating Quickbase records."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {
                "type": "object",
                "properties": {
                  "value": {
                    "description": "Field value returned by Quickbase."
                  }
                },
                "additionalProperties": true,
                "description": "Quickbase field value wrapper returned by the API."
              },
              "description": "Mapping of Quickbase field ids to field value wrappers."
            },
            "description": "Returned records after insert or update."
          },
          "metadata": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Object returned by Quickbase."
          }
        },
        "additionalProperties": false,
        "required": [
          "data"
        ],
        "description": "Quickbase insert or update response."
      }
    }
  ]
}
