Перейти к содержанию

Сервис "Реестр ключей"

Сервис реестра ключей предназначен для управления данными о RFID-ключах на платформе "Ключ". Сервис позволяет:

  • добавлять и/или изменять записи об изготовленных RFID-ключах;
  • получать данные о RFID-ключах из реестра ключей.

Каждая запись в реестре ключей хранит данные о конкретном физическом RFID-ключе (болванке). Производители таких ключей могут подгружать на сервер данные о новых партиях изготовленных RFID-ключей или изменять данные о своих ключах, которые они ранее заносили в реестр ключей.

В API сервиса реестра ключей используется технология gRPC. Для сериализации структурированных данных применяется язык описания Protocol Buffers версии proto3.

Авторизация

Для доступа к сервисам Key API необходимо использовать токен авторизации. Токен выдаётся по заявке в службу технической поддержки Ростелеком (также вы можете обратиться к сотрудникам платформы "Ключ", с которыми вы контактируете напрямую). У вас должна быть зарегистрирована учётная запись на сайте key.rt.ru.

Способ авторизации:

В заголовке каждого запроса к серверу необходимо указывать токен доступа.

  • Формат заголовка: Authorization: Bearer [токен]

Срок действия токена от 1 месяца до года. В случае, если в ответе вам приходит ошибка 401 --- ошибка аутентификации, это означает, что ваш токен доступа уже недействителен, и вам нужно сгенерировать новый токен. Для получения нового токена обратитесь в службу технической поддержки.

Если для метода с авторизацией отправить запрос без токена доступа или с некорректным токеном, в ответе вернётся код статуса ошибки "16 UNAUTHENTICATED". Это означает, что вам следует использовать корректный токен при формировании запроса на сервер.

Методы сервиса реестра ключей

Метод Описание
PostRecord Добавление или обновление ключа
GetRecord Получение данных о ключе
GetRecordList Получение списка ключей
GetRecordCount Получение количества ключей
DeleteRecord Удаление ключа
GetSystemStatus Проверка состояния сервиса

Пример клиентского приложения

Пример клиентского приложения на C#. В примере показан порядок конфигурирования и использования клиентского SDK Keyapis сервиса Реестр ключей.


rpc PostRecord - Добавление или обновление RFID-ключа в реестре

Требуется авторизация.

Используйте метод PostRecord для добавления или изменения записи о RFID-ключе в реестре ключей:

  • Добавление нового RFID-ключа --- запрос отправляется с уникальным 14-битовым номером ключа uid, но без id-идентификатора ключа. В этом случае сервер создаст уникальный id и добавит новую запись в реестр.
  • Обновление RFID-ключа --- в запросе и в реестре ключей присутствует id ключа. В этом случае обновляются только изменённые атрибуты RFID-ключа в реестре.

uid --- это уникальный номер ключа, который вендор присваивает RFID-ключу у себя на производстве. Формат: 14 бит. Указывается при создании нового RFID-ключа в реестре.

id --- это номер RFID-ключа в реестре на сервере. Тип строка 7 байт в формате GUID. Генерируется сервером при добавлении нового RFID-ключа в реестр, а в дальнейшем используется для обращения к ключу в запросах методов реестра.

После авторизации вы (как производитель) можете изменять только свои ключи, которые вы уже добавляли в реестр с этой же учётной записью.

PostRecordRequest - Запрос добавления/обновления RFID-ключа в реестр ключей.

В качестве тела запроса передаётся JSON-объект с атрибутами нового/обновляемого RFID-ключа, которые помещаются в соответствующую запись в реестре ключей.

Параметры запроса:

Поле Тип Описание
Record объект Обязательный.
Запись в реестре ключей.
Передаваемый на сервер JSON-объект с параметрами нового или обновляемого ключа.

Примеры запроса

Примеры запроса для разных языков
using System.Text.Json;
using Google.Protobuf.WellKnownTypes;
using Grpc.Core;
using Grpc.Net.Client;
using IdentityModel.Client;
using Keyapis.Rfidregistry.V1;

// Формируем gRPC-канал
var credentials = CallCredentials.FromInterceptor((_, metadata) =>
{
    metadata.Add("Authorization", $"Bearer {token}");
    return Task.CompletedTask;
});

