diff --git a/CodecoApp_Attributes.md b/CodecoApp_Attributes.md
new file mode 100644
index 0000000000000000000000000000000000000000..529e0bb8caf4ba24b6c3c8a4678e73b068c3a443
--- /dev/null
+++ b/CodecoApp_Attributes.md
@@ -0,0 +1,99 @@
+# CODECO Spec Attributes
+
+`CodecoApp Spec` defines the desired state of CodecoApp.
+
+## CodecoApp
+
+### AppName (String)
+- Used to identify the CODECO application.
+- **Optional**
+
+### QosClass (String)
+- Used to identify the CODECO application QoS.
+- Possible values: `Gold`, `Silver`, `BestEffort`
+- **Optional**
+
+### Workloads
+- Used to identify the CODECO microservices which compose the application.
+- Defines the desired state of CodecoApp microservices.
+- **Minimum 1 item required**
+
+### SecurityClass (String)
+- Used to identify the CODECO application security class.
+- Possible values: `High`, `Good`, `Medium`, `Low`, `None`
+- **Optional**
+
+### ComplianceClass (String)
+- Expected level of compliance, based on a scale.
+- Possible values: `High`, `Medium`, `Low`
+- **Optional**
+
+### AppEnergyLimit (Integer)
+- Maximum desired level of energy expenditure for the overall Kubernetes infrastructure associated with an application (percent).
+- **Optional**
+
+### FailureTolerance (String)
+- Desired tolerance to infrastructure failures.
+- Possible values: `High`, `Medium`, `Low`
+- **Optional**
+
+## Workloads
+
+### BaseName (String)
+- Used to identify the CODECO microservice.
+- **Mandatory**
+
+### Channels
+- Service channels.
+- **Optional**
+
+### Templatev1.PodSpec
+- A reference to the PodSpec of the microservice.
+- **Optional**
+
+### NWBandwidthMbs (String)
+- Desired network bandwidth.
+- **Optional**
+
+### NWLatencyMs (String)
+- Desired network latency.
+- **Optional**
+
+## Channels
+
+### BaseName (String)
+- Used as the name for the channel resource.
+- **Optional**
+
+### ServiceClass (String)
+- A communication service class for this channel.
+- Currently, two service classes are supported: `BESTEFFORT` and `ASSURED`.
+- **Optional**
+
+### OtherWorkload
+- Identifies the target workload of the connection via its application name and workload basename.
+- All fields **optional**:
+  - **BaseName (String)**
+  - **ApplicationName (String)**
+  - **Port**: The port where the application listens for Channel data. This must match the `containerPort` on the relevant container.
+
+### AdvancedChannelSettings
+- All fields **optional**:
+
+#### MinBandwidth (String)
+- Specifies the traffic requirements for the Channel.
+- Specified in bit/s, e.g., `5M` means 5 Mbit/s.
+- If only the bandwidth is specified, the system will request a default framesize of 500 bytes for you.
+
+#### MaxDelay (String)
+- The maximum tolerated latency (end-to-end) on this channel in seconds.
+- Examples: `1` means one second, `10e-3` means 10 milliseconds.
+
+#### Framesize (String)
+- Specifies the number of bytes sent in one go.
+- Example: Specifying a framesize of `1K` and a send interval of `10e-3` (10ms) results in an effective bandwidth of 100kB/s or 800kbit/s.
+
+#### SendInterval (String)
+- Specifies the interval between two consecutive frames sent over this channel, in seconds.
+- Examples: `10e-6` means 10 microseconds.
+- The value should not exceed `10e-3` (10ms). The code will cap it at 10ms if a larger value is specified.