---
title: "POST /udl/soiobservationset/createBulk"
method: POST
path: "/udl/soiobservationset/createBulk"
tags: ["Observation"]
---

# POST /udl/soiobservationset/createBulk

`POST /udl/soiobservationset/createBulk`

## Request

- Base URL: `https://unifieddatalibrary.com`
- URL: `https://unifieddatalibrary.com/udl/soiobservationset/createBulk`
- Auth: none declared

Service operation intended for initial integration only, to take a list of SOIObservationSet records as a POST body and ingest into the database. This operation is not intended to be used for automated feeds into UDL. Data providers should contact the UDL team for specific role assignments and for instructions on setting up a permanent feed through an alternate mechanism.

## Request body

- SOIObservationSetIngest[]
  - `id` string: Unique identifier of the record, auto-generated by the system.
  - `classificationMarking` string, required: Classification marking of the data in IC/CAPCO Portion-marked format.
  - `msgCreateDate` string, date-time: SOI msgCreateDate time in ISO 8601 UTC time, with millisecond precision.
  - `idSensor` string: ID of the observing sensor.
  - `origSensorId` string: Optional identifier provided by the record source to indicate the sensor identifier to which this attitude set applies if this set is reporting a single sensor orientation. This may be an internal identifier and not necessarily a valid sensor ID.
  - `sensorAsId` string: ID of the AttitudeSet record for the observing sensor.
  - `idOnOrbit` string: Unique identifier of the target on-orbit object, if correlated.
  - `satNo` integer: Satellite/catalog number of the target on-orbit object.
  - `origObjectId` string: Optional identifier provided by observation source to indicate the target onorbit object of this observation. This may be an internal identifier and not necessarily a valid satellite number.
  - `senlat` number, double: Sensor WGS84 latitude at startTime (if mobile/onorbit) in degrees. If null, can be obtained from sensor info. -90 to 90 degrees (negative values south of equator).
  - `senlon` number, double: Sensor WGS84 longitude at startTime (if mobile/onorbit) in degrees. If null, can be obtained from sensor info. -180 to 180 degrees (negative values south of equator).
  - `senalt` number, double: Sensor altitude at startTime (if mobile/onorbit) in kilometers.
  - `senx` number, double: Cartesian X position of the observing mobile/onorbit sensor at startTime, in kilometers, in the specified senReferenceFrame. If senReferenceFrame is null then J2K should be assumed.
  - `seny` number, double: Cartesian Y position of the observing mobile/onorbit sensor at startTime, in kilometers, in the specified senReferenceFrame. If senReferenceFrame is null then J2K should be assumed.
  - `senz` number, double: Cartesian Z position of the observing mobile/onorbit sensor at startTime, in kilometers, in the specified senReferenceFrame. If senReferenceFrame is null then J2K should be assumed.
  - `senvelx` number, double: Cartesian X velocity of the observing mobile/onorbit sensor at startTime, in kilometers per second, in the specified senReferenceFrame. If senReferenceFrame is null then J2K should be assumed.
  - `senvely` number, double: Cartesian Y velocity of the observing mobile/onorbit sensor at startTime, in kilometers per second, in the specified senReferenceFrame. If senReferenceFrame is null then J2K should be assumed.
  - `senvelz` number, double: Cartesian Z velocity of the observing mobile/onorbit sensor at startTime, in kilometers per second, in the specified senReferenceFrame. If senReferenceFrame is null then J2K should be assumed.
  - `idElset` string: ID of the UDL Elset of the Space Object under observation.
  - `startTime` string, date-time, required: Observation set detection start time in ISO 8601 UTC with microsecond precision.
  - `endTime` string, date-time: Observation set detection end time in ISO 8601 UTC with microsecond precision.
  - `numObs` integer, required: The number of observation records in the set.
  - `type` 'OPTICAL' | 'RADAR', required: Observation type (OPTICAL, RADAR).
  - `polarAngleStart` number, double: Polar angle of the gimbal/mount at observation set detection start time in degrees.
  - `polarAngleEnd` number, double: Polar angle of the gimbal/mount at observation set detection end time in degrees.
  - `referenceFrame` 'J2000' | 'EFG/TDR' | 'ECR/ECEF' | 'TEME' | 'ITRF' | 'GCRF': The reference frame of the observation measurements. If the referenceFrame is null it is assumed to be J2000.
  - `senReferenceFrame` 'J2000' | 'EFG/TDR' | 'ECR/ECEF' | 'TEME' | 'ITRF' | 'GCRF': The reference frame of the observing sensor state. If the senReferenceFrame is null it is assumed to be J2000.
  - `losDeclinationStart` number, double: Line of sight declination at observation set detection start time. Specified in degrees, in the specified referenceFrame. If referenceFrame is null then J2K should be assumed (e.g -30 to 130.0).
  - `losDeclinationEnd` number, double: Line of sight declination at observation set detection end time. Specified in degrees, in the specified referenceFrame. If referenceFrame is null then J2K should be assumed (e.g -30 to 130.0).
  - `pointingAngleAzStart` number, double: Pointing angle of the Azimuth gimbal/mount at observation set detection start time. Specified in degrees.
  - `pointingAngleAzEnd` number, double: Pointing angle of the Azimuth gimbal/mount at observation set detection end time. Specified in degrees.
  - `pointingAngleElStart` number, double: Pointing angle of the Elevation gimbal/mount at observation set detection start time. Specified in degrees.
  - `pointingAngleElEnd` number, double: Pointing angle of the Elevation gimbal/mount at observation set detection end time. Specified in degrees.
  - `pixelArrayWidth` integer: Pixel array size (width) in pixels.
  - `pixelArrayHeight` integer: Pixel array size (height) in pixels.
  - `numSpectralFilters` integer: The value is the number of spectral filters used.
  - `spectralFilters` string[]: Array of the SpectralFilters keywords, must be present for all values n=1 to numSpectralFilters, in incrementing order of n, and for no other values of n.
  - `collectionMode` string: Mode indicating telescope movement during collection (AUTOTRACK, MANUAL AUTOTRACK, MANUAL RATE TRACK, MANUAL SIDEREAL, SIDEREAL, RATE TRACK).
  - `gain` number, double: The gain used during the collection, in units of photoelectrons per analog-to-digital unit (e-/ADU). If no gain is used, the value = 1.
  - `binningHoriz` integer: The number of pixels binned horizontally.
  - `binningVert` integer: The number of pixels binned vertically.
  - `solarMag` number, double: The in-band solar magnitude at 1 A.U.
  - `pixelMin` integer: The minimum valid pixel value.
  - `pixelMax` integer: The maximum valid pixel value.
  - `softwareVersion` string: Software Version used to Capture, Process, and Deliver the data.
  - `satelliteName` string: Name of the target satellite.
  - `starCatName` string: Name of the Star Catalog used for photometry and astrometry.
  - `corrQuality` number, double: Object Correlation Quality value. Measures how close the observed object's orbit is to matching an object in the catalog. The scale of this field may vary depending on provider. Users should consult the data provider to verify the meaning of the value (e.g. A value of 0.0 indicates a high/strong correlation, while a value closer to 1.0 indicates low/weak correlation).
  - `uct` boolean: Boolean indicating whether the target object was unable to be correlated to a known object. This flag should only be set to true by data providers after an attempt to correlate to an OnOrbit object was made and failed. If unable to correlate, the 'origObjectId' field may be populated with an internal data provider specific identifier.
  - `validCalibrations` string: Key to indicate which, if any of, the pre/post photometer calibrations are valid for use when generating data for the EOSSA file. If the field is not populated, then the provided calibration data will be used when generating the EOSSA file (e.g. PRE, POST, BOTH, NONE).
  - `calibrationType` string: Type of calibration used by the Sensor (e.g. ALL SKY, DIFFERENTIAL, DEFAULT, NONE).
  - `percentSatThreshold` number, double: A threshold for percent of pixels that make up object signal that are beyond the saturation point for the sensor that are removed in the EOSSA file, in range of 0 to 1.
  - `changeDetected` boolean: Boolean indicating if any change event was detected, based on historical collection data for the object.
  - `periodicityChangeDetected` boolean: Boolean indicating if a periodicity change event was detected, based on historical collection data for the object.
  - `brightnessVarianceChangeDetected` boolean: Boolean indicating if a brightness variance change event was detected, based on historical collection data for the object.
  - `solarPhaseAngleBrightnessChangeDetected` boolean: Boolean indicating if a solar phase angle brightness change event was detected, based on historical collection data for the object.
  - `changeConf` string: Overall qualitative confidence assessment of change detection results (e.g. HIGH, MEDIUM, LOW).
  - `collectionDensityConf` string: Qualitative Collection Density assessment, with respect to confidence of detecting a change event (e.g. HIGH, MEDIUM, LOW).
  - `periodicitySamplingConf` string: Qualitative Periodicity Sampling assessment, with respect to confidence of detecting a change event (e.g. HIGH, MEDIUM, LOW).
  - `periodicityDetectionConf` string: Qualitative assessment of the periodicity detection results from the Attitude and Shape Retrieval (ASR) Periodicity Assessment (PA) Tool (e.g. HIGH, MEDIUM, LOW).
  - `collectionId` string: Universally Unique collection ID. Mechanism to correlate Single Point Photometry (SPP) JSON files to images.
  - `calibrations` SOICalibrationIngest[]: Array of SOI Calibrations associated with this SOIObservationSet.
    - `calExtinctionCoeff` number, double: Coefficient value for how much signal would be lost to atmospheric attenuation for a star at zenith, in magnitudes per air mass.
    - `calSkyBg` number, double: Average Sky Background signals in magnitudes, at calibration. Sky Background refers to the incoming light from an apparently empty part of the night sky.
    - `calBgIntensity` number, double: Background intensity, at calibration, specified in kilowatts per steradian per micrometer.
    - `calSpectralFilterSolarMag` number, double: In-band solar magnitudes at 1 A.U, at calibration (e.g. -5.0 to 30.0).
    - `calZeroPoint` number, double: Value representing the difference between the catalog magnitude and instrumental magnitude for a set of standard stars, at calibration (e.g. -5.0 to 30.0).
    - `calNumDetectedStars` integer: Number of detected stars in the FOV with the target object, at calibration. Helps identify frames with clouds.
    - `calNumCorrelatedStars` integer: Number of correlated stars in the FOV with the target object, at calibration. Can be 0 for narrow FOV sensors.
    - `calExtinctionCoeffUnc` number, double: Extinction coefficient uncertainty in magnitudes, at calibration, which represents the difference between the measured brightness and predicted brightness of the star with the extinction removed, making it exo-atmospheric (e.g. -5.0 to 30.0).
    - `calExtinctionCoeffMaxUnc` number, double: Maximum extinction coefficient uncertainty in magnitudes, at calibration (e.g. -5.0 to 30.0).
    - `calTime` string, date-time: Start time of calibration in ISO 8601 UTC time, with millisecond precision.
    - `calType` string: Type of calibration (e.g. PRE, MID, POST).
  - `tags` string[]: Optional array of provider/source specific tags for this data, where each element is no longer than 32 characters, used for implementing data owner conditional access controls to restrict access to the data. Should be left null by data providers unless conditional access controls are coordinated with the UDL team.
  - `transactionId` string: Optional identifier to track a commercial or marketplace transaction executed to produce this data.
  - `opticalSOIObservationList` OpticalSOIObservationIngest[]: OpticalSOIObservations associated with this SOIObservationSet.
    - `obStartTime` string, date-time, required: Observation detection start time in ISO 8601 UTC with microsecond precision.
    - `intensityTimes` string[]: Array of start times for each intensity measurement. The 1st value in the array will match obStartTime.
    - `currentSpectralFilterNum` integer: The reference number, x, where x ranges from 1 to n, where n is the number specified in spectralFilters that corresponds to the spectral filter used.
    - `expDuration` number, double: Image exposure duration in seconds.
    - `intensities` number[]: Array of intensities of the Space Object for observations, in kilowatts per steradian per micrometer.
    - `extinctionCoeffs` number[]: Array of coefficients for how much signal would be lost to atmospheric attenuation for a star at zenith for each element in intensities, in magnitudes per air mass.
    - `extinctionCoeffsUnc` number[]: Array of extinction coefficient uncertainties for each element in intensities. Each value represents the difference between the measured brightness and predicted brightness of the star with the extinction removed, making it exo-atmospheric (e.g. -5.0 to 30.0).
    - `skyBgs` number[]: Array of average Sky Background signals, in magnitudes, with a value corresponding to the time of each intensity measurement. Sky Background refers to the incoming light from an apparently empty part of the night sky.
    - `localSkyBgs` number[]: Array of local average Sky Background signals, in magnitudes, with a value corresponding to the time of each intensity measurement. Sky Background refers to the incoming light from an apparently empty part of the night sky.
    - `localSkyBgsUnc` number[]: Array of uncertainty of the local average Sky Background signal, in magnitudes, with a value corresponding to the time of each intensity measurement.
    - `numDetectedStars` integer[]: Array of the number of detected stars in the FOV with a value for each element in the intensities field.
    - `numCorrelatedStars` integer[]: Array of the number of correlated stars in the FOV with a value for each element in the intensities field.
    - `zeroPoints` number[]: Array of values for the zero-point in magnitudes, calculated at the time of each intensity measurement. It is the difference between the catalog mag and instrumental mag for a set of standard stars (e.g. -5.0 to 30.0).
    - `ras` number[]: Array of right ascension values, in degrees, of the Target object from the frame of reference of the sensor. A value is provided for each element in the intensities field.
    - `declinations` number[]: Array of declination values, in degrees, of the Target object from the frame of reference of the sensor. A value is provided for each element in the intensities field, at the middle of the frame’s exposure time.
    - `raRates` number[]: Array of right ascension rate values, in degrees per second, measuring the rate the telescope is moving to track the Target object from the frame of reference of the sensor, for each element in the intensities field, at the middle of the frame’s exposure time.
    - `declinationRates` number[]: Array of declination rate values, in degrees per second, measuring the rate speed at which an object's declination changes over time, for each element in the intensities field, at the middle of the frame's exposure time.
    - `percentSats` number[]: Array of values giving the percent of pixels that make up the object signal that are beyond the saturation point for the sensor, with a value for each element in the intensities field.
  - `radarSOIObservationList` RadarSOIObservationIngest[]: RadarSOIObservations associated with this RadarSOIObservationSet.
    - `obStartTime` string, date-time, required: Observation detection start time in ISO 8601 UTC format with microsecond precision.
    - `tovs` string[]: Array of the times of validity in ISO 8601 UTC format with microsecond precision.
    - `rcsValues` number[]: Array of observed radar cross section (RCS) values, in square meters.
    - `rcsErrorEsts` number[]: Array of error estimates of RCS values, in square meters.
    - `polarizations` string[]: Array of sensor polarizations when collecting the data. Polarization is a property of electromagnetic waves that describes the orientation of their oscillations. Possible values are H - (Horizontally Polarized) Perpendicular to Earth's surface, V - (Vertically Polarized) Parallel to Earth's surface, L - (Left Hand Circularly Polarized) Rotating left relative to the Earth's surface, R - (Right Hand Circularly Polarized) Rotating right relative to the Earth's surface.
    - `waveformNumber` integer: A unique numeric or hash identifier assigned to each distinct waveform, enabling traceability between the waveform used and the images or data products generated from it.
    - `spectralWidths` number[]: Array of spectral widths, in hertz. The spectral width of a satellite can help determine if an object is stable or tumbling which is often useful to distinguish a rocket body from an active stabilized payload or to deduce a rotational period of slowly tumbling objects at GEO.
    - `rspaces` number[]: Array of range sample spacing in meters. The 'tovs' and 'rspaces' arrays must match in size, if 'rspaces' is provided.
    - `xspaces` number[]: Array of cross-range sample spacing in meters. The 'tovs' and 'xspaces' arrays must match in size, if 'xspaces' is provided.
    - `doppler2XRs` number[]: Array of conversion factors between Doppler in hertz and cross-range in meters. The 'tovs' and 'doppler2XRs' arrays must match in size, if 'doppler2XRs' is provided.
    - `deltaTimes` number[]: Array of average Interpulse spacing in seconds. The 'tovs' and 'deltaTimes' arrays must match in size, if 'deltaTimes' is provided.
    - `aspectAngles` number[]: Array of the aspect angle at the center of the image in degrees. The 'tovs' and 'aspectAngles' arrays must match in size, if 'aspectAngles' is provided.
    - `projAngVels` number[]: Array of the component of target angular velocity observable by radar in radians per second. The 'tovs' and 'projAngVels' arrays must match in size, if 'projAngVels' is provided.
    - `idStateVector` string: Optional id of assumed StateVector of object being observed.
    - `idAttitudeSet` string: Optional id of assumed AttitudeSet of object being observed.
    - `ranges` number[]: Array of the range to target at image center in kilometers. The 'tovs' and 'ranges' arrays must match in size, if 'ranges' is provided. If there is an associated image the range is assumed to be at image center.
    - `azimuths` number[]: Array of the azimuth angle to target at image center in degrees. The 'tovs' and 'azimuths' arrays must match in size, if 'azimuths' is provided. If there is an associated image the azimuth angle is assumed to be at image center.
    - `elevations` number[]: Array of the elevation angle to target at image center in degrees. The 'tovs' and 'elevations' arrays must match in size, if 'elevations' is provided. If there is an associated image the elevation angle is assumed to be at image center.
    - `rangeRates` number[]: Array of the range rate of target at image center in kilometers per second. The 'tovs' and 'rangeRates' arrays must match in size, if 'rangeRates' is provided. If there is an associated image the range rate is assumed to be at image center.
    - `azimuthRates` number[]: Array of the azimuth rate of target at image center in degrees per second. The 'tovs' and 'azimuthRates' arrays must match in size, if 'azimuthRates' is provided. If there is an associated image the azimuth rate is assumed to be at image center.
    - `elevationRates` number[]: Array of the elevation rate of target at image center in degrees per second. The 'tovs' and 'elevationRates' arrays must match in size, if 'elevationRates' is provided. If there is an associated image the elevation rate is assumed to be at image center.
    - `rangeAccels` number[]: Array of the range accelerations of target in kilometers per second squared. The 'tovs' and 'rangeAccels' arrays must match in size, if 'rangeAccels' is provided. If there is an associated image the range acceleration is assumed to be at image center.
    - `azimuthBiases` number[]: Array of sensor azimuth angle biases in degrees. The 'tovs' and 'azimuthBiases' arrays must match in size, if 'azimuthBiases' is provided.
    - `elevationBiases` number[]: Array of sensor elevation biases in degrees. The 'tovs' and 'elevationBiases' arrays must match in size, if 'elevationBiases' is provided.
    - `rangeBiases` number[]: Array of sensor range biases in kilometers. The 'tovs' and 'rangeBiases' arrays must match in size, if 'rangeBiases' is provided.
    - `integrationAngles` number[]: Array of Integration angles in degrees. The 'tovs' and 'integrationAngles' arrays must match in size, if 'integrationAngles' is provided.
    - `crossRangeRes` number[]: Array of cross-range resolutions (accounting for weighting function) in kilometers. The 'tovs' and 'crossRangeRes' arrays must match in size, if 'crossRangeRes' is provided.
    - `beta` number, double: Beta angle (between target and radar-image frame z axis) in degrees.
    - `kappa` number, double: Kappa angle (between radar-line-of-sight and target-frame x axis) in degrees.
    - `peakAmplitudes` number[]: Array of the peak pixel amplitude for each image in decibels. The 'tovs' and 'peakAmplitudes' arrays must match in size, if 'peakAmplitudes' is provided.
    - `centerFrequency` number, double: Radar center frequency of the radar in hertz.
    - `pulseBandwidth` number, double: Bandwidth of radar pulse in hertz.
    - `xpos` number[]: Array of the cartesian X positions of the target, in kilometers, in the specified referenceFrame. If referenceFrame is null then J2K should be assumed. The 'tovs' and 'xpos' arrays must match in size, if 'xpos' is provided.
    - `ypos` number[]: Array of the cartesian Y positions of the target, in kilometers, in the specified referenceFrame. If referenceFrame is null then J2K should be assumed. The 'tovs' and 'ypos' arrays must match in size, if 'ypos' is provided.
    - `zpos` number[]: Array of the cartesian Z positions of the target, in kilometers, in the specified referenceFrame. If referenceFrame is null then J2K should be assumed. The 'tovs' and 'zpos' arrays must match in size, if 'zpos' is provided.
    - `xvel` number[]: Array of the cartesian X velocities of target, in kilometers per second, in the specified referenceFrame. If referenceFrame is null then J2K should be assumed. The 'tovs' and 'xvel' arrays must match in size, if 'xvel' is provided.
    - `yvel` number[]: Array of the cartesian Y velocities of target, in kilometers per second, in the specified referenceFrame. If referenceFrame is null then J2K should be assumed. The 'tovs' and 'yvel' arrays must match in size, if 'yvel' is provided.
    - `zvel` number[]: Array of the cartesian Z velocities of target, in kilometers per second, in the specified referenceFrame. If referenceFrame is null then J2K should be assumed. The 'tovs' and 'zvel' arrays must match in size, if 'zvel' is provided.
    - `xaccel` number[]: Array of the cartesian X accelerations, in kilometers per second squared, in the specified referenceFrame. If referenceFrame is null then J2K should be assumed. The 'tovs' and 'xaccel' arrays must match in size, if 'xaccel' is provided.
    - `yaccel` number[]: Array of the cartesian Y accelerations, in kilometers per second squared, in the specified referenceFrame. If referenceFrame is null then J2K should be assumed. The 'tovs' and 'yaccel' arrays must match in size, if 'yaccel' is provided.
    - `zaccel` number[]: Array of the cartesian Z accelerations, in kilometers per second squared, in the specified referenceFrame. If referenceFrame is null then J2K should be assumed. The 'tovs' and 'zaccel' arrays must match in size, if 'zaccel' is provided.
  - `createdAt` string, date-time: Time the row was created in the database, auto-populated by the system.
  - `createdBy` string: Application user who created the row in the database, auto-populated by the system.
  - `source` string, required: Source of the data.
  - `origin` string: Originating system or organization which produced the data, if different from the source. The origin may be different than the source if the source was a mediating system which forwarded the data on behalf of the origin system. If null, the source may be assumed to be the origin.
  - `origNetwork` string: The originating source network on which this record was created, auto-populated by the system.
  - `sourceDL` string: The source data library from which this record was received. This could be a remote or tactical UDL or another data library. If null, the record should be assumed to have originated from the primary Enterprise UDL.
  - `dataMode` 'REAL' | 'TEST' | 'SIMULATED' | 'EXERCISE', required: Indicator of whether the data is REAL, TEST, EXERCISE, or SIMULATED data: REAL: Data collected or produced that pertains to real-world objects, events, and analysis. TEST: Specific datasets used to evaluate compliance with specifications and requirements, and for validating technical, functional, and performance characteristics. EXERCISE: Data pertaining to a government or military exercise. The data may include both real and simulated data. SIMULATED: Synthetic data generated by a model to mimic real-world datasets.