using var channel = GrpcChannel.ForAddress(
    // https://openapi-key.deploy.rtkit.dev/keyapis_rfidregistry_v1/
    "https://rfid-registry-staging.k8s.key.rt.ru:443",
    new GrpcChannelOptions
    {
        Credentials = ChannelCredentials.Create(new SslCredentials(), credentials)
    }
);

// Подключаем gRPC-клиент к созданному каналу

var client = new RecordService.RecordServiceClient(channel);

// Для примера cгенерируем uid для RFID-ключа в формате строки 7 байт.
var buffer = new byte[7];
new Random().NextBytes(buffer);
var uid = string.Join(string.Empty, buffer.Select(b => b.ToString("x2").ToUpper()));

// Запрос PostRecord в асинхронном режиме
var postRecordResponse = await client.PostRecordAsync(new PostRecordRequest
{
    Data = new Record
    {
        RfidType = Record.Types.RfidType.Fob,
        EncryptionType = Record.Types.EncryptionType.Sl0,
        Uid = uid,
        StatusType = Record.Types.StatusType.Shipped,
        OrderNumber = "openapi-key-csharp-example",
        OrderAt = DateTime.UtcNow.ToTimestamp()
    }
});

Console.WriteLine($"PostRecordResponse response: {postRecordResponse}\n");

Пример создания ключа в статусе SHIPPED (Отгружен). В данном случае для примера мы генерируем произвольный uid. Вы же будете использовать свой номер ключа uid.

RECORD_UID=$(openssl rand -hex 7 | tr a-z A-Z)
RECORD_ORDER_AT=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
grpcurl -d @ -H "Authorization: Bearer $ACCESS_TOKEN" rfid-registry-staging.k8s.key.rt.ru:443 keyapis.rfidregistry.v1.RecordService.PostRecord <<EOM
{
"record": {
    "rfid_type": "FOB",
    "encryption_type": "SL0",
    "uid": "${RECORD_UID}",
    "status_type": "SHIPPED",
    "order_number": "openapi-key-example",
    "order_at": "${RECORD_ORDER_AT}"
}
}
EOM

PostRecordResponse - Ответ сервера на запрос добавления RFID-ключа.

В ответе возвращается JSON-объект с данными добавленного/обновлённого RFID-ключа или код ошибки в случае некорректного запроса.

Среди атрибутов созданного ключа теперь присутствует идентификатор id (тип GUID), сгенерированный сервером. Используйте его в дальнейшем для обращения к данному RFID-ключу при запросах в реестр ключей.

Поле Описание Тип
Record Запись в реестре, если результат ОК keyapis.rfidregistry.v1.Record
error Ошибка keyapis.rfidregistry.v1.PostRecordResponse.Error

PostRecordResponse.Error

Ошибка запроса сохранения записи с данными RFID-ключа

Поле Описание Тип Признак
validation Ошибка валидации записи keyapis.rfidregistry.v1.Record.ValidationError optional
saving Ошибка фильтрации keyapis.rfidregistry.v1.Record.SavingError optional
aes_key_configuration_item Ошибка в элементе массива конфигурации шифрования ключа keyapis.rfidregistry.v1.Record.AesKeyConfiguration.ItemError optional
data_cell_item Ошибка в элементе cодержимого ячейки ключа записи keyapis.rfidregistry.v1.Record.DataCell.ItemError optional
trailer_item Ошибка в элементе валидации контрольной суммой записи keyapis.rfidregistry.v1.Record.Trailer.ItemError optional
Дополнительная информация
Добавление нового RFID-ключа в реестр

При добавлении в реестр нового RFID-ключа передавайте в запросе номер ключа uid --- это строка длиной 7 байт (14 шестнадцатеричных символов).

После этого для каждого нового RFID-ключа сервер сгенерирует новый уникальный индентификатор id в виде строки 128 бит в формате GUID. В дальнейшем к RFID-ключу в реестре следует обращаться по id.

Метод PostRecord может понадобиться в момент окончания производства RFID-ключей, но до момента отправки их заказчику. В таком случае сохраняйте RFID-ключ в статусе "NEW" (новый) или "SHIPPED" (отгружен) со всеми требуемыми атрибутами.

Сценарий является публичным и требует авторизации.


