ActorRecursosInput Schema

Esquema de Entrada

O Scrapeless lê o arquivo INPUT_SCHEMA.json localizado no diretório raiz do projeto e gera automaticamente uma interface de usuário com base neste arquivo para inserir os parâmetros necessários pelo Actor. Isso simplifica a configuração para desenvolvedores e torna as opções de entrada mais acessíveis para não desenvolvedores.

Principais propósitos:

  1. Validação de Entrada Usado para garantir que os dados passados para o Actor estejam conformes à estrutura predefinida e às regras de validação, melhorando a estabilidade e confiabilidade durante a execução.
  2. Geração de IU A plataforma gera automaticamente uma interface de configuração gráfica com base no esquema de entrada, facilitando para os usuários preencher e gerenciar os parâmetros de entrada.
  3. Suporte de Integração O Scrapeless pode gerar automaticamente código de invocação e conectores com base no esquema de entrada, simplificando como os sistemas externos chamam e se integram ao Actor.

Esquema de Entrada define os parâmetros de entrada para um Actor. É um objeto JSON composto por vários tipos de campo suportados pela plataforma Scrapeless. Com base no Esquema de Entrada, o Scrapeless analisa automaticamente os parâmetros e gera uma interface de usuário correspondente.

Abaixo está uma IU gerada a partir de um Esquema de Entrada.

A definição do Esquema de Entrada é a seguinte:

{
  "title": "Google Trends Input",
  "type": "object",
  "required": [
    "q",
    "data_type"
  ],
  "properties": {
    "q": {
      "title": "Search Query",
      "description": "Parameter defines the query or queries you want to search. You can use anything that you would use in a regular Google Trends search. The maximum number of queries per search is 5 (this only applies to `interest_over_time` and `compared_breakdown_by_region` data_type, other types of data will only accept 1 query per search).",
      "type": "string",
      "default": "Mercedes-Benz,BMW X5"
    },
    "data_type": {
      "title": "Data Type",
      "description": "The supported types are: `autocomplete`,`interest_over_time`,`compared_breakdown_by_region`,`interest_by_subregion`,`related_queries`,`related_topics`.",
      "type": "string",
      "default": "interest_over_time",
      "enum": [
        {
          "label": "Auto complete",
          "value": "autocomplete"
        },
        {
          "label": "Interest over time",
          "value": "interest_over_time"
        },
        {
          "label": "Compared breakdown by region",
          "value": "compared_breakdown_by_region"
        },
        {
          "label": "Interest by region",
          "value": "interest_by_subregion"
        },
        {
          "label": "Related queries",
          "value": "related_queries"
        },
        {
          "label": "Related topics",
          "value": "related_topics"
        }
      ]
    },
    "date": {
      "title": "Date",
      "description": "The supported dates are: `now 1-H`, `now 4-H`, `now 1-d`, `now 7-d`, `today 1-m`, `today 3-m`, `today 12-m`, `today 5-y`, `all`.\n\nYou can also pass custom values:\n\nDates from 2004 to present: `yyyy-mm-dd yyyy-mm-dd` (e.g. `2021-10-15 2022-05-25`)\nDates with hours within a week range: `yyyy-mm-ddThh yyyy-mm-ddThh` (e.g. `2022-05-19T10 2022-05-24T22`). Hours will be calculated depending on the tz (time zone) parameter.",
      "type": "string",
      "default": "today 1-m"
    },
    "hl": {
      "title": "Language",
      "description": "Parameter defines the language to use for the Google Trends search. It's a two-letter language code. (e.g., `en` for English, `es` for Spanish, or `fr` for French).",
      "type": "string",
      "default": "en"
    },
    "tz": {
      "title": "Time Zone",
      "description": "time zone offset. default is `420`.",
      "type": "string",
      "default": "420"
    }
// ...
 
  }
}
 

Os dados do objeto de entrada transmitidos na interface da IU são os seguintes:

{
    "q": "Mercedes-Benz,BMW X5",
    "data_type": "interest_over_time",
    "date": "today 1-m",
    "hl": "en",
    "tz": "420",
    "geo": "",
    "cat": "",
    "property": "",
    "is_return_raw_html": "1"
}
 

A seguir, vamos aprender mais sobre as especificações relevantes do Esquema de Entrada.

Especificação

Estrutura

{
  "title": "Title",
  "type": "object",
  "required": [], // Quais campos são obrigatórios
  "properties": {} // defina os campos de entrada aqui
}
 
