JSON API
Autenticação
A API HelloCloud permite dois tipos de concessão:
-
Credencial do Cliente
-
Senha
Parameter | Description |
---|---|
Access Token URL |
{{base.url}}/Api/access_token |
Username |
Disponível apenas para concessões de senha. Deve ser um nome de usuário válido do HelloCloud. |
Password |
Disponível apenas para concessões de senha. Senha do usuário selecionado. |
Client ID |
O ID do cliente existe no ID do módulo OAuth2Clients. Deve ser um GUID válido. |
Client Secret |
O segredo do cliente também está no módulo OAuth2Clients como valor gerado pelo SHA256. |
Scopes |
Os escopos ainda não foram implementados |
Parâmetros disponíveis
De acordo com a especificação JsonApi, os parâmetros disponíveis são os seguintes, dependendo do endpoint GET:
Campos
Os campos podem ser filtrados por objeto de atributo. As chaves permitidas são propriedades de bean válidas.
Exemplo:
{{base.url}}/V8/module/Accounts/11a71596-83e7-624d-c792-5ab9006dd493?fields[Accounts]=name,account_type
Resultado:
{
"data": {
"type": "Account",
"id": "11a71596-83e7-624d-c792-5ab9006dd493",
"attributes": {
"name": "White Cross Co",
"account_type": "Customer"
},
"relationships": {
"AOS_Contracts": {
"links": {
"related": "/V8/module/Accounts/11a71596-83e7-624d-c792-5ab9006dd493/relationships/aos_contracts"
}
}
}
}
}
Página
A página pode filtrar beans e definir a paginação. As chaves permitidas são number e size.
-
page[number]: número da página desejada
-
page[size]: tamanho do resultado
Exemplo:
{{base.url}}/V8/module/Accounts?fields[Account]=name,account_type&page[number]=3&page[size]=1
Resultado:
{
"meta": {
"total-pages": 54
},
"data": [
{
"type": "Account",
"id": "e6e0af95-4772-5773-ae70-5ae70f931feb",
"attributes": {
"name": "",
"account_type": ""
},
"relationships": {
"AOS_Contracts": {
"links": {
"related": "/V8/module/Accounts/e6e0af95-4772-5773-ae70-5ae70f931feb/relationships/aos_contracts"
}
}
}
}
],
"links": {
"first": "/V8/module/Accounts?fields[Account]=name,account_type&page[number]=1&page[size]=1",
"prev": "/V8/module/Accounts?fields[Account]=name,account_type&page[number]=2&page[size]=1",
"next": "/V8/module/Accounts?fields[Account]=name,account_type&page[number]=4&page[size]=1",
"last": "/V8/module/Accounts?fields[Account]=name,account_type&page[number]=54&page[size]=1"
}
}
Ordenar
A classificação só está disponível quando as coleções desejam ser buscadas. A classificação é definida como ASC por padrão. Se a propriedade for prefixada com hífen, a ordem de classificação será alterada para DESC.
Aviso importante: no momento, oferecemos suporte apenas à classificação única!
Exemplo:
{{base.url}}/V8/module/Accounts?sort=-name
Resultado:
{
"data": [
{
"type": "Account",
"id": "e6e0af95-4772-5773-ae70-5ae70f931feb",
"attributes": {
"name": "White Cross Co",
"account_type": "Customer"
},
"relationships": {
"AOS_Contracts": {
"links": {
"related": "/V8/module/Accounts/1d125d2a-ac5a-3666-f771-5ab9008b606c/relationships/aos_contracts"
}
}
}
},
{
"type": "Account",
"id": "7831d361-2f3c-dee4-d36c-5ab900860cfb",
"attributes": {
"name": "Union Bank",
"account_type": "Customer"
},
"relationships": {
"AOS_Contracts": {
"links": {
"related": "/V8/module/Accounts/7831d361-2f3c-dee4-d36c-5ab900860cfb/relationships/aos_contracts"
}
}
}
}
],
}
Filtro
Nossa estratégia de filtro é a seguinte:
-
filter[operator]=and
-
filter[account_type][eq]=Customer
Aviso importante: não oferecemos suporte à classificação em vários níveis no momento!
Operadores suportados
Comparação
EQ = '=';
NEQ = '<>';
GT = '>';
GTE = '>=';
LT = '<';
LTE = '<=';
Lógico
'AND', 'OR'
Exemplo:
{{base.url}}/V8/module/Accounts?fields[Accounts]=name,account_type&filter[operator]=and&filter[account_type][eq]=Customer
Exemplo:
{{base.url}}/V8/module/Accounts?filter[account_type][eq]=Customer
Endpoints
Logout
POST {{base.url}}/V8/logout
Obtenha um registro por ID
GET {{base.url}}/V8/module/{moduleName}/{id}
Parâmetros disponíveis: fields
Exemplo:
V8/module/Accounts/11a71596-83e7-624d-c792-5ab9006dd493?fields[Accounts]=name,account_type
Obtenha uma lista de registro de um módulo
GET {{base.url}}/V8/module/{moduleName}
Parâmetros disponíveis: fields, page, sort, filter
Exemplo:
V8/module/Accounts?fields[Accounts]=name,account_type&page[size]=4&page[number]=4
Criar um registro no módulo
POST {{base.url}}/V8/module
Exemplo de corpo:
{
"data": {
"type": "Accounts",
"id": "86ee02b3-96d2-47b3-bd6d-9e1035daff3a",
"attributes": {
"name": "Test account"
}
}
}
Atualizar um registro no módulo
PATCH {{base.url}}/V8/module
Exemplo de corpo:
{
"data": {
"type": "Accounts",
"id": "11a71596-83e7-624d-c792-5ab9006dd493",
"attributes": {
"name": "Updated name"
}
}
}
Excluir um registro de módulo
DELETE {{base.url}}/V8/module/{moduleName}/{id}
Obter relacionamento
GET {{base.url}}/V8/module/{moduleName}/{id}/relationships/{relatedModuleName}
Exemplo:
V8/module/Accounts/129a096c-5983-1d59-5ddf-5d95ec91c144/relationships/Accounts
Criar relacionamento
POST {{base.url}}/V8/module/{moduleName}/relationships
Exemplo de corpo:
{
"data": {
"type": "Contacts",
"id": "129a096c-5983-1d59-5ddf-5d95ec91c144"
}
}
Excluir relacionamento
DELETE {{base.url}}/V8/module/{moduleName}/{id}/relationships/{relatedModule}/{relatedBeanId}
Exemplo:
V8/module/Accounts/129a096c-5983-1d59-5ddf-5d95ec91c144/relationships/Accounts/11a71596-83e7-624d-c792-5ab9006dd493