sequenceDiagram

    autonumber

    participant c as Клиент
    participant rr as Реестр ключей

        c ->> rr: Запрос PostRecordRequest на добавление RFID-ключа
        rr ->> rr: Проверка атрибутов
    alt Атрибуты OK
        %%rect rgb(191, 255, 223)
            rr ->> c: Ответ PostRecordResponse
        %%end
    else Ошибка в атрибутах
        %%rect rgb(255, 223, 223)
            rr ->> c: Ответ gRPC "Error" в случае ошибки
        %%end
    end

Обновление RFID-ключа в реестре

Метод обновления существующего RFID-ключа в реестре ключей.

Если RFID-ключ c ID уже существует в реестре, то по нему обновляются только новые данные (атрибуты), переданные в запросе.

Сценарий описывает взаимодействие с сервисом реестра ключей при изменении статуса RFID-ключа в реестре. При вызове метода PostRecord атрибуты должны соответствовать требованиям, поскольку осуществляется проверка передаваемых атрибутов и статуса.

Изменение статуса RFID-ключа может выполняться при отправке партии заказчику или при переводе RFID-ключа в статус дефективного. Также статус изменяется при удалении ключа.

Сценарий является публичным.


sequenceDiagram

    autonumber

    participant c as Клиент
    participant rr as Реестр ключей

    c ->> rr:  Запрос PostRecordRequest на обновление RFID-ключа
    rr ->> rr: Проверка атрибутов
    alt Аттрибуты OK
        rr ->> rr:  Изменение атрибутов RFID-ключа
        %%rect rgb(191, 255, 223)
            rr ->> c: Ответ GRPC PostRecordResponse
        %%end
    else
        %%rect rgb(255, 223, 223)
            rr ->> c: Ответ GRPC PostRecordResponse в случае ошибки
        %%end
    end

rpc GetRecord - Получение RFID-ключа из реестра

Требуется авторизация.

Метод GetRecord позволяет получать информацию о RFID-ключе из реестра ключей. В ответе содержится объект в формате JSON с полями данных и атрибутами записи в реестре.

Вы можете получать данные только для своих ключей, которые вы ранее уже добавили в реестр ключей под своей учётной записью с токеном доступа.

GetRecordRequest - Запрос RFID-ключа из реестра.

Параметры запроса:

Поле Тип Описание
id string Обязательный.
Идентификатор RFID-ключа в реестре ключей.
Тип: Guid.

В качестве параметра запроса передаётся id-индентификатор ключа в формате строки 7 байт, тип Guid.

Примеры запроса

Примеры запроса для разных языков

Запрос метода GetRecord --- получить данные о RFID-ключе с заданным id. Это несуществующий id для примера. Вы же используйте id только тех ключей, которые вы сами добавили в реестр.

using System.Text.Json;
using Google.Protobuf.WellKnownTypes;
using Grpc.Core;
using Grpc.Net.Client;
using IdentityModel.Client;
using Keyapis.Rfidregistry.V1;

// Record id
var id = "12345678-9ABC-DEF0-0000-000000000000";

var getRecordResponse = await client.GetRecordAsync(new GetRecordRequest
{
    Id = id
});

Console.WriteLine($"GetRecordResponse response: {getRecordResponse}\n");

В этом примере сгенерируем произвольный id для запроса. Вы же используйте id только тех ключей, которые вы сами добавили в реестр.

1
2
3
4
5
6
7
ACCESS_TOKEN="ваш_токен"
RECORD_ID=$(openssl rand -hex 7 | tr a-z A-Z)
grpcurl -d @ -H "Authorization: Bearer $ACCESS_TOKEN" rfid-registry-staging.k8s.key.rt.ru:443 keyapis.rfidregistry.v1.RecordService.GetRecord <<EOM
{
"id": "${RECORD_ID}"
}
EOM

GetRecordResponse - Ответ сервера на запрос RFID-ключа из реестра ключей.
Поле Описание Тип
Record Запись с данными RFID-ключа в реестре, если результат ОК keyapis.rfidregistry.v1.Record
error Ошибка keyapis.rfidregistry.v1.GetRecordResponse.Error

GetRecordResponse.Error

Ошибка запроса RFID-ключа из реестра

Поле Описание Тип Признак
validation Ошибка валидации записи keyapis.rfidregistry.v1.Record.ValidationError optional

rpc GetRecordList - Получение списка RFID-ключей из реестра ключей

Требуется авторизация.

