# Criar um cronograma único

Salvar na nuvem do celular após a tarefa agendada.
Especificação de Parâmetros do TemplateParameter
1. **Origem dos Parâmetros**
As chaves dos parâmetros devem ser extraídas do campo `parameter` retornado pelas seguintes APIs:

- Obter páginas de modelos de mercado
- Obter páginas de modelos pessoais

1. **Estrutura de Dados**

- Enviar parâmetros no formato de objeto JSON: `{"key1": "value1", "key2": "value2"}`
- Os valores finais dos parâmetros devem ser desserializados de acordo com a lógica de negócios antes do uso.

1. **Parâmetros de Tipo Comum**
Para os seguintes tipos de parâmetros, passe os valores diretamente no formato correspondente:

- string: `{"name": "John"}`
- decimal / number: `{"amount": 100.50}`
- boolean: `{"enabled": true}`

1. **Parâmetros de Tipo de Mídia**
Para parâmetros de mídia, como imagem (pic) ou vídeo (video), além das informações básicas, uma chave fixa `"__Extra__"` deve ser incluída. Exemplo de formato:


```json
{

"__Extra__": {

"pic": {

"name": "pic_name",

"size": 204800
},

"video": {
"name": "video_name",

"size": 204800000
}

},

"pic": "https://get.morelogin.com/prod/cloudPhoneTaskVideo/1556061681934880/1c62314c7e2b4d298abe8d5452d7c050/test.png",
"video": "morelogin://cloudfile?ids=1,2"
}
```
1. **Exemplo de Configuração de Parâmetros**
O exemplo a seguir demonstra como configurar o parâmetro `templateParameter` ao salvar um plano usando um modelo de mercado:

- **Etapa 1: Recuperar Parâmetros do Modelo**
Chame a API do Modelo de Mercado:
`GET /api/cloudphone/rpa/template/market/page`
Extraia o campo `parameter` da resposta, por exemplo:


```json
"parameter": "{\"videoDownloadUrl\":{\"type\":\"video\",\"extra\":{\"name\":\"Select Vídeo\",\"tipo\":\"vídeo\",\"obrigatório\":true,\"valorPadrão\":{\"habilitado\":false},\"índice\":1,\"limiteDeTamanho\":{\"valor\":200,\"unidade\":\"MB\"},\"tipoDeFormato\":[\"mp4\",\"mov\"]}},\"descriçãoDoVídeo\":{\"tipo\":\"string\",\"extra\":{\"nome\":\"Vídeo Legenda\",\"tipo\":\"string\",\"obrigatório\":false,\"caractereValido\":{\"habilitado\":true,\"valor\":1000},\"multilinha\":{\"habilitado\":true,\"valor\":3},\"valorPadrão\":{\"habilitado\":false},\"índice\":2}},\"URLDaCapa\":{\"tipo\":\"imagem\",\"extra\":{\"nome\":\"Capa Image\",\"type\":\"image\",\"required\":false,\"defaultValue\":{\"enabled\":false},\"index\":3,\"sizeLimit\":{\"value\":5,\"unit\":\"MB\"},\"formatType\":[\"jpg\",\"png\",\"jpeg\"]}},\"enableAIGC\":{\"type\":\"boolean\",\"extra\":{\"name\":\"AI Label\",\"type\":\"boolean\",\"required\":false,\"defaultValue\":{\"enabled\":false},\"index\":4}},\"productId\":{\"type\":\"string\",\"extra\":{\"name\":\"Product ID\",\"type\":\"string\",\"required\":false,\"charValid\":{\"enabled\":true,\"value\":50},\"placeholder\":\"Product ID only supports digits, with a maximum of 50 caracteres.\",\"valorPadrão\":{\"habilitado\":false},\"índice\":5}},\"títuloDoProduto\":{\"tipo\":\"string\",\"extra\":{\"nome\":\"Título do Produto\",\"tipo\":\"string\",\"obrigatório\":false,\"caractereValível\":{\"habilitado\":true,\"valor\":30},\"valorPadrão\":{\"habilitado\":false},\"índice\":6}},\"obterLeads\":{\"tipo\":\"booleano\",\"extra\":{\"nome\":\"Obter Leads\",\"type\":\"boolean\",\"required\":false,\"defaultValue\":{\"enabled\":false},\"index\":7}},\"comment\":{\"type\":\"string\",\"extra\":{\"name\":\"Comment\",\"type\":\"string\",\"required\":false,\"charValid\":{\"enabled\":true,\"value\":200},\"multiline\":{\"enabled\":true,\"value\":3},\"defaultValue\":{\"enabled\":false},\"index\":8}}}"
```
- **Etapa 2: Construir o JSON de Parâmetros**
Construa o objeto JSON de acordo com Requisitos dos parâmetros:


```json
{
"__Extra__": {

"videoDownloadUrl": {

"name": "video_name.mp4",

"size": 204800000
}

},

"videoDownloadUrl": "morelogin://cloudfile?ids=1,2"
}
```
- **Etapa 3: Escapar a string JSON**
Converta o objeto JSON em um formato de string escapada:


```json
"{\"__Extra__\": {\"videoDownloadUrl\": {\"name\": \"video_name.mp4\",\"size\": 204800000}},\"videoDownloadUrl\": \"morelogin://cloudfile?ids=1,2\"}"
```
- **Etapa 4: Chamada à API**
Passe a string escapada como o valor do parâmetro `templateParameter` para a API de destino.

Endpoint: POST /api/cloudphone/rpa/onceTask/save
Version: 1.0.0

## Request fields (application/json):

  - `cloudPhoneId` (integer, required)
    ID do telefone na nuvem

  - `scheduleName` (string, required)
    Nome do cronograma

  - `templateId` (integer, required)
    ID do modelo, ID do modelo pessoal ou ID do modelo de mercado

  - `templateParameter` (string)
    Os parâmetros do modelo são definidos em modelos pessoais ou modelos de mercado. Os parâmetros no modelo são definidos como: {"Test":{"extra":{"type":"string","required":true,"multiline":{"enabled":false},"name":"Test","index":1},"type":"string"}} Ao solicitar parâmetros, o parâmetro passado é: {"Test":"xxxx"}

  - `description` (string)
    Descrição do cronograma

## Response 200 fields (application/json):

  - `code` (integer, required)
    Código de resposta: 0 indica sucesso, >0 indica falha

  - `msg` (string, required)
    Mensagem de erro

  - `requestId` (string, required)
    ID de rastreamento da solicitação

  - `data` (integer, required)
    ID dos horários

