v4h-client-api

Client-api that consumes the Session-manager api endpoints and serves them appropriately to the final user.

Usage no npm install needed!

<script type="module">
  import v4hClientApi from 'https://cdn.skypack.dev/v4h-client-api';
</script>

README

V4H Client API

npm version NPM npm npm bundle size

Biblioteca para o serviço de vídeoconferência segura para saúde (V4H - Video for Health), essa aplicação permite colocar em um sistema web já existente vídeo chamadas além de um controle de acesso complexo, onde você é possível delimitar ações dos usuários dependendo do seu papel. Para mais informações clique aqui.

Sumário

Features

  • Controle de organizações e unidades organizacionais
  • Controle de usuários
  • Funcionalidades dentro da conferências configuráveis
  • Customização de interface configurável
  • Gravação da vídeo conferência do client-side e server-side
  • Storage de vídeos gravados
  • Criação de um manifesto de todas as ações ocorridas dentro da conferência
  • Manifesto salvo em blockchain
  • Integração com serviços de blockchain privadas
  • Envio de arquivos referentes a uma videoconferência

Instalação

Usando npm:

$ npm install v4h-client-api

Usando yarn:

$ yarn add v4h-client-api

Usando jsDelivr CDN:

<script src="https://cdn.jsdelivr.net/gh/leossoaress/v4h-client-api@0.0.1/V4HApi.min.js"></script>

Client API

A client API deve ser definida da seguinte forma para ser utilizada:

const v4h = new V4HApi();
v4h.setup(options);

Options:

  • login: [opcional] string de identificação para login no sistema
  • password: [opcional] senha para login no sistema

Após o setup você estará disponível para accessar as classes que serão descritas abaixo.

Session

Classe com os métodos das sessões de conferência.

create(data)

Método responsável por criar uma sessão

const v4h = new V4HApi();
v4h.setup({ login: 'usuario', senha: 'senha' });

const data = {
  profileId: 1,
  skinId: 1,
  orgUnit: 1,
  joinPolicy: 'PUBLIC',
  listPolicy: 'PUBLIC'
}

cosnt session = v4h.session.create(data).then((response) => {
  console.log(response);
});

data:

  • orgUnit: Identificador da unidade organizacional
  • profileId: Identificador do profile
  • skinId: Identificador do skin da conferência
  • joinPolicy: [opcional] Para acessar (entrar), as seguintes políticas podem ser usadas:
    • ORG: indica que a sessão somente pode acessada por algum usuário da organização
    • ORGUNIT: somente pode acessada por usuários das unidades organizacionais listadas no atributo allowJoinOu
    • RESTRICT: indica que a sessão somente pode ser acessada por usuários previamente cadastrados
    • PUBLIC: Indica que o acesso à sessão não requer um usuário credenciado
    • SESSIONPWD: entra apenas informando a password da sessão
  • listPolicy: [opcional] Define como a sessão é enxergada por usuários cadastrados ou públicos na internet.
    • PUBLIC: a sessão pode aparecer em uma lista pública
    • SHARED: a sessão pode aparecer em uma lista apenas para usuários da organização
    • PRIVATE: a sessão nunca aparece em listas, exceto com autenticação de usuários e permissão verificada para listar
  • password: [opcional] senha de acesso da sessão
  • allowJoinOu: [opcional] array de unidades organizacionais

Retorno:

{
  id: 1
}

getAll()

Método responsável por recuperar todas as sessões criadas.

const v4h = new V4HApi();
v4h.setup({ login: 'usuario', senha: 'senha' });

v4h.session.getAll().then((sessions) => {
  console.log(sessions);
});

Retorno:

[{
  id: 1,
  orgId: 1,
  ouId: 1,
  profileId: 1,
  skinId: 1,
  finished: null,
  firstJoin: null,
  started: null,
  status: "READY"
}]

get(sessionId)

Método responsável por recuperar informações de uma única sessão.

const v4h = new V4HApi();
v4h.setup({ login: 'usuario', senha: 'senha' });

const sessionId = 1;

v4h.session.get(sessionId).then((session) => {
  console.log(session);
});

Retorno:

{
  id: 1,
  orgId: 1,
  ouId: 1,
  profileId: 1,
  skinId: 1,
  finished: null,
  firstJoin: null,
  started: null,
  status: "READY"
}

update(sessionId, data)

Método responsável por atualizar informações de uma sessão pelo identificador único da sessão.

const v4h = new V4HApi();
v4h.setup({ login: 'usuario', senha: 'senha' });

const sessionId = 1;

const data = {
  alias: "organizacao de teste",
};

v4h.session.update(sessionId, data).then((response) => {
  console.log(response);
});

data:

  • orgUnit: [opcional] Identificador da unidade organizacional
  • profileId: [opcional] Identificador do profile
  • skinId: [opcional] Identificador do skin da conferência
  • joinPolicy: [opcional] Para acessar (entrar), as seguintes políticas podem ser usadas:
    • ORG: indica que a sessão somente pode acessada por algum usuário da organização
    • ORGUNIT: somente pode acessada por usuários das unidades organizacionais listadas no atributo allowJoinOu
    • RESTRICT: indica que a sessão somente pode ser acessada por usuários previamente cadastrados
    • PUBLIC: Indica que o acesso à sessão não requer um usuário credenciado
    • SESSIONPWD: entra apenas informando a password da sessão
  • listPolicy: [opcional] Define como a sessão é enxergada por usuários cadastrados ou públicos na internet.
    • PUBLIC: a sessão pode aparecer em uma lista pública
    • SHARED: a sessão pode aparecer em uma lista apenas para usuários da organização
    • PRIVATE: a sessão nunca aparece em listas, exceto com autenticação de usuários e permissão verificada para listar
  • password: [opcional] senha de acesso da sessão
  • allowJoinOu: [opcional] array de unidades organizacionais

Retorno:

true or false

delete(sessionId)

Método responsável por deletar uma sessão.

const v4h = new V4HApi();
v4h.setup({ login: 'usuario', senha: 'senha' });

const sessionId = 1;

v4h.session.delete(sessionId).then((response) => {
  console.log(response);
});

Retorno:

true or false

startConference(sessionId, options)

Método para iniciar a conferência em uma div do sistema que está sendo utilizado, esse método não está disponível se for executado utilizando node.

const v4h = new V4HApi();
v4h.setup({ login: 'usuario', senha: 'senha' });

const sessionId = 1;

const options = {
  parentNode: document.getElementById('meet'), 
  userInfo: { 
    displayName: 'Leoberto' 
  }
}

v4h.session.startConference(sessionId, options).then((response) => {
  console.log(response);
});

options

  • parentNode: div html onde deverá ser colocado o v4h
  • width: [opcional] tamanho em pixels da largura da tela de vídeo conferência
  • height: [opcional] tamanho em pixels da altura tela de vídeo conferência
  • userInfo: [opcional] objeto com informações do usuário
    • displayName: [opcional] nome do usuário que será mostrado na tela

stopConference()

Método para encerrrar uma conferência, esse método não está disponível se for executado utilizando node e só terá efeito quando a conferência já estiver aberta.

const v4h = new V4HApi();
v4h.setup({ login: 'usuario', senha: 'senha' });

const sessionId = 1;

v4h.session.stopConference().then(() => {
  console.log('ok');
});

Organização

Sessões de conferência são criadas por usuários de uma organização. Esta entidade é a base que permite especialização futura para pessoa física ou pessoa jurídica.

create(data)

Método responsável por criar uma organização

const v4h = new V4HApi();
v4h.setup({ login: 'usuario', senha: 'senha' });

const data = {
  shortname: "organização",
  planId: 1,
  fullname: "organizacao LTDA",
  alias: "organizacao de teste",
  admin: 1,
  type: "J",
  reg: "12345678912"
};

cosnt org = v4h.org.create(data).then((response) => {
  console.log(org);
});

data:

  • shortname: Nome curto – usado para ocasiões com pouco espaço
  • planId: O plano ao qual a organização está vinculada
  • fullName: Nome completo ou razão social
  • alias: [opcional] Nome de fantasia
  • admin: id do usuário administrador da organização
  • type: Pessoa física ou jurídica
  • reg: Identificador do registro (CNPJ ou CPF)
  • logo: [opcional] URL externa para logo

Retorno:

{
  id: 1
}

getAll()

Método responsável por recuperar todas as organizações criadas

const v4h = new V4HApi();
v4h.setup({ login: 'usuario', senha: 'senha' });

v4h.org.getAll().then((org) => {
  console.log(org);
});

Retorno:

[{
  id: 1,
  shortname: "organização",
  planId: 1,
  fullname: "organizacao LTDA",
  alias: "organizacao de teste",
  admin: 1,
  type: "J",
  reg: "12345678912",
  logo: null
}]

get(orgId)

Método responsável por recuperar informações de uma única organiação pela identificador único da organização.

const v4h = new V4HApi();
v4h.setup({ login: 'usuario', senha: 'senha' });

const orgId = 1;

v4h.org.get(orgId).then((org) => {
  console.log(org);
});

Retorno:

{
  id: 1,
  shortname: "organização",
  planId: 1,
  fullname: "organizacao LTDA",
  alias: "organizacao de teste",
  admin: 1,
  type: "J",
  reg: "12345678912",
  logo: null
}

update(orgId, data)

Método responsável por atualizar informações de uma organiação pelo identificador único da organização.

const v4h = new V4HApi();
v4h.setup({ login: 'usuario', senha: 'senha' });