Метод GetRecordList позволяет получить заданный список RFID-ключей. Вы можете использовать полученные данные для постраничного вывода на экран, в файл или иное средство вывода.

В запросе необходимо указать параметры фильтра и постраничного вывода (пагинации). Ответ возвращается в формате потокового (стримингового) сообщения и содержит перечень RFID-ключей для постраничного вывода. Записи извлекаются из реестра, начиная с текущей позиции курсора.

В ответе возвращаются только те записи RFID-ключей, которые вы ранее сохранили в реестр ключей под своей учётной записью с токеном доступа.

GetRecordListRequest - Запрос списка RFID-ключей из реестра ключей.

Параметры запроса:

Поле Тип Описание Значение
filter объект Необязательный.
Перечень отфильтрованных записей в реестре ключей.
1
pagination oneof Необязательный.
Вариант разбиения на страницы.

В случае запроса без параметров сервис вернёт ответ со списком RFID-ключей, отобранных с настройкой фильтрации и сортировки по умолчанию --- самые новые 20 записей по дате добавления в реестр.

Примеры запроса

Примеры запроса для разных языков

Пример запроса GetRecordList для отображения списка ключей.

В качестве параметра передаётся объект фильтра для отбора только нужных RFID-ключей. В данном примере отфильтруем только по номеру ключа uid. Это несуществующий uid для примера фильтрации выборки. Вы же используйте uid ключей, которые сами ранее добавляли в реестр.

using System.Text.Json;
using Google.Protobuf.WellKnownTypes;
using Grpc.Core;
using Grpc.Net.Client;
using IdentityModel.Client;
using Keyapis.Rfidregistry.V1;

// Record uid
var uid = "1234567ABCDEF0";

var getRecordListResponse = client.GetRecordList(new GetRecordListRequest
{
    Filter = new RecordFilter
    {
        Uids = { uid }
    }
});

Console.WriteLine($"getRecordListResponse response:");

await foreach (var record in getRecordListResponse.ResponseStream.ReadAllAsync())
{
    Console.WriteLine($"    {record}");
}

Console.WriteLine();

В этом примере показан запрос списка всех ключей, доступных для пользователя с конкретным токеном доступа.

ACCESS_TOKEN="ваш_токен"
grpcurl -d @ -H "Authorization: Bearer $ACCESS_TOKEN" rfid-registry-staging.k8s.key.rt.ru:443 keyapis.rfidregistry.v1.RecordService.GetRecordList

GetRecordListResponse - Ответ на запрос списка RFID-ключей.

В ответе на запрос списка RFID-ключей сервер возвращает перечень отфильтрованных записей в реестре ключей или код ошибки в случае некорректного запроса.

Поле Описание Тип Признак
data Запись с данными RFID-ключа в реестре keyapis.rfidregistry.v1.Record optional
error Ошибка keyapis.rfidregistry.v1.GetRecordListResponse.Error optional

GetRecordListResponse.Error

Ошибки запроса получения списка RFID-ключей.

Поле Описание Тип Признак
record_filter_validation Ошибка фильтрации записей keyapis.rfidregistry.v1.RecordFilter.ValidationError optional
record_paging_validation Ошибка пагинации по страницам записей keyapis.rfidregistry.v1.RecordPaging.ValidationError optional

rpc GetRecordCount - Получение количества RFID-ключей

Требуется авторизация.

Используйте метод GetRecordCount, чтобы узнать общее количество доступных вам RFID-ключей в реестре с учётом заданного фильтра. Суммарное значение будет соответствовать только тем RFID-ключам, которые вы ранее сохраняли в реестр ключей под своей учётной записью с токеном доступа.

В запросе отправляется объект с параметрами фильтрации, по которым будут отобраны записи с данными RFID-ключей, соответствующие критериям. Далее на сервере подсчитывается количество таких записей и передаётся обратно в качестве ответа. В случае ошибок при проверке параметров фильтра в ответе будет выслан код ошибки.

GetRecordCountRequest - Запрос количества RFID-ключей в реестре.

Параметры запроса:

Поле Тип Описание Значение
filter объект Обязательный.
Перечень отфильтрованных RFID-ключей в реестре ключей.
1

Примеры запроса

Примеры запроса для разных языков

В данном примере запрос содержит несуществующий uid для фильтрации выборки. Вы же используйте uid ключей, которые сами ранее добавляли в реестр.