## Response `204`

Success

## Other responses

- `400`: Bad Request
- `401`: Invalid/Missing User Credentials
- `403`: User Is Not Authorized
- `405`: Method Not Allowed
- `415`: MediaType Unsupported
- `429`: Rate of Requests Exceeds Allowed Limit
- `500`: Internal Server Error

## Changes

> 12 revisions in range; 1 could not be searched.

- **2025-10-23** `09bd422d5ac1`: 1 info
  - added the new optional request property `items/radarSOIObservationList/items/waveformNumber`
- **2025-09-26** `45631f9bb3f0`: 1 breaking, 1 info
  - the `items/createdBy` request property's minLength was increased from `0` to `1`
  - added the new optional request property `items/opticalSOIObservationList/items/declinationRates`
- **2025-04-16** `75f764c843a9`: 1 breaking, 2 info
  - the `items/opticalSOIObservationList/items/currentSpectralFilterNum` request property format changed from `int32` to `int16`
  - api operation id `createBulks_31` removed and replaced with ``
  - the endpoint scheme security `BasicAuth` was removed from the API

[Operation history](https://skmtc.dev/bluestaq/apis/unified-data-library-services-api/changes/udl/soiobservationset/createBulk/post.md)

---

[API](https://skmtc.dev/bluestaq/apis/unified-data-library-services-api.md) - [All operations](https://skmtc.dev/bluestaq/apis/unified-data-library-services-api/llms.txt) - [OpenAPI document](https://skmtc.dev/bluestaq/apis/unified-data-library-services-api/revisions/bd17bc53681e?raw)
