Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Informações
iconfalse
title1.2.1 Post
Expandir
Informações
iconfalse
titleConfiguração

Máscara de Url: http://{domínio}:{porta}/api/framework/v1/users

Informações
iconfalse
titleExemplo de Configuração

Domínio: localhost

Porta: 8099

Url Utilizada: http://localhost:8051/api/framework/v1/users

Informações
iconfalse
titleExemplo de Entrada
Expandir
titleVer resultado JSON...
Bloco de código
languagejs
firstline1
titleResultado (JSON)
linenumberstrue
{
  "id": "testeapiusuario",
  "meta": {
    "resourceType": "User",
    "created": "2018-09-21T16:49:57.336Z",
    "lastModified": "2018-09-21T16:49:57.336Z"
  },
  "externalId": "0001e",
  "name": {
    "givenName": "TesteAPI",
    "familyName": "Usuário"
  },
  "userName": "testeapiusuario",
  "phoneNumbers": [
    {
      "value": "31974964158"
    }
  ],
  "emails": [
    {
      "value": "[email protected]",
      "type": "string",
      "primary": true
    }
  ],
  "active": true,
  "groups": [
    {
      "value": "01",
      "display": "geral"
    }
  ],
  "title": "Mr",
  "manager": [
    {
      "managerId": "01",
      "displayName": "Geral"
    }
  ]
}

Opcionalmente pode-se adicionar os perfis associados ao usuário, usando a propriedade role.