using System.Text.Json;
using Google.Protobuf.WellKnownTypes;
using Grpc.Core;
using Grpc.Net.Client;
using IdentityModel.Client;
using Keyapis.Rfidregistry.V1;

// Record uid
var uid = "1234567ABCDEF0";

// GetRecordCount

var getRecordCountResponse = await client.GetRecordCountAsync(new GetRecordCountRequest
{
    Filter = new RecordFilter
    {
        Uids = { uid }
    }
});

Console.WriteLine($"GetRecordCount response: {getRecordCountResponse}\n");

Пример ответа:

{
  "data": 1
}

В этом примере показан запрос количества всех ключей, доступных для пользователя с конкретным токеном доступа.

ACCESS_TOKEN="ваш_токен"
grpcurl -H "Authorization: Bearer $ACCESS_TOKEN" rfid-registry-staging.k8s.key.rt.ru:443 keyapis.rfidregistry.v1.RecordService.GetRecordCount

А ниже пример запроса с фильтром по типу CARD (карта). В ответе возращается количество ключей, отфильтрованных и доступных для пользователя с данной учётной записью и токеном. Экранирование символов кавычек " требуется в консоли PowerShell.

ACCESS_TOKEN="ваш_токен"
grpcurl -d '{ \"filter\": { \"rfid_types\": \"CARD\" }}' -H "Authorization: Bearer $ACCESS_TOKEN" rfid-registry-staging.k8s.key.rt.ru:443 keyapis.rfidregistry.v1.RecordService/GetRecordCount

Пример ответа:

{
  "data": 21
}

GetRecordCountResponse - Ответ на запрос количества RFID-ключей.

В ответе на запрос количества RFID-ключей сервер возвращает количество доступных ключей с учётом параметров фильтрации или код ошибки в случае некорректного запроса.

Пример ответа:

1
2
3
{
  "data": 3842
}
Поле Описание Тип Признак
data Объект с количеством RFID-ключей keyapis.rfidregistry.v1.Record optional
error Ошибка keyapis.rfidregistry.v1.GetRecordCountResponse.Error optional

GetRecordCountResponse.Error Ошибка запроса количества RFID-ключей.

Поле Описание Тип Признак
record_filter_validation Ошибка фильтрации записей keyapis.rfidregistry.v1.RecordFilter.ValidationError optional

rpc DeleteRecord - Удаление RFID-ключа

Требуется авторизация.

Метод DeleteRecord позволяет удалять доступные вам RFID-ключи из реестра.

Вы можете удалять только свои RFID-ключи, которые ранее сохранили в реестре ключей под своей учётной записью с токеном доступа. При этом из реестра можно удалить только те записи RFID-ключей, которые ещё не привязаны к активированным ключам, используемым их владельцами.

Обратите внимание, что после удаления RFID-ключа сама запись в реестре остаётся со статусом "Удалён" (Deleted). И теперь добавить RFID-ключ можно только с новым id-идентификатором.

DeleteRecordRequest - Запрос на удаление RFID-ключа из реестра ключей.

Параметры запроса:

Поле Тип Описание Значение
id string Обязательный.
Идентификатор RFID-ключа, удаляемого из реестра ключей.
1

Примеры запроса

Примеры запроса

Запрос метода DeleteRecord --- удалить данные о RFID-ключе с заданным id. Это несуществующий id для примера. Вы же используйте id только тех ключей, которые вы сами добавили в реестр.

using System.Text.Json;
using Google.Protobuf.WellKnownTypes;
using Grpc.Core;
using Grpc.Net.Client;
using IdentityModel.Client;
using Keyapis.Rfidregistry.V1;

// Record id
var id = "12345678-9ABC-DEF0-0000-000000000000";

// DeleteRecord

var deleteRecordResponse = await client.DeleteRecordAsync(new DeleteRecordRequest
{
    Id = id
});

Console.WriteLine($"DeleteRecord response: {deleteRecordResponse}\n");

Здесь показан пример запроса с абстрактным id. Вы же используйте id только тех ключей, которые вы сами добавили в реестр.

1
2
3
4
5
6
7
ACCESS_TOKEN="ваш_токен"
RECORD_ID="12345678-9ABC-DEF0-0000-000000000000"
grpcurl -d @ -H "Authorization: Bearer $ACCESS_TOKEN" rfid-registry-staging.k8s.key.rt.ru:443 keyapis.rfidregistry.v1.RecordService.DeleteRecord <<EOM
{
"id": "${RECORD_ID}"
}
EOM

