@@ -11,6 +11,7 @@ import com.withorb.api.core.ExcludeMissing
1111import com.withorb.api.core.JsonField
1212import com.withorb.api.core.JsonMissing
1313import com.withorb.api.core.JsonValue
14+ import com.withorb.api.core.checkKnown
1415import com.withorb.api.core.checkRequired
1516import com.withorb.api.core.toImmutable
1617import com.withorb.api.errors.OrbInvalidDataException
@@ -32,6 +33,7 @@ private constructor(
3233 private val metadata: JsonField <Metadata >,
3334 private val name: JsonField <String >,
3435 private val status: JsonField <Status >,
36+ private val parameterDefinitions: JsonField <List <ParameterDefinition >>,
3537 private val additionalProperties: MutableMap <String , JsonValue >,
3638) {
3739
@@ -45,7 +47,10 @@ private constructor(
4547 @JsonProperty(" metadata" ) @ExcludeMissing metadata: JsonField <Metadata > = JsonMissing .of(),
4648 @JsonProperty(" name" ) @ExcludeMissing name: JsonField <String > = JsonMissing .of(),
4749 @JsonProperty(" status" ) @ExcludeMissing status: JsonField <Status > = JsonMissing .of(),
48- ) : this (id, description, item, metadata, name, status, mutableMapOf ())
50+ @JsonProperty(" parameter_definitions" )
51+ @ExcludeMissing
52+ parameterDefinitions: JsonField <List <ParameterDefinition >> = JsonMissing .of(),
53+ ) : this (id, description, item, metadata, name, status, parameterDefinitions, mutableMapOf ())
4954
5055 /* *
5156 * @throws OrbInvalidDataException if the JSON field has an unexpected type or is unexpectedly
@@ -91,6 +96,13 @@ private constructor(
9196 */
9297 fun status (): Status = status.getRequired(" status" )
9398
99+ /* *
100+ * @throws OrbInvalidDataException if the JSON field has an unexpected type (e.g. if the server
101+ * responded with an unexpected value).
102+ */
103+ fun parameterDefinitions (): Optional <List <ParameterDefinition >> =
104+ parameterDefinitions.getOptional(" parameter_definitions" )
105+
94106 /* *
95107 * Returns the raw JSON value of [id].
96108 *
@@ -133,6 +145,16 @@ private constructor(
133145 */
134146 @JsonProperty(" status" ) @ExcludeMissing fun _status (): JsonField <Status > = status
135147
148+ /* *
149+ * Returns the raw JSON value of [parameterDefinitions].
150+ *
151+ * Unlike [parameterDefinitions], this method doesn't throw if the JSON field has an unexpected
152+ * type.
153+ */
154+ @JsonProperty(" parameter_definitions" )
155+ @ExcludeMissing
156+ fun _parameterDefinitions (): JsonField <List <ParameterDefinition >> = parameterDefinitions
157+
136158 @JsonAnySetter
137159 private fun putAdditionalProperty (key : String , value : JsonValue ) {
138160 additionalProperties.put(key, value)
@@ -172,6 +194,7 @@ private constructor(
172194 private var metadata: JsonField <Metadata >? = null
173195 private var name: JsonField <String >? = null
174196 private var status: JsonField <Status >? = null
197+ private var parameterDefinitions: JsonField <MutableList <ParameterDefinition >>? = null
175198 private var additionalProperties: MutableMap <String , JsonValue > = mutableMapOf ()
176199
177200 @JvmSynthetic
@@ -182,6 +205,7 @@ private constructor(
182205 metadata = billableMetric.metadata
183206 name = billableMetric.name
184207 status = billableMetric.status
208+ parameterDefinitions = billableMetric.parameterDefinitions.map { it.toMutableList() }
185209 additionalProperties = billableMetric.additionalProperties.toMutableMap()
186210 }
187211
@@ -260,6 +284,40 @@ private constructor(
260284 */
261285 fun status (status : JsonField <Status >) = apply { this .status = status }
262286
287+ fun parameterDefinitions (parameterDefinitions : List <ParameterDefinition >? ) =
288+ parameterDefinitions(JsonField .ofNullable(parameterDefinitions))
289+
290+ /* *
291+ * Alias for calling [Builder.parameterDefinitions] with
292+ * `parameterDefinitions.orElse(null)`.
293+ */
294+ fun parameterDefinitions (parameterDefinitions : Optional <List <ParameterDefinition >>) =
295+ parameterDefinitions(parameterDefinitions.getOrNull())
296+
297+ /* *
298+ * Sets [Builder.parameterDefinitions] to an arbitrary JSON value.
299+ *
300+ * You should usually call [Builder.parameterDefinitions] with a well-typed
301+ * `List<ParameterDefinition>` value instead. This method is primarily for setting the field
302+ * to an undocumented or not yet supported value.
303+ */
304+ fun parameterDefinitions (parameterDefinitions : JsonField <List <ParameterDefinition >>) =
305+ apply {
306+ this .parameterDefinitions = parameterDefinitions.map { it.toMutableList() }
307+ }
308+
309+ /* *
310+ * Adds a single [ParameterDefinition] to [parameterDefinitions].
311+ *
312+ * @throws IllegalStateException if the field was previously set to a non-list.
313+ */
314+ fun addParameterDefinition (parameterDefinition : ParameterDefinition ) = apply {
315+ parameterDefinitions =
316+ (parameterDefinitions ? : JsonField .of(mutableListOf ())).also {
317+ checkKnown(" parameterDefinitions" , it).add(parameterDefinition)
318+ }
319+ }
320+
263321 fun additionalProperties (additionalProperties : Map <String , JsonValue >) = apply {
264322 this .additionalProperties.clear()
265323 putAllAdditionalProperties(additionalProperties)
@@ -304,6 +362,7 @@ private constructor(
304362 checkRequired(" metadata" , metadata),
305363 checkRequired(" name" , name),
306364 checkRequired(" status" , status),
365+ (parameterDefinitions ? : JsonMissing .of()).map { it.toImmutable() },
307366 additionalProperties.toMutableMap(),
308367 )
309368 }
@@ -321,6 +380,7 @@ private constructor(
321380 metadata().validate()
322381 name()
323382 status().validate()
383+ parameterDefinitions().ifPresent { it.forEach { it.validate() } }
324384 validated = true
325385 }
326386
@@ -344,7 +404,8 @@ private constructor(
344404 (item.asKnown().getOrNull()?.validity() ? : 0 ) +
345405 (metadata.asKnown().getOrNull()?.validity() ? : 0 ) +
346406 (if (name.asKnown().isPresent) 1 else 0 ) +
347- (status.asKnown().getOrNull()?.validity() ? : 0 )
407+ (status.asKnown().getOrNull()?.validity() ? : 0 ) +
408+ (parameterDefinitions.asKnown().getOrNull()?.sumOf { it.validity().toInt() } ? : 0 )
348409
349410 /* *
350411 * User specified key-value pairs for the resource. If not present, this defaults to an empty
@@ -580,6 +641,107 @@ private constructor(
580641 override fun toString () = value.toString()
581642 }
582643
644+ class ParameterDefinition
645+ @JsonCreator
646+ private constructor (
647+ @com.fasterxml.jackson.annotation.JsonValue
648+ private val additionalProperties: Map <String , JsonValue >
649+ ) {
650+
651+ @JsonAnyGetter
652+ @ExcludeMissing
653+ fun _additionalProperties (): Map <String , JsonValue > = additionalProperties
654+
655+ fun toBuilder () = Builder ().from(this )
656+
657+ companion object {
658+
659+ /* * Returns a mutable builder for constructing an instance of [ParameterDefinition]. */
660+ @JvmStatic fun builder () = Builder ()
661+ }
662+
663+ /* * A builder for [ParameterDefinition]. */
664+ class Builder internal constructor() {
665+
666+ private var additionalProperties: MutableMap <String , JsonValue > = mutableMapOf ()
667+
668+ @JvmSynthetic
669+ internal fun from (parameterDefinition : ParameterDefinition ) = apply {
670+ additionalProperties = parameterDefinition.additionalProperties.toMutableMap()
671+ }
672+
673+ fun additionalProperties (additionalProperties : Map <String , JsonValue >) = apply {
674+ this .additionalProperties.clear()
675+ putAllAdditionalProperties(additionalProperties)
676+ }
677+
678+ fun putAdditionalProperty (key : String , value : JsonValue ) = apply {
679+ additionalProperties.put(key, value)
680+ }
681+
682+ fun putAllAdditionalProperties (additionalProperties : Map <String , JsonValue >) = apply {
683+ this .additionalProperties.putAll(additionalProperties)
684+ }
685+
686+ fun removeAdditionalProperty (key : String ) = apply { additionalProperties.remove(key) }
687+
688+ fun removeAllAdditionalProperties (keys : Set <String >) = apply {
689+ keys.forEach(::removeAdditionalProperty)
690+ }
691+
692+ /* *
693+ * Returns an immutable instance of [ParameterDefinition].
694+ *
695+ * Further updates to this [Builder] will not mutate the returned instance.
696+ */
697+ fun build (): ParameterDefinition =
698+ ParameterDefinition (additionalProperties.toImmutable())
699+ }
700+
701+ private var validated: Boolean = false
702+
703+ fun validate (): ParameterDefinition = apply {
704+ if (validated) {
705+ return @apply
706+ }
707+
708+ validated = true
709+ }
710+
711+ fun isValid (): Boolean =
712+ try {
713+ validate()
714+ true
715+ } catch (e: OrbInvalidDataException ) {
716+ false
717+ }
718+
719+ /* *
720+ * Returns a score indicating how many valid values are contained in this object
721+ * recursively.
722+ *
723+ * Used for best match union deserialization.
724+ */
725+ @JvmSynthetic
726+ internal fun validity (): Int =
727+ additionalProperties.count { (_, value) -> ! value.isNull() && ! value.isMissing() }
728+
729+ override fun equals (other : Any? ): Boolean {
730+ if (this == = other) {
731+ return true
732+ }
733+
734+ return other is ParameterDefinition &&
735+ additionalProperties == other.additionalProperties
736+ }
737+
738+ private val hashCode: Int by lazy { Objects .hash(additionalProperties) }
739+
740+ override fun hashCode (): Int = hashCode
741+
742+ override fun toString () = " ParameterDefinition{additionalProperties=$additionalProperties }"
743+ }
744+
583745 override fun equals (other : Any? ): Boolean {
584746 if (this == = other) {
585747 return true
@@ -592,15 +754,25 @@ private constructor(
592754 metadata == other.metadata &&
593755 name == other.name &&
594756 status == other.status &&
757+ parameterDefinitions == other.parameterDefinitions &&
595758 additionalProperties == other.additionalProperties
596759 }
597760
598761 private val hashCode: Int by lazy {
599- Objects .hash(id, description, item, metadata, name, status, additionalProperties)
762+ Objects .hash(
763+ id,
764+ description,
765+ item,
766+ metadata,
767+ name,
768+ status,
769+ parameterDefinitions,
770+ additionalProperties,
771+ )
600772 }
601773
602774 override fun hashCode (): Int = hashCode
603775
604776 override fun toString () =
605- " BillableMetric{id=$id , description=$description , item=$item , metadata=$metadata , name=$name , status=$status , additionalProperties=$additionalProperties }"
777+ " BillableMetric{id=$id , description=$description , item=$item , metadata=$metadata , name=$name , status=$status , parameterDefinitions= $parameterDefinitions , additionalProperties=$additionalProperties }"
606778}
0 commit comments