Informações
iconfalse
titleExemplo de Resultado Positivo
Expandir
titleVer resultado JSON...
Bloco de código
languagejs
firstline1
titleResultado (JSON)
linenumberstrue
{
    "id": "testeapiusuario",
    "meta": {
  
Bloco de código
	"roles": [
		{
			"company": "1",
			"value": "PERFIL-1"
		},      "resourceType": "User",
        {
			"companycreated": "12018-09-21T16:49:57.336Z",
			"value        "lastModified": "PERFIL-2"
		}
	]

Também de forma opcional é possível junto dos perfis, habilitar o usuário como supervisor

Bloco de código
"roles": [
		{
			"company2018-09-21T16:49:57.336Z"
    },
    "externalId": "10001e",
			"value    "name": "IsSupervisor"
		},{
        "givenName": "TesteAPI",
        {
			"companyfamilyName": "1Usuário",
			"value": "PERFIL-1"
		}
	]
Informações
iconfalse
titleExemplo de Resultado Positivo
Expandir
titleVer resultado JSON...
Bloco de código
languagejs
firstline1
titleResultado (JSON)
linenumberstrue
{
    },
    "iduserName": "testeapiusuario",
    "metaphoneNumbers": {[
        "resourceType": "User",
{
            "createdvalue": "2018-09-21T16:49:57.336Z",31974964158"
        "lastModified": "2018-09-21T16:49:57.336Z"}
    }],
    "externalIdemails": "0001e",
[
       "name": {
            "givenNamevalue": "TesteAPI[email protected]",
            "familyNametype": "Usuário"
    },
    "userName": "testeapiusuario",
    "phoneNumbers": [
        {
            "value": "31974964158"
        }
    ],
    "emails": [
        {
            "value": "[email protected]"string",
            "type": "string",
            "primary": true
        }
    ],
    "active": true,
    "groups": [
        {
            "value": "01",
            "display": "geral"
        }
    ],
    "title": "Mr",
    "manager": [
        {
            "managerId": "01",
            "displayName": "Geral"
        }
    ]
}
Informações
iconfalse
titleExemplo de Resultado Negativo
Expandir
titleVer resultado JSON...
Bloco de código
languagejs
firstline1
titleResultado (JSON)
linenumberstrue
{
    "Code": "RMSDbKeyException",
    "Message": "Chave duplicada\r\n\r\nPossíveis causas:\r\n  - inclusão de registro cujo valor da chave primária já existe\r\n  - inclusão de registro cujo valor do índice único já existe",
    "DetailMessage": "   em RM.Lib.Data.DbServices.UpdateTable(DataTable table, UpdateMode mode, Boolean logOperation, String userName, Int32 batchSize) na C:\\RM\\Atual\\Release\\Lib\\RM.Lib.Data\\RMSData.cs:linha 897\r\n   em RM.Lib.Data.DbServices.UpdateTable(DataTable table, UpdateMode mode, String userName, Int32 batchSize) na C:\\RM\\Atual\\Release\\Lib\\RM.Lib.Data\\RMSData.cs:linha 865\r\n   em RM.Lib.Data.DbServices.QueryUpdate(DataSet dataSet, String tableName, String codUsuario) na C:\\RM\\Atual\\Release\\Lib\\RM.Lib.Data\\RMSData.cs:linha 3429\r\n   em RM.Lib.Data.DbServices.QueryUpdate(DataSet dataSet, String tableName) na C:\\RM\\Atual\\Release\\Lib\\RM.Lib.Data\\RMSData.cs:linha 3423\r\n   em RM.Glb.Seguranca.GlbUsuarioData.DoSaveRecord(DataSet dataSet, Int32& rowsAffected, Object ownerData) na C:\\RM\\Atual\\Release\\Glb-Globais\\RM.Glb.Seguranca.Data\\GlbUsuarioData.cs:linha 473\r\n   em RM.Lib.Server.RMSDataServer.InternalSaveRecord(RMSContext context, DataSet& dataSet, Object ownerData, Boolean skipSecurity, Boolean skipSecurityCollumns) na C:\\RM\\Atual\\Release\\Lib\\RM.Lib.Server\\RMSDataServer.cs:linha 1477\r\n   em RM.Lib.Server.RMSDataServer.SaveRecord(RMSContext context, DataSet& dataSet, Object ownerData) na C:\\RM\\Atual\\Release\\Lib\\RM.Lib.Server\\RMSDataServer.cs:linha 651\r\n   em RM.Glb.Api.UserControllerServer.Save(String id, User record) na C:\\RM\\Atual\\Release\\Glb-Globais\\RM.Glb.Api\\UserController.Server.cs:linha 336\r\n   em RM.Glb.Api.UserControllerServer.OnPost(User record) na C:\\RM\\Atual\\Release\\Glb-Globais\\RM.Glb.Api\\UserController.Server.cs:linha 269\r\n   em RM.Lib.Server.RMSCrudServer`1.Post(T record) na C:\\RM\\Atual\\Release\\Lib\\RM.Lib.Server\\Api\\RMSCrudServer.cs:linha 80\r\n   em RM.Lib.Api.RMSCrudController`1.OnPost(T record) na C:\\RM\\Atual\\Release\\Lib\\RM.Lib.Api\\Controllers\\RMSCrudController.cs:linha 135\r\n   em RM.Lib.Api.RMSCrudController`1.Post(T record) na C:\\RM\\Atual\\Release\\Lib\\RM.Lib.Api\\Controllers\\RMSCrudController.cs:linha 125\r\n   em lambda_method(Closure , Object , Object[] )\r\n   em System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.<GetExecutor>b__9(Object instance, Object[] methodParameters)\r\n   em System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)\r\n--- Fim do rastreamento de pilha do local anterior onde a exceção foi gerada ---\r\n   em System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   em System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   em System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext()\r\n--- Fim do rastreamento de pilha do local anterior onde a exceção foi gerada ---\r\n   em System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   em System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   em System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()\r\n--- Fim do rastreamento de pilha do local anterior onde a exceção foi gerada ---\r\n   em System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   em System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   em System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n   em RM.Lib.Api.Server.ApiAuthenticationFilter.ResultWithChallenge.<ExecuteAsync>d__2.MoveNext() na C:\\RM\\Atual\\Release\\Lib\\RM.Lib.Api.Server\\Filters\\Api.AuthenticationFilter.cs:linha 193\r\n--- Fim do rastreamento de pilha do local anterior onde a exceção foi gerada ---\r\n   em System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   em System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   em System.Web.Http.Controllers.AuthenticationFilterResult.<ExecuteAsync>d__0.MoveNext()\r\n--- Fim do rastreamento de pilha do local anterior onde a exceção foi gerada ---\r\n   em System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   em System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   em System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__0.MoveNext()",
    "HelpUrl": null,
    "Details": [
        {
            "Code": "Exception",
            "Message": "Violation of PRIMARY KEY constraint 'PKGUSUARIO'. Cannot insert duplicate key in object 'dbo.GUSUARIO'. The duplicate key value is (testeapiusuario).\r\nThe statement has been terminated.",
            "DetailMessage": null,
            "HelpUrl": null,
            "Details": [
                {
                    "Code": "Exception",
                    "Message": "INSERT INTO [GUSUARIO] ([CODUSUARIO], [NOME], [STATUS], [DATAINICIO], [IGNORARAUTENTICACAOLDAP], [DATAEXPIRACAO], [CONFIRMABTNOK], [SENHA], [CONTROLE], [ULTIMACOLIGADA], [CODACESSO], [DTAEXPSENHA], [DIASEXPSENHA], [OBRIGAALTERARSENHA], [NUMLOGININVALIDO], [DATALOGININVALIDO], [EMAIL], [ACESSONET], [INTERNO1], [DATAULTIMOACESSO], [CODUSUARIOREDE], [DOMINIOREDE], [DATAULTIMOACESSOVALIDO], [USUARIOTWITTER], [SENHATWITTER], [USUARIOFACEBOOK], [SENHAFACEBOOK], [USUARIOLINKEDIN], [SENHALINKEDIN], [USERIDFLUIGIDENTITY], [NOMESOCIAL], [USERID], [RECCREATEDBY], [RECCREATEDON], [RECMODIFIEDBY], [RECMODIFIEDON]) VALUES ('testeapiusuario', null, 1, '08/10/2018 00:00:00', 'F', null, 1, 'jcmaAAAA', -17702, , 'Acesso01', null, , 'T', , null, '[email protected]', 'F', null, null, null, null, null, null, '\\FEz\\1B\\7F1\\18\\B7\\27', null, '\\FEz\\1B\\7F1\\18\\B7\\27', null, '\\FEz\\1B\\7F1\\18\\B7\\27', null, null, '9b69c210-8d20-45b6-afae-534ce10fd4b7', 'mestre', CONVERT ( DATETIME, CONVERT ( VARCHAR, GETDATE(), 120) ), 'mestre', CONVERT ( DATETIME, CONVERT ( VARCHAR, GETDATE(), 120) ))",
                    "DetailMessage": null,
                    "HelpUrl": null,
                    "Details": null
                }
            ]
        },
        {
            "Code": "Exception",
            "Message": "INSERT INTO [GUSUARIO] ([CODUSUARIO], [NOME], [STATUS], [DATAINICIO], [IGNORARAUTENTICACAOLDAP], [DATAEXPIRACAO], [CONFIRMABTNOK], [SENHA], [CONTROLE], [ULTIMACOLIGADA], [CODACESSO], [DTAEXPSENHA], [DIASEXPSENHA], [OBRIGAALTERARSENHA], [NUMLOGININVALIDO], [DATALOGININVALIDO], [EMAIL], [ACESSONET], [INTERNO1], [DATAULTIMOACESSO], [CODUSUARIOREDE], [DOMINIOREDE], [DATAULTIMOACESSOVALIDO], [USUARIOTWITTER], [SENHATWITTER], [USUARIOFACEBOOK], [SENHAFACEBOOK], [USUARIOLINKEDIN], [SENHALINKEDIN], [USERIDFLUIGIDENTITY], [NOMESOCIAL], [USERID], [RECCREATEDBY], [RECCREATEDON], [RECMODIFIEDBY], [RECMODIFIEDON]) VALUES ('testeapiusuario', null, 1, '08/10/2018 00:00:00', 'F', null, 1, 'jcmaAAAA', -17702, , 'Acesso01', null, , 'T', , null, '[email protected]', 'F', null, null, null, null, null, null, '\\FEz\\1B\\7F1\\18\\B7\\27', null, '\\FEz\\1B\\7F1\\18\\B7\\27', null, '\\FEz\\1B\\7F1\\18\\B7\\27', null, null, '9b69c210-8d20-45b6-afae-534ce10fd4b7', 'mestre', CONVERT ( DATETIME, CONVERT ( VARCHAR, GETDATE(), 120) ), 'mestre', CONVERT ( DATETIME, CONVERT ( VARCHAR, GETDATE(), 120) ))",
            "DetailMessage": null,
            "HelpUrl": null,
            "Details": null
        }
    ]
}

...

Informações
iconfalse
title1.5.1 Patch
Expandir
Informações
iconfalse
titleConfiguração

Máscara de Url: http://{domínio}:{porta}/api/framework/v1/users/{id}

Informações
iconfalse
titleExemplo de Configuração

Domínio: localhost

Porta: 8051

Id: Teste_01

Url Utilizada: http://localhost:8051/api/framework/v1/users/Teste_01

Informações
iconfalse
titleExemplo de Entrada
Expandir
titleVer resultado JSON...
Bloco de código
languagejs
firstline1
titleResultado (JSON)
linenumberstrue
{
	"name":
	{
            "givenName": {{givenName_formatted}}
    },
    "emails": [
        {
            "value": {{email_formatted}},
            "primary": true
        }
    ],
    "active": {{active}}
}
Informações
iconfalse
titleExemplo de Resultado Positivo
Expandir
titleVer resultado JSON...
Bloco de código
languagejs
firstline1
titleResultado (JSON)
linenumberstrue
{
    "id": "Teste_01",
    "meta": {
        "resourceType": "User",
        "created": "2018-12-05T15:03:07.28",
        "lastModified": "2018-12-05T15:03:08.5546578"
    },
    "externalId": "IDTeste_01External",
    "name": {
        "formatted": "NOME SOCIAL DO TESTE_01",
        "givenName": "Igor",
        "familyName": "Automatizado"
    },
    "userName": "Teste_01",
    "emails": [
        {
            "value": "[email protected]",
            "primary": true
        }
    ],
    "active": true
}


Referências (Links)

...

Roles (Manipulação de Perfis) A partir da versão 12.1.2306

...

Informações
titleAssociação de Perfis (Roles)
Para adicionar/ e remover perfis á um usuário é necessário realizar as operações de Post/Delete nas rotas de perfis conforme abaixo.

Informaçõesexpand
titleAdicionar Perfil(s) ao usuárioVíncular perfil ao usuário (Post)
Informações
iconfalse

Método HTTP: Post

Máscara de Url:

 

  http://{domínio}:{porta}/api/framework/v1/users/{user}/roles


Informações
iconfalse
titleExemplo de Configuração
Domínio

Url Utilizada: http://localhost

Porta: 8051

User: Teste_01

Url Utilizada: http://localhost:8051/

:8051/api/framework/v1/users/

Teste_01

apiteste/roles

VariávelDescriçãoValor
domínioendereço do serviço de webservicelocalhost
portaporta do serviço8051
usercódigo do usuárioapiteste
Expandir
title
Clique aqui para expandir...
Exemplo Sucesso
Informações
iconfalse
titleRequest Body
Bloco de código
languagejs
titleJson
linenumberstrue
{
	
Bloco de código
"roles": 
[
		{
			"company": "
1
0",
			"value": "
PERFIL-1
DBA_G"
		}
	
},
]
}
Informações
iconfalse
titleResponse

HttpStatus: 200

Bloco de código
languagejs
titleJson
linenumberstrue
{
    "id": "apiteste",
    "roles": [
        {
            "company": "1",
            "value": "
PERFIL-2
DBA_G"
},
        },
        {
            "company": "6",
            "value": "DBA_G"
        },
        {
            "company": "7",
            "value": "DBA_G"
        }
    ]
}
Aviso
titleAtenção

