Breadcrumbs

Metavault API - Create satellite

Create{Hub,Link}Satellite - POST

Path

/api/projects/{projectId}/model/{parentEntityType}/{hubId,linkId}/satellites

Http Method

POST

Overview

Create a satellite entity.

This only creates the satellite entity but not its mapping. Typically, to create a satellite, one should call the: “Create satellite and its mappings” call. This will ensure it is correctly linked to a data package table.

Required permissions

  • Write access to the Build module. BUILD WRITE

Request

Path parameters

Parameter

Type

Required

Description

Example

parentEntityType

string

yes

hubs to attach a satellite to a hub, links to attach a satellite to a link.

hubs

hubId

string

yes (for hubs)

The id of the hub this satellite is linked to.

f81e889e-4d64-405f-bf3c-9ac317fb046c

linkId

string

yes (for links)

The id of the link this satellite is linked to.

eaef9002-4d64-405f-bf3c-9ac317fb0aae

Request body

JSON
{
  "name": "MySatellite2",
  "technicalDescription": "my satellite technical description",
  "businessDescription": "my satellite business description",
  "columns": [
    {
        "businessName": "Column one business name",
        "columnName":  "column1",
        "dataType":  "String",
        "defaultValue":  "one",
        "description":  "The description of coolumn 1",
        "required": true,
        "order": 0,
        "length": 50,
        "precision": 10,
        "scale": 5,
        "isComputed": false,
        "isSequence": false
    },
    {
        "businessName": "Column two business name",
        "columnName":  "column2",
        "dataType":  "String",
        "defaultValue":  null,
        "description":  "The description of coolumn 2",
        "required": false,
        "order": 1,
        "length": 50,
        "precision": null,
        "scale": null,
        "isComputed": true,
        "isSequence": true
    }
  ],
  "isMultiActive": true,
  "subsequenceColumnName": "column2"
}
Field descriptions

Field

Type

Required

Description

Constraints

name

string

yes

The name of the satellite.

should be unique

technicalDescription

string

no

The technical description of the satellite.


businessDescription

string

no

The business description of the satellite.


isMultiActive

boolean

yes

Whether or not this satellite is multi-active. i.e. whether several satellite entries for the same hash key can be valid.


subsequenceColumnName

string

no

If the satellite is multi-active, and this is null, the satellite will be a classical VTCP satellite. All data loads will create new entries for the satellite. If this points to the columnName of one of the columns, the satellite will be a delta-driven satellite. A hash diff column will be computed to only load multi-active sets that change.

Has to be the name of a column that exists.

columns

array of objects

yes

The list of columns of the satellite.


columns.businessName

string

no

The business name of the column.


columns.columnName

string

yes

The name of the column.


columns.defaultValue

string

no

The default value of the column, i.e. the DEFAULT database values.


columns.description

string

no

The description of the column.


columns.required

boolean

yes

If true, the column should contain a value, i.e. NOT NULL. In practice, this is informative, as all columns in a satellite are forced to be nullable.


columns.order

integer

true

The index of the column.

Should be unique.

columns.dataType

string

yes

The name of the type of the column. This is one of .NET’s System.Data.DbType values. https://learn.microsoft.com/en-us/dotnet/api/system.data.dbtype?view=net-8.0


columns.length

integer

no

The length of the type.

Relevant for column types that have length, like char or byte strings.

columns.precision

integer

no

The precision of the type.

Relevant for column types that have precision like decimal.

columns.scale

integer

no

The scale of the type.

Relevant for column types that have scale like decimal.

columns.isComputed

boolean

yes

Saved, but purely informative


columns.isSequence

boolean

yes

Saved, but purely informative


Response

Success response (200 OK)

JSON
{
  "_embedded": {
    "columns": [
      {
        "id": "3e54e05a-43fa-41f7-ac16-cef06a008d2d",
        "columnName": "column1",
        "dataType": "String",
        "typeFullName": "VARCHAR(50)",
        "businessName": "Column one business name",
        "description": "The description of coolumn 1",
        "required": true,
        "defaultValue": "one",
        "order": 0,
        "length": 50,
        "precision": 10,
        "scale": 5,
        "isSequence": false,
        "isComputed": false
      },
      {
        "id": "d9e8f373-02ac-4665-adc6-9c034865864c",
        "columnName": "column2",
        "dataType": "String",
        "typeFullName": "VARCHAR(50)",
        "businessName": "Column two business name",
        "description": "The description of coolumn 2",
        "required": false,
        "order": 1,
        "length": 50,
        "isSequence": true,
        "isComputed": true
      }
    ]
  },
  "id": "3e252928-0470-4334-8026-6ac2d3fc1260",
  "name": "Employee_MySatellite2",
  "displayName": "MySatellite2",
  "businessDescription": "my satellite business description",
  "technicalDescription": "my satellite technical description",
  "deployedInProduction": false,
  "entityType": "Satellite",
  "tableName": "dv.mash_Employee_MySatellite2",
  "isMultiActive": true,
  "subSequenceColumn": {
    "id": "d9e8f373-02ac-4665-adc6-9c034865864c",
    "columnName": "column2",
    "dataType": "String",
    "typeFullName": "VARCHAR(50)",
    "businessName": "Column two business name",
    "description": "The description of coolumn 2",
    "required": false,
    "order": 1,
    "length": 50,
    "isSequence": true,
    "isComputed": true
  }
}
Response fields

Field

Type

Description

id

string

The app-generated id of the satellite.

name

string

The name of the satellite, as used in the database.

displayName

string

The chosen name of the satellite.

businessDescription

string

The business description of the satellite.

technicalDescription

string

The technical description of the satellite.

deployedInProduction

boolean

deprecated always false

entityType

string

always “Satellite”

tableName

string

The default technical name that will be used when trying to deploy this entity’s table.

isMultiActive

boolean

Whether or not this satellite is multi-active. i.e. whether several satellite entries for the same hash key can be valid.

subSequenceColumn

object

If the satellite is multi-active, and this is null, the satellite is a classical VTCP satellite. If this is one of the satellite’s columns, the satellite will be a delta-driven satellite. For detials about this object’s fields, see the columns array below.

_embedded.columns

array of objects

List of the satellite’s columns.

_embedded.columns.id

string

The app-generated unique id of the column.

_embedded.columns.columnName

string

The name of the column.

_embedded.columns.dataType

string

The name of the type of the column. This is one of .NET’s System.Data.DbType values. https://learn.microsoft.com/en-us/dotnet/api/system.data.dbtype?view=net-8.0

_embedded.columns.typeFullName

string

Return a string representation of the underlying column type, related to classical SQL types, and is used for display. This representation is unrelated to the actual underlying database.

_embedded.columns.businessName

string

The business name of the column.

_embedded.columns.description

string

The description of the column.

_embedded.columns.required

boolean

If true, the column should contain a value, i.e. NOT NULL. In practice, this is informative, as all columns in a satellite are forced to be nullable.

_embedded.columns.defaultValue

string

The default value of the column, i.e. the DEFAULT database values.

_embedded.columns.order

integer

The index of the column.

_embedded.columns.length

integer

The length of the type.

_embedded.columns.precision

integer

The precision of the type.

_embedded.columns.scale

integer

The scale of the type.

_embedded.columns.isSequence

boolean

Not used.

_embedded.columns.isComputed

boolean

Not used.