Object
Object is a basic input for JSON data.
๐ก Common object usageโ
The object input type can be used to store any key/value based data, for example:
- Configurations
 - Tags
 - HTTP responses
 - Dictionaries/Hash maps
 
In the live demo self-service hub page, we can see the Open terraform PR to add S3 bucket action whose policy input is an object input. ๐ฌ
API definitionโ
- Basic
 - Select (Enum)
 - Array
 
{
  "myObjectInput": {
    "title": "My object input",
    "icon": "My icon",
    "description": "My object input",
    "type": "object",
    "default": {
      "myKey": "myValue"
    }
  }
}
{
  "myObjectSelectInput": {
    "title": "My object select input",
    "icon": "My icon",
    "description": "My object select input",
    "type": "object",
    "enum": [
      {
        "myKey": 1
      },
      {
        "myKey": 2
      }
    ]
  }
}
{
  "myObjectArrayInput": {
    "title": "My object array input",
    "icon": "My icon",
    "description": "My object array input",
    "type": "array",
    "items": {
      "type": "object"
    }
  }
}
Check out Port's API reference to learn more.
Terraform definitionโ
- Basic
 - Array
 
resource "port_action" "myAction" {
  # ...action properties
  user_properties = {
    object_props = {
      "myObjectInput" = {
        title       = "My object input"
        description = "My object input"
        default     = jsonencode({ "myKey" = "myValue" })
      }
    }
  }
}
resource "port_action" "myAction" {
  # ...action properties
  user_properties = {
    array_props = {
      "myObjectArrayInput" = {
        title       = "My object array input"
        description = "My object array input"
        object_items = {}
      }
    }
  }
}
Validate objectโ
Object validations support the following operators:
properties- which keys must appear and what their type should be;additionalProperties- are keys not defined inpropertiesallowed and what their type should be;patternProperties- which regex pattern should properties follow
tip
Object validations follow the JSON schema model, refer to the JSON schema docs to learn about all of the available validations
- Basic
 - Array
 - Terraform - coming soon
 
{
  "myObjectInput": {
    "title": "My object input",
    "icon": "My icon",
    "description": "My object input",
    "type": "object",
    "properties": {
      "myRequiredProp": { "type": "number" }
    },
    "patternProperties": {
      "^S_": { "type": "string" },
      "^I_": { "type": "number" }
    },
    "additionalProperties": true
  }
}
{
  "myObjectArrayInput": {
    "title": "My object array input",
    "icon": "My icon",
    "description": "My object array input",
    "type": "array",
    "items": {
      "type": "object",
      "properties": {
        "myRequiredProp": { "type": "number" }
      },
      "patternProperties": {
        "^S_": { "type": "string" },
        "^I_": { "type": "number" }
      },
      "additionalProperties": true
    }
  }
}