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

Expandir
titleVí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

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

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

HttpStatus: 200

Bloco de código
languagejs
titleJson
linenumberstrue
{
    "id": "apiteste",
    "roles": [
        {
            "company": "1",
            "value": "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": "0",
			"value": "DBA_S"
		}
	]
}

HttpStatus: 401

Informações
iconfalse
titleResponse

{
    "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:  http://{domínio}:{porta}/api/framework/v1/users/{user}/roles/company/{company}/role/{role}

Informações
iconfalse
titleExemplo de Configuração

Url Utilizada: http://localhost:8051/api/framework/v1/users/apiteste/roles/company/0/role/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.