DeleteRecordResponse - Ответ на запрос удаления RFID-ключа.

В ответе сервера на запрос удаления RFID-ключа из реестра ключей возвращается пустая строка. Это означает успешное удаление ключа, при котором соответствующей записи в реестре присваивается статус "Deleted". В случае ошибки ответ возвращается с кодом этой ошибки.

rpc GetSystemStatus - Проверка состояния сервиса

Метод без авторизации

Метод GetSystemStatus позволяет получить сведения о работоспособности сервиса реестра ключей.

GetSystemStatusRequest - Запрос о статусе доступности сервиса реестра ключей.

В запросе в качестве параметра отправляется пустой объект {} или пустая строка. В случае доступности сервиса возвращается ответ с пустым объектом {} или с кодом ошибки.

Примеры запроса

Примеры запроса
1
2
3
4
5
// GetSystemStatus

var GetSystemStatusResponse = await client.GetSystemStatusAsync(new GetSystemStatusRequest());

Console.WriteLine($"GetSystemStatus response: {GetSystemStatusResponse}\n");
grpcurl rfid-registry-staging.k8s.key.rt.ru:443 keyapis.rfidregistry.v1.SystemService.GetSystemStatus

GetSystemStatusResponse - Ответ на запрос статуса доступности сервиса реестра ключей.

В ответе сервера на запрос о доступности реестра ключей возвращается пустой объект {}. Это значит, что сервис доступен и функционирует. В случае ошибки ответ возвращается с кодом этой ошибки.


Record

Запись в реестре ключей с информацией об отдельном RFID-ключе. При взаимодействии клиент-сервер данные о ключе упаковываются в JSON-объект, который передаётся в качестве тела запроса или ответа сервиса реестра ключей.

Параметры:

Поле Тип Признак Описание
id string Уникальный идентификатор ключа. Если не передан, создаётся сервером. Тип: Guid
rfid_type keyapis.rfidregistry.v1.Record.RfidType Тип ключа
encryption_type keyapis.rfidregistry.v1.Record.EncryptionType Тип шифрования ключа. Максимально поддерживаемый ключом тип шифрования SL3
uid string Номер ключа. Указывается при создании
status_type keyapis.rfidregistry.v1.Record.StatusType Тип статуса ключа
new_at google.protobuf.Timestamp Дата перевода в статус "Новый"
shipped_at google.protobuf.Timestamp Дата перевода в статус "Отгружен"
defect_at google.protobuf.Timestamp Дата перевода в статус "Брак"
in_use_at google.protobuf.Timestamp Дата перевода в статус "Использован"
in_use_rfid_id google.protobuf.StringValue Идентификатор привязанного ключа. Заполняется при переводе в статус "Использован"
data_cells keyapis.rfidregistry.v1.Record.DataCell repeated Содержимое ячеек ключа
resource_owner_id string Идентификатор владельца. Заполняется сервером
package_info_box google.protobuf.Int32Value Номер коробки
package_info_place google.protobuf.Int32Value Номер места в коробке
changed_at google.protobuf.Timestamp Дата последнего изменения. Заполняется и обновляется сервером. Заполняется при создании и изменении. Является версией объекта
aes_key_configurations keyapis.rfidregistry.v1.Record.AesKeyConfiguration repeated Конфигурации шифрования ключа
trailers keyapis.rfidregistry.v1.Record.Trailer repeated Контрольные суммы. Нужны для ключей SL1 и SL3
order_number string Номер заказа
order_at google.protobuf.Timestamp Дата заказа
in_use_resource_owner_id google.protobuf.StringValue Владелец привязанного ключа. Заполняется сервером, значение берётся из токена при использовании ключа
Пример JSON-объекта Record
{
"item": {
    "id": "12345678-9ABC-DEF0-0000-000000000000",
    "rfidType": "FOB",
    "encryptionType": "SL0",
    "uid": "1234567ABCDEF0",
    "statusType": "NEW",
    "inUseRfidId": "string",
    "dataCells": [
    {
        "section": 0,
        "block": 0,
        "data": "string"
    }
    ],
    "packageInfoBox": 0,
    "packageInfoPlace": 0,
    "aesKeyConfigurations": [
    {
        "address": "string",
        "data": "string"
    }
    ],
    "trailers": [
    {
        "sector": 0,
        "keyA": "string",
        "keyB": "string",
        "accessMask": "string"
    }
    ],
    "orderNumber": "string",
    "orderAt": "2023-04-02T23:52:15.736Z"
},
"isLite": true
}