Ao enviar o codigo da coligada (Company) como 0 o sistema irá adicionar o perfil para todas as coligadas que o usuário possuir permissão.

Como no exemplo da resposta, o perfil DBA_G foi associado para as coligadas 1,6 e 7.

Expandir
titleExemplo Erro
Expandir
titleUsuário já possui algum perfil associado
Informações
iconfalse
titleRequest Body
Bloco de código
languagejs
titleJson
linenumberstrue
{
	"roles": [
		{
			"company": "0",
			"value": "DBA_G"
		}
	]
}

HttpStatus: 400

Informações
iconfalse
titleResponse

{
    "Code""FE019",
    "Message""Usuário APITESTE já está associado ao perfil 'CodColigada:'1'|Sistema:'G'|CodPerfil:'DBA'|IdPerfil:DBA_G'!",
    "DetailMessage""",
    "HelpUrl""",
    "Details"null
}

Expandir
titleUsuário sem permissão
Informações
iconfalse
titleRequest Body
Bloco de código
languagejs
titleJson
linenumberstrue
{
	"roles": [
		{
			"company": "
2
0",
			"value": "
PERFIL-2
DBA_S"
		}
 

	]
}

HttpStatus: 401

Informações
iconfalse
title
Response

{
    "Code""FE005",
    "Message""O Usuário informado não tem permissão para associar perfis na coligada 1 sistema S!",
    "DetailMessage""",
    "HelpUrl""",
    "Details"null
}


Expandir
titleRemover perfil do usuário (Delete)
Informações
iconfalse

Método HTTP: Delete

Máscara de Url

Remover perfil do usuário

Delete

Máscara de Url:  http://{domínio}:{porta}/api/framework/v1/users/{user}/roles/company/{company}/role/{role}

Informações
iconfalse
titleExemplo de Configuração

Domínio: localhost

Porta: 8051

User: Teste_01

Company: 1

Role: PERFIL-1

Url Utilizada:  http://localhost:8051{domínio}:{porta}/api/framework/v1/users/Teste_01{user}/roles/company/1{company}/role/PERFIL-1{role}

Informações
iconfalse
title
Coligada Zero (0)
Exemplo de Configuração

Url Utilizada:

É possível remover a associação de um mesmo perfil em todas as coligadas informando o valor Zero (0), na propriedade company.

Exemplo: 

http://localhost:8051/api/framework/v1/users/

Teste_01

apiteste/roles/company/0/role/

PERFIL-COMUM

DBA_S

VariávelDescriçãoValor
domínioendereço do serviço de webservicelocalhost
portaporta do serviço8051
usercódigo do usuárioapiteste
companycódigo da coligada que será utilizada0
roleIdentificador(IDPERFIL) do perfil que será atribuído

DBA_S

Informações
iconfalse
titleResponse (Sucesso ou Erro)

HttpStatus: 204

Response Body: Vazio 

Aviso
titleAtenção

Por padrão, nas mensagens de DELETE, a resposta deve ser enviada com HTTP Code 204 (No content) e sem corpo no retorno, mesmo se não obtiver sucesso.