PropriedadeTipoObrigatórioDescrição
titleStringSimQualquer texto para descrever seu esquema de entrada.
typeStringSimEste é um valor fixo, sempre “object”.
requiredStringSimUma matriz de strings, cada string é o nome de uma propriedade obrigatória.
propertiesStringSimUm objeto, as chaves são os nomes das propriedades, os valores são as definições das propriedades.

Campos

Cada campo inserido precisa ser definido como propriedades. Os campos podem ter tipos inteiro, string, array, booleano, objeto e outros. Os detalhes são os seguintes:

PropriedadeValorObrigatórioDescrição
typeUm dos integer, string, array, boolean, objectSimAs restrições do tipo de campo não podem ser misturadas.
titleStringSimTítulo do campo
descriptionStringSimAs descrições dos campos são exibidas como texto de ajuda na IU. Você pode usar o formato Markdown para escrever essas descrições.
defaultConsistente com typeNãoValor padrão do campo
unitStringNãoUnidade de exibição do campo
minimumNumberNãoValor mínimo do campo
maximumNumberNãoValor máximo do campo
enumArrayNãoValores de enumeração de campo (opções de enum)

Exemplos de Renderização

String

Exemplo de Entrada: Definimos um campo de entrada padrão com as seguintes propriedades: o tipo é string, o título é Nome de Usuário, a descrição é Nome de Usuário é o nome de usuário do usuário, o valor padrão é Sou um valor padrão e o comprimento máximo é 20.

{
  "title": "Test Input",
  "type": "object",
  "required": [
    "username"
  ],
  "properties": {
    "username": {
      "title": "Username",
      "description": "Username is the username of the user",
      "type": "string",
      "default": "I'm a default value",
       "maximum": 20
    }
  }
}
 

Resultado da renderização:

Exemplo de seleção de país: Neste exemplo, definimos um campo de entrada de seleção de país. Seu tipo é string, o valor padrão é china e uma enumeração de valores possíveis é fornecida.

{
  "title": "Test Input Select",
  "type": "object",
  "required": [
    "country"
  ],
  "properties": {
    "country": {
      "title": "Country",
      "type": "string",
      "description": "Country selection",
      "default": "china",
      "enum": [
        {
          "label": "China",
          "value": "china"
        },
        {
          "label": "United States",
          "value": "usa"
        },
        {
          "label": "United Kingdom",
          "value": "uk"
        }
      ]
    }
  }
}
 

Resultado da renderização:

Integer

Exemplo: No esquema abaixo, o tipo de entrada é restrito a integer, com valores máximo e mínimo definidos.

{
  "title": "Test Input Number",
  "type": "object",
  "required": [
    "age"
  ],
  "properties": {
    "age": {
      "title": "Age",
      "type": "integer",
      "description": "Age is the age of the user",
      "default": 18,
      "minimum": 12,
      "maximum": 100
    }
  }
}
 

Resultado da renderização:

Boolean

Exemplo: No exemplo abaixo, o tipo de entrada é restrito a boolean e seu valor padrão é definido como true.

{
  "title": "Test Input Boolean",
  "type": "boolean",
  "required": [
    "print_log"
  ],
  "properties": {
    "print_log": {
      "title": "Print Log",
      "type": "boolean",
      "description": "Print Log is the print log of the user",
      "default": true
    }
  }
}
 

Resultado da renderização:

Array

Exemplo: No exemplo abaixo, o tipo de entrada é restrito a array e um valor padrão é fornecido.

{
  "title": "Test Input Array",
  "type": "array",
  "required": [
    "user_tags"
  ],
  "properties": {
    "user_tags": {
      "title": "User Tags",
      "type": "array",
      "description": "User Tags is the tags of the user",
      "default": [
        "user",
        "admin"
      ]
    }
  }
}
 

Resultado da renderização:

Object

Exemplo: No exemplo abaixo, o tipo de entrada é restrito a object e um valor padrão é fornecido.

{
  "title": "Test Input Object",
  "type": "object",
  "required": [
    "user_info"
  ],
  "properties": {
    "user_info": {
      "title": "User Info",
      "type": "object",
      "description": "User Info is the info of the user",
      "default": {
        "name": "John Doe",
        "age": 20,
        "email": "john.doe@example.com"
      }
    }
  }
}
 

Resultado da renderização: