Consulta de detalhes da versão de API
Função
Esta API é usada para consultar os detalhes de uma versão de API especificada.
URI
GET /v2/{project_id}/apigw/instances/{instance_id}/apis/versions/{version_id}
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
project_id |
Sim |
String |
ID do projeto. Para obter detalhes sobre como obter um ID de projeto, consulte "Apêndice" > "Obtenção de um ID de projeto" neste documento. |
instance_id |
Sim |
String |
ID do gateway, que pode ser obtido a partir das informações de gateway no console do APIG. |
version_id |
Sim |
String |
Versão da API. |
Parâmetros de solicitação
Parâmetro |
Obrigatório |
Tipo |
Descrição |
---|---|---|---|
X-Auth-Token |
Sim |
String |
Token do usuário. Ele pode ser obtido chamando a API do IAM usada para obter um token de usuário. O valor de X-Subject-Token no cabeçalho da resposta é um token. |
Parâmetros de resposta
Código de status: 200
Parâmetro |
Tipo |
Descrição |
---|---|---|
name |
String |
Nome da API. Pode conter de 3 a 64 caracteres, começando com uma letra. Apenas letras, dígitos e sublinhados (_) são permitidos. |
type |
Integer |
Tipo de API.
Valores de enumeração:
|
version |
String |
Versão da API. Máximo: 16 |
req_protocol |
String |
Protocolo de solicitação.
Padrão: HTTPS Valores de enumeração:
|
req_method |
String |
Método de solicitação. Valores de enumeração:
|
req_uri |
String |
Solicitar endereço. Ele pode conter parâmetros de solicitação entre colchetes ({}). Por exemplo, /getUserInfo/{userId}. Caracteres especiais, como asteriscos (*), sinais de porcentagem (%), hifens (-) e sublinhados (_), são permitidos. Pode conter um máximo de 512 caracteres e deve estar em conformidade com as especificações de URI.> O valor deve estar em conformidade com as especificações de URI. |
auth_type |
String |
Modo de autenticação da API.
Valores de enumeração:
|
auth_opt |
AuthOpt object |
Parâmetro de autenticação de segurança. |
cors |
Boolean |
Indica se o CORS é suportado.
Padrão: false Valores de enumeração:
|
match_mode |
String |
Modo de correspondência de rota.
O valor padrão é NORMAL. Valores de enumeração:
|
backend_type |
String |
Tipo de back-end.
Valores de enumeração:
|
remark |
String |
Descrição da API. Não pode exceder 255 caracteres. |
group_id |
String |
ID do grupo de APIs ao qual a API pertence. |
body_remark |
String |
Corpo de solicitação da API, que pode ser um exemplo de corpo de solicitação, tipo de mídia ou parâmetros. Certifique-se de que o corpo da solicitação não exceda os caracteres 20.480. |
result_normal_sample |
String |
Exemplo de resposta para uma solicitação bem-sucedida. O valor não pode exceder 20.480 caracteres. |
result_failure_sample |
String |
Exemplo de resposta para uma solicitação com falha O valor não pode exceder 20.480 caracteres. |
authorizer_id |
String |
ID do autorizador personalizado do front-end. |
tags |
Array of strings |
Tags. O valor pode conter apenas letras, dígitos e sublinhados (_), e deve começar com uma letra. Você pode inserir várias tags e separá-las com vírgulas (,). Mínimo: 1 Máximo: 128 |
response_id |
String |
ID de resposta do grupo. |
roma_app_id |
String |
ID da aplicação de integração. Atualmente, este parâmetro não é suportado. |
domain_name |
String |
Nome de domínio personalizado vinculado à API. Atualmente, este parâmetro não é suportado. |
tag |
String |
Tag. Este campo será depreciado. Você pode usar o campo de tags em vez disso. |
content_type |
String |
Tipo de conteúdo de solicitação:
Atualmente, este parâmetro não é suportado. Valores de enumeração:
|
id |
String |
ID da API. |
status |
Integer |
Status de aplicação.
|
arrange_necessary |
Integer |
Indica se a orquestração deve ser ativada. |
register_time |
String |
Hora em que a API é registrada. |
update_time |
String |
Hora em que a API foi modificada pela última vez. |
group_name |
String |
Nome do grupo de APIs ao qual a API pertence. |
group_version |
String |
Versão do grupo de APIs ao qual a API pertence. O valor padrão é V1. Outras versões não são suportadas. Padrão: V1 |
run_env_id |
String |
ID do ambiente no qual a API foi publicada. Separe vários IDs de ambiente com barras verticais (|). |
run_env_name |
String |
Nome do ambiente no qual a API foi publicada. Separar vários nomes de ambiente com barras verticais (|). |
publish_id |
String |
ID do registro da publicação. Separe vários IDs de registro de publicação com barras verticais (|). |
publish_time |
String |
Hora em que a versão da API é publicada. |
roma_app_name |
String |
Nome da aplicação de integração ao qual a API pertence. Atualmente, este parâmetro não é suportado. |
ld_api_id |
String |
ID da API de back-end personalizada correspondente. Atualmente, este parâmetro não é suportado. |
backend_api |
BackendApi object |
Detalhes do back-end da Web. |
api_group_info |
ApiGroupCommonInfo object |
Informações do grupo de APIs. |
func_info |
ApiFunc object |
Detalhes do back-end do FunctionGraph. |
mock_info |
ApiMock object |
Detalhes do back-end fictício. |
req_params |
Array of ReqParam objects |
Parâmetros de solicitação. |
backend_params |
Array of BackendParam objects |
Parâmetros de back-end. |
policy_functions |
Array of ApiPolicyFunctionResp objects |
Políticas de back-end do FunctionGraph. |
policy_mocks |
Array of ApiPolicyMockResp objects |
Mock políticas de back-end. |
policy_https |
Array of ApiPolicyHttpResp objects |
Políticas de back-end da Web. |
sl_domain |
String |
Nome do subdomínio que o API Gateway aloca automaticamente para o grupo de API. |
sl_domains |
Array of strings |
Nomes do subdomínio que o APIG aloca automaticamente ao grupo da API. |
version_id |
String |
ID da versão de API. |
Parâmetro |
Tipo |
Descrição |
---|---|---|
app_code_auth_type |
String |
Indica se a autenticação de AppCode está habilitada. Este parâmetro é válido somente se auth_type for definido como App. O valor padrão é DISABLE.
Padrão: DISABLE Valores de enumeração:
|
Parâmetro |
Tipo |
Descrição |
---|---|---|
authorizer_id |
String |
ID do autorizador personalizado de back-end. |
url_domain |
String |
Endereço de serviço de back-end. Pode consistir em um nome de domínio ou endereço IP e um número de porta, com não mais de 255 caracteres. Deve estar no formato "Nome do host: número da porta", por exemplo, apig.example.com:7443. Se o número da porta não for especificado, a porta HTTPS padrão 443 ou a porta HTTP padrão 80 será usada. Variáveis de ambiente são suportadas. Cada um deve começar com uma letra e pode consistir de 3 a 32 caracteres. Apenas letras, números, hifens (-) e sublinhados (_) são permitidos. |
req_protocol |
String |
Protocolo de solicitação. Valores de enumeração:
|
remark |
String |
Descrição. Não pode exceder 255 caracteres. |
req_method |
String |
Método de solicitação. Valores de enumeração:
|
version |
String |
Versão de back-end da Web, que pode conter no máximo 16 caracteres. |
req_uri |
String |
Solicitar endereço. Ele pode conter parâmetros de solicitação entre colchetes ({}). Por exemplo, /getUserInfo/{userId}. Caracteres especiais, como asteriscos (*), sinais de porcentagem (%), hífens (-) e sublinhados (), são permitidos.Ele pode conter um máximo de 512 caracteres e deve estar em conformidade com as especificações de URI. Variáveis de ambiente são suportadas. Cada um deve começar com uma letra e pode consistir de 3 a 32 caracteres. Somente letras, dígitos, hifens (-) e sublinhados () são permitidos.> O valor deve estar de acordo com as especificações de URI. |
timeout |
Integer |
Tempo limite permitido para o APIG solicitar o serviço de back-end. Você pode definir o tempo limite máximo usando o item de configuração backend_timeout. O valor máximo é 600.000. Unidade: ms. Mínimo: 1 |
enable_client_ssl |
Boolean |
Indica se a autenticação bidirecional deve ser ativada. |
retry_count |
String |
Número de tentativas de nova tentativa para solicitar o serviço de back-end. O valor padrão é -1. O valor varia de -1 a 10. Padrão: -1 |
id |
String |
ID. |
status |
Integer |
Status do serviço de back-end.
|
register_time |
String |
Tempo de registro. |
update_time |
String |
Hora da atualização. |
vpc_channel_info |
VpcInfo object |
Detalhes do canal da VPC. Este parâmetro é necessário se vpc_channel_status estiver definido como 1. |
vpc_channel_status |
Integer |
Indica se um canal da VPC deve ser usado.
|
Parâmetro |
Tipo |
Descrição |
---|---|---|
id |
String |
ID. |
name |
String |
Nome do grupo de APIs. |
status |
Integer |
Estado.
Valores de enumeração:
|
sl_domain |
String |
Nome do subdomínio que o APIG aloca automaticamente ao grupo da API. |
register_time |
String |
Tempo de criação. |
update_time |
String |
Hora da última modificação. |
on_sell_status |
Integer |
Indica se o grupo de APIs foi listado no KooGallery.
|
url_domains |
Array of UrlDomain objects |
Nomes de domínio independentes vinculados ao grupo de APIs. |
Parâmetro |
Tipo |
Descrição |
---|---|---|
id |
String |
ID do domínio. |
domain |
String |
Nome de domínio. |
cname_status |
Integer |
Status de resolução CNAME do nome de domínio.
|
ssl_id |
String |
ID do certificado SSL. |
ssl_name |
String |
Nome do certificado SSL. |
min_ssl_version |
String |
Versão SSL mínima. TLS 1.1 e TLS 1.2 são suportados. Padrão: TLSv1.1 Valores de enumeração:
|
Parâmetro |
Tipo |
Descrição |
---|---|---|
function_urn |
String |
Função URN. |
remark |
String |
Descrição. Não pode exceder 255 caracteres. |
invocation_type |
String |
Modo de invocação.
Valores de enumeração:
|
network_type |
String |
Arquitetura de rede de função.
Valores de enumeração:
|
version |
String |
Versão da função. Se um alias de função URN e versão forem passados, apenas o alias URN será usado. Máximo: 64 |
alias_urn |
String |
Apelido de função URN. Se tanto um alias de função URN e versão forem passados, o alias URN será usado e a versão será ignorada. |
tempo limite |
Inteiro |
Tempo limite permitido para o APIG solicitar o serviço de back-end. Você pode definir o tempo limite máximo usando o item de configuração backend_timeout. O valor máximo é 600.000. Unidade: ms. Mínimo: 1 |
authorizer_id |
String |
ID de autorizador personalizado de back-end. |
id |
String |
ID. |
register_time |
String |
Tempo de registro. |
status |
Integer |
Status do serviço de back-end.
|
update_time |
String |
Hora da atualização. |
Parâmetro |
Tipo |
Descrição |
---|---|---|
remark |
String |
Descrição. Não pode exceder 255 caracteres. |
result_content |
String |
Resposta. |
version |
String |
Versão da função. Não pode exceder 64 caracteres. |
authorizer_id |
String |
ID de autorizador personalizado de back-end. |
id |
String |
ID. |
register_time |
String |
Tempo de registro. |
status |
Integer |
Status do serviço de back-end.
|
update_time |
String |
Hora da atualização. |
Parâmetro |
Tipo |
Descrição |
---|---|---|
name |
String |
Nome do parâmetro. O nome do parâmetro pode conter de 1 a 32 caracteres e deve começar com uma letra. Apenas letras, dígitos, hifens (-), sublinhados (_) e pontos (.) são permitidos. |
type |
String |
Tipo de parâmetro. Valores de enumeração:
|
location |
String |
Localização do parâmetro. Valores de enumeração:
|
default_value |
String |
Valor padrão. |
sample_value |
String |
Exemplo de valor. |
required |
Integer |
Indica se o parâmetro é obrigatório. 1: sim 2: não O valor desse parâmetro é 1 se Localização for definido como PATH e 2 se Localização for definido como outro valor. Valores de enumeração:
|
valid_enable |
Integer |
Indica se a verificação de validade está habilitada.
Padrão: 2 Valores de enumeração:
|
remark |
String |
Descrição. Não pode exceder 255 caracteres. |
enumerations |
String |
Valor enumerado. |
min_num |
Integer |
Valor mínimo. Este parâmetro é válido quando tipo é definido como NUMBER. |
max_num |
Integer |
Valor máximo. Este parâmetro é válido quando tipo é definido como NUMBER. |
min_size |
Integer |
Comprimento mínimo. Este parâmetro é válido quando tipo é definido como STRING. |
max_size |
Integer |
Comprimento máximo. Este parâmetro é válido quando tipo é definido como STRING. |
regular |
String |
Regra de validação de expressão regular. Atualmente, este parâmetro não é suportado. |
json_schema |
String |
Regra de validação JSON. Atualmente, este parâmetro não é suportado. |
pass_through |
Integer |
Indica se o parâmetro deve ser transferido de forma transparente. 1: sim 2: não Valores de enumeração:
|
id |
String |
ID do parâmetro. |
Parâmetro |
Tipo |
Descrição |
---|---|---|
function_urn |
String |
Função URN. |
invocation_type |
String |
Modo de invocação.
Valores de enumeração:
|
network_type |
String |
Arquitetura de rede de função.
Valores de enumeração:
|
version |
String |
Versão da função. Se tanto um alias de função URN e versão forem passados, o alias URN será usado e a versão será ignorada. Máximo: 64 |
alias_urn |
String |
Alias de função URN. Se tanto um alias de função URN e versão forem passados, o alias URN será usado e a versão será ignorada. |
timeout |
Integer |
Tempo limite permitido para o APIG solicitar o serviço de back-end. Você pode definir o tempo limite máximo usando o item de configuração backend_timeout. O valor máximo é 600.000. Unidade: ms. Mínimo: 1 |
id |
String |
ID. |
effect_mode |
String |
Modo efetivo da política de back-end.
Valores de enumeração:
|
name |
String |
Nome do back-end, que deve começar com uma letra e pode conter letras, dígitos e sublinhados (_). Mínimo: 3 Máximo: 64 |
backend_params |
Array of BackendParam objects |
Parâmetros de back-end. |
conditions |
Array of CoditionResp objects |
Condições de políticas. |
authorizer_id |
String |
ID de autorizador personalizado de back-end. |
Parâmetro |
Tipo |
Descrição |
---|---|---|
id |
String |
ID. |
effect_mode |
String |
Modo efetivo da política de back-end.
Valores de enumeração:
|
name |
String |
Nome do back-end, que deve começar com uma letra e pode conter letras, dígitos e sublinhados (_). Mínimo: 3 Máximo: 64 |
backend_params |
Array of BackendParam objects |
Parâmetros de back-end. |
conditions |
Array of CoditionResp objects |
Condições de políticas. |
authorizer_id |
String |
ID de autorizador personalizado de back-end. |
result_content |
String |
Respostas. |
Parâmetro |
Tipo |
Descrição |
---|---|---|
id |
String |
ID. |
effect_mode |
String |
Modo efetivo da política de back-end.
Valores de enumeração:
|
name |
String |
Nome do back-end, que deve começar com uma letra e pode conter letras, dígitos e sublinhados (_). Mínimo: 3 Máximo: 64 |
backend_params |
Array of BackendParam objects |
Parâmetros de back-end. |
conditions |
Array of CoditionResp objects |
Condições de políticas. |
authorizer_id |
String |
ID de autorizador personalizado de back-end. |
url_domain |
String |
Ponto de extremidade do back-end da política. Ele pode consistir em um nome de domínio ou endereço IP e um número de porta, com não mais de 255 caracteres. Deve estar no formato "Nome do domínio: número da porta", por exemplo, apig.example.com: 7443. Se o número da porta não for especificado, a porta HTTPS padrão 443 ou a porta HTTP padrão 80 será usada. Variáveis de ambiente são suportadas. Cada um deve começar com uma letra e pode consistir de 3 a 32 caracteres. Apenas letras, números, hifens (-) e sublinhados (_) são permitidos. |
req_protocol |
String |
Protocolo de solicitação. O valor pode ser HTTP ou HTTPS. Valores de enumeração:
|
req_method |
String |
Método de solicitação. Opções: GET, POST, PUT, DELETE, HEAD, PATCH, OPTIONS, ANY. Valores de enumeração:
|
req_uri |
String |
Solicitar endereço. Ele pode conter parâmetros de solicitação entre colchetes ({}). Por exemplo, /getUserInfo/{userId}. Caracteres especiais, como asteriscos (*), sinais de porcentagem (%), hífens (-) e sublinhados (), são permitidos.Ele pode conter um máximo de 512 caracteres e deve estar em conformidade com as especificações de URI. Variáveis de ambiente são suportadas. Cada um deve começar com uma letra e pode consistir de 3 a 32 caracteres. Somente letras, dígitos, hifens (-) e sublinhados () são permitidos.> O valor deve estar de acordo com as especificações de URI. |
timeout |
Integer |
Tempo limite permitido para o APIG solicitar o serviço de back-end. Você pode definir o tempo limite máximo usando o item de configuração backend_timeout. O valor máximo é 600.000. Unidade: ms. Mínimo: 1 |
retry_count |
String |
Número de tentativas de nova tentativa para solicitar o serviço de back-end. O valor padrão é -1. O valor varia de -1 a 10. Padrão: -1 |
vpc_channel_info |
VpcInfo object |
Detalhes do canal da VPC. Este parâmetro é necessário se vpc_channel_status estiver definido como 1. |
vpc_channel_status |
Integer |
Indica se um canal da VPC deve ser usado.
|
Parâmetro |
Tipo |
Descrição |
---|---|---|
origin |
String |
Tipo de parâmetro.
Valores de enumeração:
|
name |
String |
Nome do parâmetro. O nome do parâmetro deve começar com uma letra e só pode conter letras, dígitos, hifens (-) sublinhados (_), e pontos (.). Mínimo: 1 Máximo: 32 |
remark |
String |
Descrição, que pode conter no máximo 255 caracteres. |
location |
String |
Localização do parâmetro. O valor pode ser PATH, QUERY ou HEADER. Valores de enumeração:
|
value |
String |
Valor do parâmetro, que pode conter no máximo 255 caracteres. Se o tipo de origem estiver REQUEST, o valor deste parâmetro será o nome do parâmetro em req_params. Se o tipo de origem estiver CONSTANT, o valor é uma constante. Se o tipo de origem estiver SYSTEM, o valor é um nome de parâmetro do sistema. Os parâmetros do sistema incluem parâmetros de gateway, parâmetros de autenticação de front-end e parâmetros de autenticação de back-end. Você pode definir os parâmetros de autenticação de front-end ou back-end depois de ativar a autenticação personalizada de front-end ou back-end. Os parâmetros de gateway são os seguintes:
Parâmetro de autenticação fron-tend: prefixado com "$context.authorizer.frontend.". Por exemplo, para retornar "aaa" após uma autenticação personalizada bem-sucedida, defina esse parâmetro como "$context.authorizer.frontend.aaa". Parâmetro de autenticação de back-end: prefixado com "$context.authorizer.backend.". Por exemplo, para retornar "aaa" após uma autenticação personalizada bem-sucedida, defina esse parâmetro como "$context.authorizer.backend.aaa". |
id |
String |
ID do parâmetro. |
req_param_id |
String |
ID do parâmetro de solicitação. |
Parâmetro |
Tipo |
Descrição |
---|---|---|
req_param_name |
String |
Nome do parâmetro de entrada. Este parâmetro é necessário se o tipo de política for param. |
condition_type |
String |
Condição de política.
Este parâmetro é necessário se o tipo de política for param. Valores de enumeração:
|
condition_origin |
String |
Tipo de política.
Valores de enumeração:
|
condition_value |
String |
Valor da condição. |
id |
String |
ID. |
req_param_id |
String |
ID do parâmetro de entrada. |
req_param_location |
String |
Localização do parâmetro de entrada. |
Parâmetro |
Tipo |
Descrição |
---|---|---|
ecs_id |
String |
ID do servidor em nuvem. |
ecs_name |
String |
Nome do servidor em nuvem. |
cascade_flag |
Boolean |
Indica se o modo em cascata deve ser usado. Atualmente, este parâmetro não é suportado. |
vpc_channel_proxy_host |
String |
Host do proxy. |
vpc_channel_id |
String |
ID do canal da VPC. |
vpc_channel_port |
Integer |
Porta do canal da VPC. |
Código de status: 401
Parâmetro |
Tipo |
Descrição |
---|---|---|
error_code |
String |
Código de erro. |
error_msg |
String |
Mensagem de erro. |
Código de status: 403
Parâmetro |
Tipo |
Descrição |
---|---|---|
error_code |
String |
Código de erro. |
error_msg |
String |
Mensagem de erro. |
Código de status: 404
Parâmetro |
Tipo |
Descrição |
---|---|---|
error_code |
String |
Código de erro. |
error_msg |
String |
Mensagem de erro. |
Código de status: 500
Parâmetro |
Tipo |
Descrição |
---|---|---|
error_code |
String |
Código de erro. |
error_msg |
String |
Mensagem de erro. |
Exemplo de solicitações
Nenhum
Exemplo de respostas
Código de status: 200
OK
{ "name" : "Api_http", "type" : 1, "version" : "V0.0.1", "req_protocol" : "HTTPS", "req_method" : "GET", "req_uri" : "/test/http", "auth_type" : "AUTHORIZER", "auth_opt" : [ { "app_code_auth_type" : "DISABLE" } ], "authorizer_id" : "8d0443832a194eaa84244e0c1c1912ac", "cors" : false, "match_mode" : "NORMAL", "backend_type" : "HTTP", "group_id" : "c77f5e81d9cb4424bf704ef2b0ac7600", "result_normal_sample" : "Example success response", "result_failure_sample" : "Example failure response", "id" : "5f918d104dc84480a75166ba99efff21", "status" : 1, "arrange_necessary" : 2, "remark" : "Web backend API", "register_time" : "2020-07-31T12:42:51Z", "update_time" : "2020-08-02T16:32:47.046289Z", "group_name" : "api_group_001", "run_env_name" : "RELEASE", "run_env_id" : "DEFAULT_ENVIRONMENT_RELEASE_ID", "sl_domain" : "c77f5e81d9cb4424bf704ef2b0ac7600.apic.****.com", "sl_domains" : [ "c77f5e81d9cb4424bf704ef2b0ac7600.apic.****.com", "c77f5e81d9cb4424bf704ef2b0ac7600.apic.****.cn" ], "version_id" : "ee1a5a38d3d3493abf1dc4ed6cacfa0b", "publish_time" : "2020-08-03T01:36:00Z", "backend_api" : { "url_domain" : "56a7d7358e1b42459c9d730d65b14e59", "req_protocol" : "HTTPS", "req_method" : "GET", "req_uri" : "/test/benchmark", "timeout" : 5000, "id" : "1ce8fda3586d4371bd83c955df37e102", "status" : 1, "register_time" : "2020-07-31T12:42:51Z", "update_time" : "2020-08-02T16:32:47.077029Z", "vpc_channel_status" : 1, "vpc_channel_info" : { "cascade_flag" : false, "vpc_channel_id" : "56a7d7358e1b42459c9d730d65b14e59", "vpc_channel_proxy_host" : "www.example.com", "vpc_channel_port" : 0 }, "retry_count" : "-1" }, "backend_params" : [ { "name" : "X-CONSTANT-HEADER", "location" : "HEADER", "origin" : "CONSTANT", "value" : "demo", "remark" : "constant_demo", "id" : "8cb2eba19e7a4423a4e835647a8b8d76" }, { "name" : "app-id", "location" : "HEADER", "origin" : "SYSTEM", "value" : "$context.appId", "remark" : "App ID of the API caller", "id" : "216ddda836e74d528f364ff589d9dd21" } ] }
Código de status: 401
Não autorizado
{ "error_code" : "APIG.1002", "error_msg" : "Incorrect token or token resolution failed" }
Código de status: 403
Proibido
{ "error_code" : "APIG.1005", "error_msg" : "No permissions to request this method" }
Código de status: 404
Não encontrado
{ "error_code" : "APIG.3022", "error_msg" : "The API version does not exist,id:ee1a5a38d3d3493abf1dc4ed6cacfa0b" }
Código de status: 500
Erro do servidor interno
{ "error_code" : "APIG.9999", "error_msg" : "System error" }
Códigos de status
Código de status |
Descrição |
---|---|
200 |
OK |
401 |
Não autorizado |
403 |
Proibido |
404 |
Não encontrado |
500 |
Erro do servidor interno |
Códigos de erro
Consulte Códigos de erro.