const orgId = 1;

const data = {
  alias: "organizacao de teste",
};

v4h.org.update(orgId, data).then((response) => {
  console.log(response);
});

data:

  • shortname: [opcional] Nome curto – usado para ocasiões com pouco espaço
  • planId: [opcional] O plano ao qual a organização está vinculada
  • fullName: [opcional] Nome completo ou razão social
  • alias: [opcional] Nome de fantasia
  • admin: [opcional] id do usuário administrador da organização
  • type: [opcional] Pessoa física ou jurídica
  • reg: [opcional] Identificador do registro (CNPJ ou CPF)
  • logo: [opcional] URL externa para logo

Retorno:

true or false

delete(orgId)

Método responsável por deletar uma organização.

const v4h = new V4HApi();
v4h.setup({ login: 'usuario', senha: 'senha' });

const orgId = 1;

v4h.org.delete(orgId).then((response) => {
  console.log(response);
});

Retorno:

true or false

getAllSessions(orgId)

Método responsável por recuperar todas as sessões de uma organização

const v4h = new V4HApi();
v4h.setup({ login: 'usuario', senha: 'senha' });

v4h.org.getAllSessions().then((sessions) => {
  console.log(sessions);
});

retorno:

[{
  id: 1,
  orgId: 1,
  ouId: 1,
  profileId: 1,
  skinId: 1,
  finished: null,
  firstJoin: null,
  started: null,
  status: "READY"
}]

Unidade organizacional

Organizações maiores podem ter unidades organizacionais (departamentos) ou centros de custo ou projetos que usam o serviço.

create(data)

Método responsável por criar uma unidade organização

const v4h = new V4HApi();
v4h.setup({ login: 'usuario', senha: 'senha' });

const data = {
  name: "unidade_organização",
  orgId: 1,
  descr: "unidade organização de teste",
  admin: 1,
};

cosnt org = v4h.orgUnit.create(data).then((response) => {
  console.log(orgUnit);
});

data:

  • name: Nome curto da unidade organizacional
  • orgId: Identificador único da organização a qual essa orgUnit pertencerá
  • descr: [opcional] Descrição da unidade organizacional
  • admin: id do usuário administrador da unidade organização
  • logoUrl: [opcional] URL externa para logo
  • parent: [opcional] Identificador de outra unidade organizacional na qual essa será submissa.

Retorno:

{
  id: 1
}

getAll()

Método responsável por recuperar todas as unidades organizações

const v4h = new V4HApi();
v4h.setup({ login: 'usuario', senha: 'senha' });

v4h.orgUnit.getAll().then((orgUnits) => {
  console.log(orgUnits);
});

Retorno:

[{
  id: 1,
  name: "unidade_organização",
  orgId: 1,
  descr: "unidade organização de teste",
  admin: 1,
  parent: null,
  logoUrl: null
}]

get(ouId)

Método responsável por recuperar informações de uma única unidade organizacional pelo seu identificador único.

const v4h = new V4HApi();
v4h.setup({ login: 'usuario', senha: 'senha' });

const ouId = 1;

v4h.orgUnit.get(ouId).then((orgUnit) => {
  console.log(orgUnit);
});

Retorno:

{
  id: 1,
  name: "unidade_organização",
  orgId: 1,
  descr: "unidade organização de teste",
  admin: 1,
  parent: null,
  logoUrl: null
}

update(ouId, data)

Método responsável por atualizar informações de uma unidade organizacional.

const v4h = new V4HApi();
v4h.setup({ login: 'usuario', senha: 'senha' });

const ouId = 1;

const data = {
  descr: "organizacao de teste",
};

v4h.org.update(ouId, data).then((response) => {
  console.log(response);
});

data:

  • name: [opcional] Nome curto da unidade organizacional
  • descr: [opcional] Descrição da unidade organizacional
  • admin: [opcional] id do usuário administrador da unidade organização
  • logoUrl: [opcional] URL externa para logo
  • parent: [opcional] Identificador de outra unidade organizacional na qual essa será submissa.

Retorno:

true or false

delete(ouId)

Método responsável por deletar uma unidade organizacional.

const v4h = new V4HApi();
v4h.setup({ login: 'usuario', senha: 'senha' });

const ouId = 1;

v4h.orgUnit.delete(ouId).then((response) => {
  console.log(response);
});

Retorno:

true or false

getAllSessions(orgId)

Método responsável por recuperar todas as sessões de uma organização

const v4h = new V4HApi();
v4h.setup({ login: 'usuario', senha: 'senha' });

v4h.org.getAllSessions().then((sessions) => {
  console.log(sessions);
});

retorno:

[{
  id: 1,
  orgId: 1,
  ouId: 1,
  profileId: 1,
  skinId: 1,
  finished: null,
  firstJoin: null,
  started: null,
  status: "READY"
}]