{
  "service": "uploadcare",
  "displayName": "Uploadcare",
  "categories": [
    "Storage",
    "Design & Media"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "Secret API Key",
      "placeholder": "uploadcare_secret_key",
      "description": "Uploadcare Secret API Key used to sign REST API requests. Create or view API keys in the Uploadcare dashboard: https://app.uploadcare.com/projects/-/api-keys/.",
      "extraFields": [
        {
          "key": "publicKey",
          "label": "Public API Key",
          "inputType": "text",
          "required": true,
          "secret": false,
          "placeholder": "uploadcare_public_key",
          "description": "Uploadcare Public API Key included in the signed REST API Authorization header. Find it with the Secret API Key in the Uploadcare dashboard: https://app.uploadcare.com/projects/-/api-keys/."
        }
      ]
    }
  ],
  "homepageUrl": "https://uploadcare.com",
  "actions": [
    {
      "id": "uploadcare.delete_file",
      "service": "uploadcare",
      "name": "delete_file",
      "description": "Remove an Uploadcare file from storage by UUID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "description": "The Uploadcare file UUID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "required": [
          "uuid"
        ],
        "description": "Input for selecting an Uploadcare file."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "file": {
            "type": "object",
            "properties": {
              "uuid": {
                "type": "string",
                "description": "The file UUID.",
                "format": "uuid"
              },
              "datetime_uploaded": {
                "type": "string",
                "description": "The date and time when the file was uploaded.",
                "format": "date-time"
              },
              "datetime_stored": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The date and time when the file was stored.",
                    "format": "date-time"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "datetime_removed": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The date and time when the file was removed.",
                    "format": "date-time"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "original_file_url": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The original file CDN URL returned by Uploadcare.",
                    "format": "uri"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "url": {
                "type": "string",
                "description": "The API resource URL returned by Uploadcare.",
                "format": "uri"
              },
              "mime_type": {
                "type": "string",
                "description": "The MIME type returned by Uploadcare."
              },
              "size": {
                "type": "integer",
                "minimum": 0,
                "description": "The file size in bytes."
              },
              "is_image": {
                "type": "boolean",
                "description": "Whether Uploadcare identified the file as an image."
              },
              "is_ready": {
                "type": "boolean",
                "description": "Whether the file is ready for delivery."
              },
              "metadata": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "User-defined Uploadcare file metadata."
              },
              "appdata": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Uploadcare add-on application data attached to the file."
              }
            },
            "additionalProperties": true,
            "description": "An Uploadcare file object returned by the REST API."
          }
        },
        "additionalProperties": false,
        "required": [
          "file"
        ],
        "description": "The Uploadcare delete-file response."
      }
    },
    {
      "id": "uploadcare.get_file_info",
      "service": "uploadcare",
      "name": "get_file_info",
      "description": "Get Uploadcare file metadata by UUID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "description": "The Uploadcare file UUID.",
            "format": "uuid"
          },
          "include": {
            "type": "string",
            "description": "Additional Uploadcare fields to include, such as appdata."
          }
        },
        "additionalProperties": false,
        "required": [
          "uuid"
        ],
        "description": "Input for retrieving one Uploadcare file."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "file": {
            "type": "object",
            "properties": {
              "uuid": {
                "type": "string",
                "description": "The file UUID.",
                "format": "uuid"
              },
              "datetime_uploaded": {
                "type": "string",
                "description": "The date and time when the file was uploaded.",
                "format": "date-time"
              },
              "datetime_stored": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The date and time when the file was stored.",
                    "format": "date-time"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "datetime_removed": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The date and time when the file was removed.",
                    "format": "date-time"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "original_file_url": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The original file CDN URL returned by Uploadcare.",
                    "format": "uri"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "url": {
                "type": "string",
                "description": "The API resource URL returned by Uploadcare.",
                "format": "uri"
              },
              "mime_type": {
                "type": "string",
                "description": "The MIME type returned by Uploadcare."
              },
              "size": {
                "type": "integer",
                "minimum": 0,
                "description": "The file size in bytes."
              },
              "is_image": {
                "type": "boolean",
                "description": "Whether Uploadcare identified the file as an image."
              },
              "is_ready": {
                "type": "boolean",
                "description": "Whether the file is ready for delivery."
              },
              "metadata": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "User-defined Uploadcare file metadata."
              },
              "appdata": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Uploadcare add-on application data attached to the file."
              }
            },
            "additionalProperties": true,
            "description": "An Uploadcare file object returned by the REST API."
          }
        },
        "additionalProperties": false,
        "required": [
          "file"
        ],
        "description": "The Uploadcare file info response."
      }
    },
    {
      "id": "uploadcare.get_group_info",
      "service": "uploadcare",
      "name": "get_group_info",
      "description": "Get an Uploadcare file group by its group ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "minLength": 1,
            "description": "The Uploadcare group ID, for example a UUID followed by ~ and size."
          }
        },
        "additionalProperties": false,
        "required": [
          "uuid"
        ],
        "description": "Input for retrieving one Uploadcare group."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "group": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The Uploadcare group identifier."
              },
              "datetime_created": {
                "type": "string",
                "description": "The date and time when the group was created.",
                "format": "date-time"
              },
              "files_count": {
                "type": "integer",
                "minimum": 0,
                "description": "The number of files in the group."
              },
              "cdn_url": {
                "type": "string",
                "description": "The group CDN URL returned by Uploadcare.",
                "format": "uri"
              },
              "url": {
                "type": "string",
                "description": "The group API resource URL returned by Uploadcare.",
                "format": "uri"
              },
              "files": {
                "anyOf": [
                  {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "uuid": {
                              "type": "string",
                              "description": "The file UUID.",
                              "format": "uuid"
                            },
                            "datetime_uploaded": {
                              "type": "string",
                              "description": "The date and time when the file was uploaded.",
                              "format": "date-time"
                            },
                            "datetime_stored": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "The date and time when the file was stored.",
                                  "format": "date-time"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "datetime_removed": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "The date and time when the file was removed.",
                                  "format": "date-time"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "original_file_url": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "description": "The original file CDN URL returned by Uploadcare.",
                                  "format": "uri"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "url": {
                              "type": "string",
                              "description": "The API resource URL returned by Uploadcare.",
                              "format": "uri"
                            },
                            "mime_type": {
                              "type": "string",
                              "description": "The MIME type returned by Uploadcare."
                            },
                            "size": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "The file size in bytes."
                            },
                            "is_image": {
                              "type": "boolean",
                              "description": "Whether Uploadcare identified the file as an image."
                            },
                            "is_ready": {
                              "type": "boolean",
                              "description": "Whether the file is ready for delivery."
                            },
                            "metadata": {
                              "type": "object",
                              "properties": {},
                              "additionalProperties": true,
                              "description": "User-defined Uploadcare file metadata."
                            },
                            "appdata": {
                              "type": "object",
                              "properties": {},
                              "additionalProperties": true,
                              "description": "Uploadcare add-on application data attached to the file."
                            }
                          },
                          "additionalProperties": true,
                          "description": "An Uploadcare file object returned by the REST API."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "description": "The files in the group. Removed files may be returned as null entries."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": true,
            "description": "An Uploadcare group object with file entries."
          }
        },
        "additionalProperties": false,
        "required": [
          "group"
        ],
        "description": "The Uploadcare group info response."
      }
    },
    {
      "id": "uploadcare.get_project_info",
      "service": "uploadcare",
      "name": "get_project_info",
      "description": "Get Uploadcare project details for the connected public key.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "Input for retrieving Uploadcare project details."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "project": {
            "type": "object",
            "properties": {
              "collaborators": {
                "anyOf": [
                  {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "email": {
                          "type": "string",
                          "description": "The collaborator email address.",
                          "format": "email"
                        },
                        "name": {
                          "type": "string",
                          "description": "The collaborator name."
                        }
                      },
                      "additionalProperties": false,
                      "description": "An Uploadcare project collaborator."
                    },
                    "description": "The project collaborators returned by Uploadcare."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "name": {
                "type": "string",
                "description": "The Uploadcare project login name."
              },
              "pub_key": {
                "type": "string",
                "description": "The Uploadcare project public key."
              },
              "autostore_enabled": {
                "type": "boolean",
                "description": "Whether Uploadcare auto file storing is enabled."
              }
            },
            "additionalProperties": true,
            "description": "The Uploadcare project details."
          }
        },
        "additionalProperties": false,
        "required": [
          "project"
        ],
        "description": "The Uploadcare project details response."
      }
    },
    {
      "id": "uploadcare.list_files",
      "service": "uploadcare",
      "name": "list_files",
      "description": "List Uploadcare files with documented pagination and filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "removed": {
            "type": "boolean",
            "description": "Whether to include only removed files."
          },
          "stored": {
            "type": "boolean",
            "description": "Whether to include only stored or temporary files."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000,
            "description": "The preferred number of files to return."
          },
          "ordering": {
            "type": "string",
            "enum": [
              "datetime_uploaded",
              "-datetime_uploaded"
            ],
            "description": "The file sort order."
          },
          "from": {
            "type": "string",
            "description": "The ISO 8601 date-time cursor to start listing files from.",
            "format": "date-time"
          },
          "include": {
            "type": "string",
            "description": "Additional Uploadcare fields to include, such as appdata."
          }
        },
        "additionalProperties": false,
        "description": "Input for listing Uploadcare files."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "next": {
            "anyOf": [
              {
                "type": "string",
                "description": "A pagination URL returned by Uploadcare.",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ]
          },
          "previous": {
            "anyOf": [
              {
                "type": "string",
                "description": "A pagination URL returned by Uploadcare.",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ]
          },
          "total": {
            "type": "integer",
            "minimum": 0,
            "description": "The total number of files for the current query."
          },
          "totals": {
            "type": "object",
            "properties": {
              "removed": {
                "type": "integer",
                "minimum": 0,
                "description": "The number of removed files."
              },
              "stored": {
                "type": "integer",
                "minimum": 0,
                "description": "The number of stored files."
              },
              "unstored": {
                "type": "integer",
                "minimum": 0,
                "description": "The number of unstored files."
              }
            },
            "additionalProperties": true,
            "description": "Uploadcare file totals grouped by storage/removal state."
          },
          "per_page": {
            "type": "integer",
            "minimum": 0,
            "description": "The number of files returned per page."
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "uuid": {
                  "type": "string",
                  "description": "The file UUID.",
                  "format": "uuid"
                },
                "datetime_uploaded": {
                  "type": "string",
                  "description": "The date and time when the file was uploaded.",
                  "format": "date-time"
                },
                "datetime_stored": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The date and time when the file was stored.",
                      "format": "date-time"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "datetime_removed": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The date and time when the file was removed.",
                      "format": "date-time"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "original_file_url": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The original file CDN URL returned by Uploadcare.",
                      "format": "uri"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "url": {
                  "type": "string",
                  "description": "The API resource URL returned by Uploadcare.",
                  "format": "uri"
                },
                "mime_type": {
                  "type": "string",
                  "description": "The MIME type returned by Uploadcare."
                },
                "size": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "The file size in bytes."
                },
                "is_image": {
                  "type": "boolean",
                  "description": "Whether Uploadcare identified the file as an image."
                },
                "is_ready": {
                  "type": "boolean",
                  "description": "Whether the file is ready for delivery."
                },
                "metadata": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "User-defined Uploadcare file metadata."
                },
                "appdata": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "Uploadcare add-on application data attached to the file."
                }
              },
              "additionalProperties": true,
              "description": "An Uploadcare file object returned by the REST API."
            },
            "description": "The Uploadcare files returned for this page."
          }
        },
        "additionalProperties": false,
        "required": [
          "results"
        ],
        "description": "The paginated Uploadcare file list response."
      }
    },
    {
      "id": "uploadcare.list_groups",
      "service": "uploadcare",
      "name": "list_groups",
      "description": "List Uploadcare file groups with documented pagination.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000,
            "description": "The preferred number of groups to return."
          },
          "from": {
            "type": "string",
            "description": "The ISO 8601 date-time cursor to start listing groups from.",
            "format": "date-time"
          },
          "ordering": {
            "type": "string",
            "enum": [
              "datetime_created",
              "-datetime_created"
            ],
            "description": "The group sort order."
          }
        },
        "additionalProperties": false,
        "description": "Input for listing Uploadcare groups."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "next": {
            "anyOf": [
              {
                "type": "string",
                "description": "A pagination URL returned by Uploadcare.",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ]
          },
          "previous": {
            "anyOf": [
              {
                "type": "string",
                "description": "A pagination URL returned by Uploadcare.",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ]
          },
          "total": {
            "type": "integer",
            "minimum": 0,
            "description": "The total number of groups in the project."
          },
          "per_page": {
            "type": "integer",
            "minimum": 0,
            "description": "The number of groups returned per page."
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The Uploadcare group identifier."
                },
                "datetime_created": {
                  "type": "string",
                  "description": "The date and time when the group was created.",
                  "format": "date-time"
                },
                "files_count": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "The number of files in the group."
                },
                "cdn_url": {
                  "type": "string",
                  "description": "The group CDN URL returned by Uploadcare.",
                  "format": "uri"
                },
                "url": {
                  "type": "string",
                  "description": "The group API resource URL returned by Uploadcare.",
                  "format": "uri"
                }
              },
              "additionalProperties": true,
              "description": "An Uploadcare group object."
            },
            "description": "The Uploadcare groups returned for this page."
          }
        },
        "additionalProperties": false,
        "required": [
          "results"
        ],
        "description": "The paginated Uploadcare group list response."
      }
    },
    {
      "id": "uploadcare.store_file",
      "service": "uploadcare",
      "name": "store_file",
      "description": "Mark an Uploadcare file as permanently stored.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "description": "The Uploadcare file UUID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "required": [
          "uuid"
        ],
        "description": "Input for selecting an Uploadcare file."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "file": {
            "type": "object",
            "properties": {
              "uuid": {
                "type": "string",
                "description": "The file UUID.",
                "format": "uuid"
              },
              "datetime_uploaded": {
                "type": "string",
                "description": "The date and time when the file was uploaded.",
                "format": "date-time"
              },
              "datetime_stored": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The date and time when the file was stored.",
                    "format": "date-time"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "datetime_removed": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The date and time when the file was removed.",
                    "format": "date-time"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "original_file_url": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The original file CDN URL returned by Uploadcare.",
                    "format": "uri"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "url": {
                "type": "string",
                "description": "The API resource URL returned by Uploadcare.",
                "format": "uri"
              },
              "mime_type": {
                "type": "string",
                "description": "The MIME type returned by Uploadcare."
              },
              "size": {
                "type": "integer",
                "minimum": 0,
                "description": "The file size in bytes."
              },
              "is_image": {
                "type": "boolean",
                "description": "Whether Uploadcare identified the file as an image."
              },
              "is_ready": {
                "type": "boolean",
                "description": "Whether the file is ready for delivery."
              },
              "metadata": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "User-defined Uploadcare file metadata."
              },
              "appdata": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "Uploadcare add-on application data attached to the file."
              }
            },
            "additionalProperties": true,
            "description": "An Uploadcare file object returned by the REST API."
          }
        },
        "additionalProperties": false,
        "required": [
          "file"
        ],
        "description": "The Uploadcare store-file response."
      }
    }
  ]
}