RecordFilter

Фильтр записей из реестра ключей. Используется в качестве объекта с параметрами запроса для получения отфильтрованного списка RFID-ключей из реестра ключей.

Поле Фильтрация Тип Признак
ids По идентификаторам. Тип: Guid string repeated
rfid_types По типам ключей keyapis.rfidregistry.v1.Record.RfidType repeated
encryption_types По типам шифрования keyapis.rfidregistry.v1.Record.EncryptionType repeated
uids По номерам ключей string repeated
status_types По типам статуса keyapis.rfidregistry.v1.Record.StatusType repeated
in_use_rfid_ids По номерам привязанных ключей string repeated
resource_owner_ids По владельцам string repeated
order_numbers По номерам заказа string repeated
in_use_resource_owner_ids По владельцам привязанных ключей string repeated

Тип ключа

Обозначает форм-фактор или физическую сущность ключа.
Поле rfid_type --- обязательное в момент добавления нового ключа.

Справочник типов ключей.

Тип ключа Описание
RFID_TYPE_UNKNOWN Значение не указано
FOB Брелок
CARD Карта
BAND Браслет
STICKER Стикер
ACTIVE_TAG Активная метка

Значение по умолчанию --- CARD (карта).


Тип статуса ключа

Справочник возможных типов статусов ключа.
Поле status_type --- обязательное в любых запросах.

Статус Описание
STATUS_TYPE_UNKNOWN Значение не указано
NEW Новый
SHIPPED Отгружен
DEFECT Брак
IN_USE Использован

Тип шифрования ключа

Справочник типов шифрования ключа.
Поле encryption_type --- обязательное в момент добавления нового ключа.

Тип шифрования ключа Описание
ENCRYPTION_TYPE_UNKNOWN Значение не указано
SL0 Без шифрования
SL1 С шифрованием, копируемый
SL3 С шифрованием, не копируемый

Максимально поддерживаемый ключом тип шифрования SL3.


Таблица обязательности передачи полей в Request

Ниже представлена схема обязательности передачи полей и модель изменения статусов ключей.

Атрибуты Описание o -> new o -> shipped new -> defect new -> shipped
id Идентификатор записи O O M M
uid Номер ключа M M - -
status_type Статус ключа M M M M
data_cells Содержимое ячеек O O - O
package_info Информация о партии O O - O
order_number Номер заказа M M - -
order_at Дата заказа M M - -
rfid_type Тип RFID-ключа M M - -
encryption_type Тип шифрования M M - -
trailers Контрольные суммы записи ячеек ключа
с типом шифрования SL1 и SL3
O O - O
aes_key_configurations Конфигурация шифрования ключа O O - O
resource_owner_id Идентификатор владельца или создателя O O - -
  • id --- если идентификатор id не передан, сервер создаёт новый ключ с новым id.
  • resource_owner_id --- заполняется из токена.

Обозначения M --- Обязательный атрибут (Mandatory)
O --- Необязательный атрибут (Optional)
- --- Передаётся текущее состояние, сервис не обновляет значение поля в базе.


Скалярные типы данных Protobuf

Скалярные типы данных, используемые в gRPC-методах сервиса, и их соответствие типам в различных языковых средах представлены в документации Google Protocol Buffers.


Proto файл

Proto-файл представляет собой контракт структурированных данных и методов для клиента и сервера. В рамках технологии gRPC поддерживается до 12 языков программирования.

Используйте proto-файл сервиса для компилирования клиента, который будет работать с выбранным языком программирования. Процедура компилирования proto-файла доступна на сайте https://grpc.io/.

Скачать proto-файл: keyapis_rfidregistry_record_v1.proto


Глоссарий

Термин Определение
Ключ Активированный ключ в пользовании у владельца (жильца или сотрудника управляющей компании).
RFID-ключ Ключ-болванка до момента попадания в руки владельца и активации его на платформе "Ключ".
УК Управляющая компания