Registry service (gRPC)#
The sole registry wire surface (the legacy v1 RegistryService has been removed). The read endpoints (GetImage / DeleteImage / SearchImages) delegate to shared RegistryService Java service methods — only CreateImage has a v2-specific service path (different OCI key, different DB fields). See file-level comment.
Endpoints#
Create image#
gRPC /nominal.registry.v2.RegistryService/CreateImage
Register a new container image from a previously uploaded tarball and attach it to the referenced containerized extractor. The client should first upload the tarball via the existing UploadService multipart flow, then call this endpoint with the object key to create the image record and start the push. Alternatively, set source_image_rid instead of object_path to register a new (extractor, tag) version that reuses an existing READY image’s stored binary — for metadata-only changes that don’t need a tarball re-upload.
Request: CreateImageRequest
workspace_ridstring requiredWorkspace that owns the image. Must match the extractor’s workspace.
tagstring requiredUser-supplied tag (e.g. “latest”, “v1”). Unique within (workspace, extractor).
object_pathstringFull object-storage path (“s3://bucket/key”) of an uploaded tarball (UploadService multipart flow) in the configured upload bucket; mutually exclusive with source_image_rid.
extractor_ridstring requiredThe containerized extractor this image is built for. Must exist in the same workspace.
inputsarray ofFileExtractionInputThe input files this extractor requires, mapped to environment variables that store the path to each file. At least one input must be declared. At least 1 item.
Fields of
FileExtractionInputenvironment_variablestring requiredThe environment variable that stores the path to the input file.
namestring requiredName of the input file which users will be prompted with.
descriptionstringDescription of the input file which users will be prompted with.
file_filtersarray ofFileFilterOptionally filter files for file selection.
Fields of
FileFiltersuffixFileSuffix
Fields of
FileSuffixsuffixstring required
requiredbooleanWhether the input file is required for the extractor to run.
parametersarray ofFileExtractionParameterParameters the extractor accepts.
Fields of
FileExtractionParameterenvironment_variablestring requiredThe environment variable that stores the argument.
namestring requiredName of the parameter which users will be prompted with.
descriptionstringDescription of the parameter which users will be prompted with.
requiredbooleanWhether the parameter is required for the extractor to run.
file_output_formatFileOutputFormatFormat of the output file produced by the extractor.
Values of
FileOutputFormatFILE_OUTPUT_FORMAT_UNSPECIFIED
FILE_OUTPUT_FORMAT_PARQUET
FILE_OUTPUT_FORMAT_CSV
FILE_OUTPUT_FORMAT_PARQUET_TAR
FILE_OUTPUT_FORMAT_AVRO_STREAM
FILE_OUTPUT_FORMAT_JSON_L
FILE_OUTPUT_FORMAT_MANIFEST
default_timestamp_metadataTimestampMetadatarequiredMetadata about the intermediate parquet this extractor will produce. Required so the image carries a complete execution contract: ingest needs timestamp metadata from the image or the request, and an image without a default silently depends on every caller supplying it. Callers may still override it per ingest request.
Fields of
TimestampMetadataseries_namestring requiredName of the series within the output whose values are used as the row timestamp.
timestamp_typeTimestampTyperequiredHow the values in
series_nameshould be interpreted as timestamps.Fields of
TimestampType- one of
relative,absoluterequired
relativeRelativeTimestamp
Fields of
RelativeTimestamptime_unitstringUnit in which relative offsets are expressed. Aliases the classic REST TimeUnit alias.
offsetstring (date-time)Starting timestamp to use when indexing the file.
absoluteAbsoluteTimestamp
Fields of
AbsoluteTimestamp- one of
iso8601,epoch_of_time_unit,custom_formatrequired
iso8601Iso8601Timestamp
epoch_of_time_unitEpochTimestamp
Fields of
EpochTimestamptime_unitstringUnit in which epoch values are expressed (e.g. SECONDS, MILLISECONDS).
custom_formatCustomTimestamp
Fields of
CustomTimestampformatstringThe format string should be in the format of the
DateTimeFormatterclass in Java.default_yearintegerDefault year is accepted as an optional field for cases like IRIG time format. Will be overridden by year in time format.
default_day_of_yearintegerDefault day of year is accepted as an optional field for cases like IRIG time format. Will be overridden by day of year in time format. From 1 to 366.
- one of
- one of
source_image_ridstringExisting READY image of the same extractor whose stored binary the new version reuses (no tarball re-upload); mutually exclusive with object_path. At least 1 character.
exit_code_mappingsarray ofExitCodeMappingFallback exit-code-to-error mappings for extractors that cannot emit a structured /dev/termination-log document.
Fields of
ExitCodeMappingexit_codeintegerThe container process exit code this mapping applies to.
codestring requiredMachine-readable error code. Extractor-defined codes must fall outside the reserved platform namespace.
messagestring requiredHuman-readable error message.
retryablebooleanWhether the platform may retry the ingest for this failure.
resourcesContainerResourcesCompute resources the extractor container runs with. Unset fields fall back to the deployment-wide defaults.
Fields of
ContainerResourcescpu_coresinteger (int64)CPU cores requested for the container. From 1 to 32.
memory_gibinteger (int64)Memory in GiB, applied as both the request and the limit. From 1 to 128.
disk_gibinteger (int64)Size in GiB of each of the ephemeral input and output volumes. From 1 to 512.
Response: CreateImageResponse
imageContainerImage
Fields of
ContainerImageridstring
tagstringUser-supplied tag, unique within (workspace, extractor).
size_bytesinteger (int64)Size of the stored image in bytes once the image reaches READY.
statusContainerImageStatusCurrent lifecycle status (PENDING while pushing, READY after a successful push, FAILED otherwise).
Values of
ContainerImageStatusCONTAINER_IMAGE_STATUS_UNSPECIFIED
CONTAINER_IMAGE_STATUS_PENDING
CONTAINER_IMAGE_STATUS_READY
CONTAINER_IMAGE_STATUS_FAILED
created_atstring (date-time)When the image record was created.
extractor_ridstringThe containerized extractor this image is built for.
inputsarray ofFileExtractionInputThe input files this extractor requires, mapped to environment variables that store the path to each file.
Fields of
FileExtractionInputenvironment_variablestringThe environment variable that stores the path to the input file.
namestringName of the input file which users will be prompted with.
descriptionstringDescription of the input file which users will be prompted with.
file_filtersarray ofFileFilterOptionally filter files for file selection.
Fields of
FileFiltersuffixFileSuffix
Fields of
FileSuffixsuffixstring
requiredbooleanWhether the input file is required for the extractor to run.
parametersarray ofFileExtractionParameterParameters the extractor accepts.
Fields of
FileExtractionParameterenvironment_variablestringThe environment variable that stores the argument.
namestringName of the parameter which users will be prompted with.
descriptionstringDescription of the parameter which users will be prompted with.
requiredbooleanWhether the parameter is required for the extractor to run.
file_output_formatFileOutputFormatFormat of the output file produced by the extractor.
Values of
FileOutputFormatFILE_OUTPUT_FORMAT_UNSPECIFIED
FILE_OUTPUT_FORMAT_PARQUET
FILE_OUTPUT_FORMAT_CSV
FILE_OUTPUT_FORMAT_PARQUET_TAR
FILE_OUTPUT_FORMAT_AVRO_STREAM
FILE_OUTPUT_FORMAT_JSON_L
FILE_OUTPUT_FORMAT_MANIFEST
default_timestamp_metadataTimestampMetadataMetadata about the intermediate parquet this extractor will produce. If not set, timestamp metadata must be provided at ingest time.
Fields of
TimestampMetadataseries_namestringName of the series within the output whose values are used as the row timestamp.
timestamp_typeTimestampTypeHow the values in
series_nameshould be interpreted as timestamps.Fields of
TimestampType- one of
relative,absolute
relativeRelativeTimestamp
Fields of
RelativeTimestamptime_unitstringUnit in which relative offsets are expressed. Aliases the classic REST TimeUnit alias.
offsetstring (date-time)Starting timestamp to use when indexing the file.
absoluteAbsoluteTimestamp
Fields of
AbsoluteTimestamp- one of
iso8601,epoch_of_time_unit,custom_format
iso8601Iso8601Timestamp
epoch_of_time_unitEpochTimestamp
Fields of
EpochTimestamptime_unitstringUnit in which epoch values are expressed (e.g. SECONDS, MILLISECONDS).
custom_formatCustomTimestamp
Fields of
CustomTimestampformatstringThe format string should be in the format of the
DateTimeFormatterclass in Java.default_yearintegerDefault year is accepted as an optional field for cases like IRIG time format. Will be overridden by year in time format.
default_day_of_yearintegerDefault day of year is accepted as an optional field for cases like IRIG time format. Will be overridden by day of year in time format. From 1 to 366.
- one of
- one of
exit_code_mappingsarray ofExitCodeMappingFallback exit-code-to-error mappings for extractors that cannot emit a structured /dev/termination-log document.
Fields of
ExitCodeMappingexit_codeintegerThe container process exit code this mapping applies to.
codestringMachine-readable error code. Extractor-defined codes must fall outside the reserved platform namespace.
messagestringHuman-readable error message.
retryablebooleanWhether the platform may retry the ingest for this failure.
resourcesContainerResourcesCompute resources this image’s extractor container runs with. Unset fields fall back to the deployment-wide defaults.
Fields of
ContainerResourcescpu_coresinteger (int64)CPU cores requested for the container. From 1 to 32.
memory_gibinteger (int64)Memory in GiB, applied as both the request and the limit. From 1 to 128.
disk_gibinteger (int64)Size in GiB of each of the ephemeral input and output volumes. From 1 to 512.
Request
from datetime import datetime, timezone
import grpc
from nominal.protos.registry.v2 import registry_pb2, registry_pb2_grpc
channel = grpc.secure_channel("api.gov.nominal.io:443", grpc.ssl_channel_credentials())
registry_service = registry_pb2_grpc.RegistryServiceStub(channel)
auth = [("authorization", "Bearer <api key>")]
request = registry_pb2.CreateImageRequest(
workspace_rid="<workspace rid>",
tag="<tag>",
extractor_rid="<extractor rid>",
default_timestamp_metadata={
"series_name": "<series name>",
"timestamp_type": {
"relative": {
"time_unit": "<time unit>",
"offset": datetime(2026, 1, 1, tzinfo=timezone.utc),
},
},
},
)
response = registry_service.CreateImage(request, metadata=auth)
print(response)
package main
import (
"context"
"crypto/tls"
"fmt"
"log"
"time"
registryv2 "github.com/nominal-io/nominal-api-protos-go/nominal/protos/registry/v2"
typestime "github.com/nominal-io/nominal-api-protos-go/nominal/protos/types/time"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
"google.golang.org/grpc/metadata"
"google.golang.org/protobuf/types/known/timestamppb"
)
func main() {
conn, err := grpc.NewClient("api.gov.nominal.io:443",
grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{})))
if err != nil {
log.Fatal(err)
}
defer conn.Close()
registryService := registryv2.NewRegistryServiceClient(conn)
ctx := metadata.AppendToOutgoingContext(context.Background(), "authorization", "Bearer <api key>")
request := ®istryv2.CreateImageRequest{
WorkspaceRid: "<workspace rid>",
Tag: "<tag>",
ExtractorRid: "<extractor rid>",
DefaultTimestampMetadata: ®istryv2.TimestampMetadata{
SeriesName: "<series name>",
TimestampType: &typestime.TimestampType{
Option: &typestime.TimestampType_Relative{Relative: &typestime.RelativeTimestamp{
TimeUnit: "<time unit>",
Offset: timestamppb.New(time.Date(2026, 1, 1, 0, 0, 0, 0, time.UTC)),
}},
},
},
}
response, err := registryService.CreateImage(ctx, request)
if err != nil {
log.Fatal(err)
}
fmt.Println(response)
}
Response
{
"image": {
"rid": "<rid>",
"tag": "<tag>",
"size_bytes": 1,
"status": "CONTAINER_IMAGE_STATUS_PENDING",
"created_at": "2026-01-01T00:00:00Z",
"extractor_rid": "<extractor rid>",
"inputs": [
{
"environment_variable": "<environment variable>",
"name": "<name>",
"description": "<description>",
"file_filters": [
{
"suffix": {
"suffix": "<suffix>"
}
}
],
"required": true
}
],
"parameters": [
{
"environment_variable": "<environment variable>",
"name": "<name>",
"description": "<description>",
"required": true
}
],
"file_output_format": "FILE_OUTPUT_FORMAT_PARQUET",
"default_timestamp_metadata": {
"series_name": "<series name>",
"timestamp_type": {
"relative": {
"time_unit": "<time unit>",
"offset": "2026-01-01T00:00:00Z"
}
}
},
"exit_code_mappings": [
{
"exit_code": 1,
"code": "<code>",
"message": "<message>",
"retryable": true
}
],
"resources": {
"cpu_cores": 1,
"memory_gib": 1,
"disk_gib": 1
}
}
}
Delete image#
gRPC /nominal.registry.v2.RegistryService/DeleteImage
Delete a container image. Fails if any containerized extractor references it.
Request: DeleteImageRequest
ridstring required
workspace_ridstring required
Response: DeleteImageResponse
A message with no fields.
Request
import grpc
from nominal.protos.registry.v2 import registry_pb2, registry_pb2_grpc
channel = grpc.secure_channel("api.gov.nominal.io:443", grpc.ssl_channel_credentials())
registry_service = registry_pb2_grpc.RegistryServiceStub(channel)
auth = [("authorization", "Bearer <api key>")]
request = registry_pb2.DeleteImageRequest(rid="<rid>", workspace_rid="<workspace rid>")
response = registry_service.DeleteImage(request, metadata=auth)
print(response)
package main
import (
"context"
"crypto/tls"
"fmt"
"log"
registryv2 "github.com/nominal-io/nominal-api-protos-go/nominal/protos/registry/v2"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
"google.golang.org/grpc/metadata"
)
func main() {
conn, err := grpc.NewClient("api.gov.nominal.io:443",
grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{})))
if err != nil {
log.Fatal(err)
}
defer conn.Close()
registryService := registryv2.NewRegistryServiceClient(conn)
ctx := metadata.AppendToOutgoingContext(context.Background(), "authorization", "Bearer <api key>")
request := ®istryv2.DeleteImageRequest{
Rid: "<rid>",
WorkspaceRid: "<workspace rid>",
}
response, err := registryService.DeleteImage(ctx, request)
if err != nil {
log.Fatal(err)
}
fmt.Println(response)
}
Response
{}
Get image#
gRPC /nominal.registry.v2.RegistryService/GetImage
Get the current state of a container image.
Request: GetImageRequest
ridstring required
workspace_ridstring required
Response: GetImageResponse
imageContainerImage
Fields of
ContainerImageridstring
tagstringUser-supplied tag, unique within (workspace, extractor).
size_bytesinteger (int64)Size of the stored image in bytes once the image reaches READY.
statusContainerImageStatusCurrent lifecycle status (PENDING while pushing, READY after a successful push, FAILED otherwise).
Values of
ContainerImageStatusCONTAINER_IMAGE_STATUS_UNSPECIFIED
CONTAINER_IMAGE_STATUS_PENDING
CONTAINER_IMAGE_STATUS_READY
CONTAINER_IMAGE_STATUS_FAILED
created_atstring (date-time)When the image record was created.
extractor_ridstringThe containerized extractor this image is built for.
inputsarray ofFileExtractionInputThe input files this extractor requires, mapped to environment variables that store the path to each file.
Fields of
FileExtractionInputenvironment_variablestringThe environment variable that stores the path to the input file.
namestringName of the input file which users will be prompted with.
descriptionstringDescription of the input file which users will be prompted with.
file_filtersarray ofFileFilterOptionally filter files for file selection.
Fields of
FileFiltersuffixFileSuffix
Fields of
FileSuffixsuffixstring
requiredbooleanWhether the input file is required for the extractor to run.
parametersarray ofFileExtractionParameterParameters the extractor accepts.
Fields of
FileExtractionParameterenvironment_variablestringThe environment variable that stores the argument.
namestringName of the parameter which users will be prompted with.
descriptionstringDescription of the parameter which users will be prompted with.
requiredbooleanWhether the parameter is required for the extractor to run.
file_output_formatFileOutputFormatFormat of the output file produced by the extractor.
Values of
FileOutputFormatFILE_OUTPUT_FORMAT_UNSPECIFIED
FILE_OUTPUT_FORMAT_PARQUET
FILE_OUTPUT_FORMAT_CSV
FILE_OUTPUT_FORMAT_PARQUET_TAR
FILE_OUTPUT_FORMAT_AVRO_STREAM
FILE_OUTPUT_FORMAT_JSON_L
FILE_OUTPUT_FORMAT_MANIFEST
default_timestamp_metadataTimestampMetadataMetadata about the intermediate parquet this extractor will produce. If not set, timestamp metadata must be provided at ingest time.
Fields of
TimestampMetadataseries_namestringName of the series within the output whose values are used as the row timestamp.
timestamp_typeTimestampTypeHow the values in
series_nameshould be interpreted as timestamps.Fields of
TimestampType- one of
relative,absolute
relativeRelativeTimestamp
Fields of
RelativeTimestamptime_unitstringUnit in which relative offsets are expressed. Aliases the classic REST TimeUnit alias.
offsetstring (date-time)Starting timestamp to use when indexing the file.
absoluteAbsoluteTimestamp
Fields of
AbsoluteTimestamp- one of
iso8601,epoch_of_time_unit,custom_format
iso8601Iso8601Timestamp
epoch_of_time_unitEpochTimestamp
Fields of
EpochTimestamptime_unitstringUnit in which epoch values are expressed (e.g. SECONDS, MILLISECONDS).
custom_formatCustomTimestamp
Fields of
CustomTimestampformatstringThe format string should be in the format of the
DateTimeFormatterclass in Java.default_yearintegerDefault year is accepted as an optional field for cases like IRIG time format. Will be overridden by year in time format.
default_day_of_yearintegerDefault day of year is accepted as an optional field for cases like IRIG time format. Will be overridden by day of year in time format. From 1 to 366.
- one of
- one of
exit_code_mappingsarray ofExitCodeMappingFallback exit-code-to-error mappings for extractors that cannot emit a structured /dev/termination-log document.
Fields of
ExitCodeMappingexit_codeintegerThe container process exit code this mapping applies to.
codestringMachine-readable error code. Extractor-defined codes must fall outside the reserved platform namespace.
messagestringHuman-readable error message.
retryablebooleanWhether the platform may retry the ingest for this failure.
resourcesContainerResourcesCompute resources this image’s extractor container runs with. Unset fields fall back to the deployment-wide defaults.
Fields of
ContainerResourcescpu_coresinteger (int64)CPU cores requested for the container. From 1 to 32.
memory_gibinteger (int64)Memory in GiB, applied as both the request and the limit. From 1 to 128.
disk_gibinteger (int64)Size in GiB of each of the ephemeral input and output volumes. From 1 to 512.
Request
import grpc
from nominal.protos.registry.v2 import registry_pb2, registry_pb2_grpc
channel = grpc.secure_channel("api.gov.nominal.io:443", grpc.ssl_channel_credentials())
registry_service = registry_pb2_grpc.RegistryServiceStub(channel)
auth = [("authorization", "Bearer <api key>")]
request = registry_pb2.GetImageRequest(rid="<rid>", workspace_rid="<workspace rid>")
response = registry_service.GetImage(request, metadata=auth)
print(response)
package main
import (
"context"
"crypto/tls"
"fmt"
"log"
registryv2 "github.com/nominal-io/nominal-api-protos-go/nominal/protos/registry/v2"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
"google.golang.org/grpc/metadata"
)
func main() {
conn, err := grpc.NewClient("api.gov.nominal.io:443",
grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{})))
if err != nil {
log.Fatal(err)
}
defer conn.Close()
registryService := registryv2.NewRegistryServiceClient(conn)
ctx := metadata.AppendToOutgoingContext(context.Background(), "authorization", "Bearer <api key>")
request := ®istryv2.GetImageRequest{
Rid: "<rid>",
WorkspaceRid: "<workspace rid>",
}
response, err := registryService.GetImage(ctx, request)
if err != nil {
log.Fatal(err)
}
fmt.Println(response)
}
Response
{
"image": {
"rid": "<rid>",
"tag": "<tag>",
"size_bytes": 1,
"status": "CONTAINER_IMAGE_STATUS_PENDING",
"created_at": "2026-01-01T00:00:00Z",
"extractor_rid": "<extractor rid>",
"inputs": [
{
"environment_variable": "<environment variable>",
"name": "<name>",
"description": "<description>",
"file_filters": [
{
"suffix": {
"suffix": "<suffix>"
}
}
],
"required": true
}
],
"parameters": [
{
"environment_variable": "<environment variable>",
"name": "<name>",
"description": "<description>",
"required": true
}
],
"file_output_format": "FILE_OUTPUT_FORMAT_PARQUET",
"default_timestamp_metadata": {
"series_name": "<series name>",
"timestamp_type": {
"relative": {
"time_unit": "<time unit>",
"offset": "2026-01-01T00:00:00Z"
}
}
},
"exit_code_mappings": [
{
"exit_code": 1,
"code": "<code>",
"message": "<message>",
"retryable": true
}
],
"resources": {
"cpu_cores": 1,
"memory_gib": 1,
"disk_gib": 1
}
}
}
Search images#
gRPC /nominal.registry.v2.RegistryService/SearchImages
List container images in a workspace, optionally filtered by tag / status.
Request: SearchImagesRequest
workspace_ridstring required
filterSearchFilterOptional composable filter. Omit to list all images in the workspace.
Fields of
SearchFilter- one of
tag,status,and,extractorrequired
tagTagFilter
Fields of
TagFiltertagstring required
statusStatusFilter
Fields of
StatusFilterstatusContainerImageStatusrequired
Values of
ContainerImageStatusCONTAINER_IMAGE_STATUS_UNSPECIFIED
CONTAINER_IMAGE_STATUS_PENDING
CONTAINER_IMAGE_STATUS_READY
CONTAINER_IMAGE_STATUS_FAILED
andAndFilter
Fields of
AndFilterclausesarray ofSearchFilter
extractorExtractorFilter
Fields of
ExtractorFilterextractor_ridstring required
- one of
page_sizeintegerFrom 1 to 1,000.
next_page_tokenstring
Response: SearchImagesResponse
imagesarray ofContainerImage
Fields of
ContainerImageridstring
tagstringUser-supplied tag, unique within (workspace, extractor).
size_bytesinteger (int64)Size of the stored image in bytes once the image reaches READY.
statusContainerImageStatusCurrent lifecycle status (PENDING while pushing, READY after a successful push, FAILED otherwise).
Values of
ContainerImageStatusCONTAINER_IMAGE_STATUS_UNSPECIFIED
CONTAINER_IMAGE_STATUS_PENDING
CONTAINER_IMAGE_STATUS_READY
CONTAINER_IMAGE_STATUS_FAILED
created_atstring (date-time)When the image record was created.
extractor_ridstringThe containerized extractor this image is built for.
inputsarray ofFileExtractionInputThe input files this extractor requires, mapped to environment variables that store the path to each file.
Fields of
FileExtractionInputenvironment_variablestringThe environment variable that stores the path to the input file.
namestringName of the input file which users will be prompted with.
descriptionstringDescription of the input file which users will be prompted with.
file_filtersarray ofFileFilterOptionally filter files for file selection.
Fields of
FileFiltersuffixFileSuffix
Fields of
FileSuffixsuffixstring
requiredbooleanWhether the input file is required for the extractor to run.
parametersarray ofFileExtractionParameterParameters the extractor accepts.
Fields of
FileExtractionParameterenvironment_variablestringThe environment variable that stores the argument.
namestringName of the parameter which users will be prompted with.
descriptionstringDescription of the parameter which users will be prompted with.
requiredbooleanWhether the parameter is required for the extractor to run.
file_output_formatFileOutputFormatFormat of the output file produced by the extractor.
Values of
FileOutputFormatFILE_OUTPUT_FORMAT_UNSPECIFIED
FILE_OUTPUT_FORMAT_PARQUET
FILE_OUTPUT_FORMAT_CSV
FILE_OUTPUT_FORMAT_PARQUET_TAR
FILE_OUTPUT_FORMAT_AVRO_STREAM
FILE_OUTPUT_FORMAT_JSON_L
FILE_OUTPUT_FORMAT_MANIFEST
default_timestamp_metadataTimestampMetadataMetadata about the intermediate parquet this extractor will produce. If not set, timestamp metadata must be provided at ingest time.
Fields of
TimestampMetadataseries_namestringName of the series within the output whose values are used as the row timestamp.
timestamp_typeTimestampTypeHow the values in
series_nameshould be interpreted as timestamps.Fields of
TimestampType- one of
relative,absolute
relativeRelativeTimestamp
Fields of
RelativeTimestamptime_unitstringUnit in which relative offsets are expressed. Aliases the classic REST TimeUnit alias.
offsetstring (date-time)Starting timestamp to use when indexing the file.
absoluteAbsoluteTimestamp
Fields of
AbsoluteTimestamp- one of
iso8601,epoch_of_time_unit,custom_format
iso8601Iso8601Timestamp
epoch_of_time_unitEpochTimestamp
Fields of
EpochTimestamptime_unitstringUnit in which epoch values are expressed (e.g. SECONDS, MILLISECONDS).
custom_formatCustomTimestamp
Fields of
CustomTimestampformatstringThe format string should be in the format of the
DateTimeFormatterclass in Java.default_yearintegerDefault year is accepted as an optional field for cases like IRIG time format. Will be overridden by year in time format.
default_day_of_yearintegerDefault day of year is accepted as an optional field for cases like IRIG time format. Will be overridden by day of year in time format. From 1 to 366.
- one of
- one of
exit_code_mappingsarray ofExitCodeMappingFallback exit-code-to-error mappings for extractors that cannot emit a structured /dev/termination-log document.
Fields of
ExitCodeMappingexit_codeintegerThe container process exit code this mapping applies to.
codestringMachine-readable error code. Extractor-defined codes must fall outside the reserved platform namespace.
messagestringHuman-readable error message.
retryablebooleanWhether the platform may retry the ingest for this failure.
resourcesContainerResourcesCompute resources this image’s extractor container runs with. Unset fields fall back to the deployment-wide defaults.
Fields of
ContainerResourcescpu_coresinteger (int64)CPU cores requested for the container. From 1 to 32.
memory_gibinteger (int64)Memory in GiB, applied as both the request and the limit. From 1 to 128.
disk_gibinteger (int64)Size in GiB of each of the ephemeral input and output volumes. From 1 to 512.
next_page_tokenstring
Request
import grpc
from nominal.protos.registry.v2 import registry_pb2, registry_pb2_grpc
channel = grpc.secure_channel("api.gov.nominal.io:443", grpc.ssl_channel_credentials())
registry_service = registry_pb2_grpc.RegistryServiceStub(channel)
auth = [("authorization", "Bearer <api key>")]
request = registry_pb2.SearchImagesRequest(workspace_rid="<workspace rid>")
response = registry_service.SearchImages(request, metadata=auth)
print(response)
package main
import (
"context"
"crypto/tls"
"fmt"
"log"
registryv2 "github.com/nominal-io/nominal-api-protos-go/nominal/protos/registry/v2"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
"google.golang.org/grpc/metadata"
)
func main() {
conn, err := grpc.NewClient("api.gov.nominal.io:443",
grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{})))
if err != nil {
log.Fatal(err)
}
defer conn.Close()
registryService := registryv2.NewRegistryServiceClient(conn)
ctx := metadata.AppendToOutgoingContext(context.Background(), "authorization", "Bearer <api key>")
request := ®istryv2.SearchImagesRequest{
WorkspaceRid: "<workspace rid>",
}
response, err := registryService.SearchImages(ctx, request)
if err != nil {
log.Fatal(err)
}
fmt.Println(response)
}
Response
{
"images": [
{
"rid": "<rid>",
"tag": "<tag>",
"size_bytes": 1,
"status": "CONTAINER_IMAGE_STATUS_PENDING",
"created_at": "2026-01-01T00:00:00Z",
"extractor_rid": "<extractor rid>",
"inputs": [
{
"environment_variable": "<environment variable>",
"name": "<name>",
"description": "<description>",
"file_filters": [
{
"suffix": {
"suffix": "<suffix>"
}
}
],
"required": true
}
],
"parameters": [
{
"environment_variable": "<environment variable>",
"name": "<name>",
"description": "<description>",
"required": true
}
],
"file_output_format": "FILE_OUTPUT_FORMAT_PARQUET",
"default_timestamp_metadata": {
"series_name": "<series name>",
"timestamp_type": {
"relative": {
"time_unit": "<time unit>",
"offset": "2026-01-01T00:00:00Z"
}
}
},
"exit_code_mappings": [
{
"exit_code": 1,
"code": "<code>",
"message": "<message>",
"retryable": true
}
],
"resources": {
"cpu_cores": 1,
"memory_gib": 1,
"disk_gib": 1
}
}
],
"next_page_token": "<next page token>"
}
Types#
AbsoluteTimestamp#
Absolute timestamp parser variants.
Set exactly one of the fields below.
- one of
iso8601,epoch_of_time_unit,custom_formatrequired
AndFilter#
clausesarray ofSearchFilter
ContainerImage#
Container image registered through the V2 (extractor-linked) registry flow. V2 images carry no user-supplied name — extractor identity replaces it as the stable handle.
ridstring required
tagstringUser-supplied tag, unique within (workspace, extractor).
size_bytesinteger (int64)Size of the stored image in bytes once the image reaches READY.
statusContainerImageStatusCurrent lifecycle status (PENDING while pushing, READY after a successful push, FAILED otherwise).
created_atstring (date-time)When the image record was created.
extractor_ridstringThe containerized extractor this image is built for.
inputsarray ofFileExtractionInputThe input files this extractor requires, mapped to environment variables that store the path to each file.
parametersarray ofFileExtractionParameterParameters the extractor accepts.
file_output_formatFileOutputFormatFormat of the output file produced by the extractor.
default_timestamp_metadataTimestampMetadataMetadata about the intermediate parquet this extractor will produce. If not set, timestamp metadata must be provided at ingest time.
exit_code_mappingsarray ofExitCodeMappingFallback exit-code-to-error mappings for extractors that cannot emit a structured /dev/termination-log document.
resourcesContainerResourcesCompute resources this image’s extractor container runs with. Unset fields fall back to the deployment-wide defaults.
ContainerImageStatus#
CONTAINER_IMAGE_STATUS_UNSPECIFIED
CONTAINER_IMAGE_STATUS_PENDING
CONTAINER_IMAGE_STATUS_READY
CONTAINER_IMAGE_STATUS_FAILED
ContainerResources#
Compute resources granted to the container this image runs. Every field is optional; an unset field falls back to the deployment-wide default configured on combined-service. The upper bounds are a platform ceiling, not a guarantee the cluster can satisfy the request — an unschedulable pod fails the ingest with EXTRACTOR_UNSCHEDULABLE. RegistryService re-checks them server-side, because the first-party catalog flow calls CreateImage in-process and never reaches protovalidate.
cpu_coresinteger (int64)CPU cores requested for the container. From 1 to 32.
memory_gibinteger (int64)Memory in GiB, applied as both the request and the limit. From 1 to 128.
disk_gibinteger (int64)Size in GiB of each of the ephemeral input and output volumes. From 1 to 512.
CustomTimestamp#
Absolute timestamps parsed with a user-supplied format string.
formatstringThe format string should be in the format of the
DateTimeFormatterclass in Java.default_yearintegerDefault year is accepted as an optional field for cases like IRIG time format. Will be overridden by year in time format.
default_day_of_yearintegerDefault day of year is accepted as an optional field for cases like IRIG time format. Will be overridden by day of year in time format. From 1 to 366.
EpochTimestamp#
Absolute timestamps expressed as an integer count of some time unit since the Unix epoch.
time_unitstringUnit in which epoch values are expressed (e.g. SECONDS, MILLISECONDS).
ExitCodeMapping#
Maps a container exit code to a structured error, for extractors that cannot emit a structured /dev/termination-log document. Applied as a fallback error tier at ingest time.
exit_codeintegerThe container process exit code this mapping applies to.
codestring requiredMachine-readable error code. Extractor-defined codes must fall outside the reserved platform namespace.
messagestring requiredHuman-readable error message.
retryablebooleanWhether the platform may retry the ingest for this failure.
ExtractorFilter#
Selects images registered against a specific containerized extractor. Combine with a TagFilter (via AndFilter) to fetch a single (extractor, tag) image.
extractor_ridstring required
FileExtractionInput#
Defines an input file to be provided to the extractor.
environment_variablestring requiredThe environment variable that stores the path to the input file.
namestring requiredName of the input file which users will be prompted with.
descriptionstringDescription of the input file which users will be prompted with.
file_filtersarray ofFileFilterOptionally filter files for file selection.
requiredbooleanWhether the input file is required for the extractor to run.
FileExtractionParameter#
Defines an input parameter to be provided to the extractor.
environment_variablestring requiredThe environment variable that stores the argument.
namestring requiredName of the parameter which users will be prompted with.
descriptionstringDescription of the parameter which users will be prompted with.
requiredbooleanWhether the parameter is required for the extractor to run.
FileFilter#
Optional filter applied during file selection for a file input.
suffixFileSuffix
FileOutputFormat#
Output file format emitted by the extractor. Currently PARQUET, CSV, and PARQUET_TAR are the primary supported formats.
FILE_OUTPUT_FORMAT_UNSPECIFIED
FILE_OUTPUT_FORMAT_PARQUET
FILE_OUTPUT_FORMAT_CSV
FILE_OUTPUT_FORMAT_PARQUET_TAR
FILE_OUTPUT_FORMAT_AVRO_STREAM
FILE_OUTPUT_FORMAT_JSON_L
FILE_OUTPUT_FORMAT_MANIFEST
FileSuffix#
The expected suffix of the file. For example, “parquet”, “json”, “csv”, etc.
suffixstring required
Iso8601Timestamp#
Absolute timestamps serialized in ISO-8601 form. No additional parser configuration is needed.
A message with no fields.
RelativeTimestamp#
Relative timestamp parser: interprets each row’s timestamp as an offset from a fixed origin.
time_unitstringUnit in which relative offsets are expressed. Aliases the classic REST TimeUnit alias.
offsetstring (date-time)Starting timestamp to use when indexing the file.
SearchFilter#
Set exactly one of the fields below.
- one of
tag,status,and,extractorrequired
StatusFilter#
statusContainerImageStatusrequired
TagFilter#
V2 search filter types. V2 deliberately omits NameFilter (v2 images have no user-supplied name) in favour of ExtractorFilter, which selects images by the containerized extractor they belong to.
tagstring required
TimestampMetadata#
Describes how to derive a row timestamp from the extracted output.
series_namestring requiredName of the series within the output whose values are used as the row timestamp.
timestamp_typeTimestampTyperequiredHow the values in
series_nameshould be interpreted as timestamps.
TimestampType#
Selects between relative-offset and absolute-timestamp parsing strategies.
Set exactly one of the fields below.
- one of
relative,absoluterequired
relativeRelativeTimestamp
absoluteAbsoluteTimestamp
Page design based on Scalar, MIT License.