Class: OCI::IdentityDomains::Models::OAuth2ClientCredential
- Inherits:
-
Object
- Object
- OCI::IdentityDomains::Models::OAuth2ClientCredential
- Defined in:
- lib/oci/identity_domains/models/o_auth2_client_credential.rb
Overview
The user's OAuth2 client credentials.
Constant Summary collapse
- IDCS_PREVENTED_OPERATIONS_ENUM =
[ IDCS_PREVENTED_OPERATIONS_REPLACE = 'replace'.freeze, IDCS_PREVENTED_OPERATIONS_UPDATE = 'update'.freeze, IDCS_PREVENTED_OPERATIONS_DELETE = 'delete'.freeze, IDCS_PREVENTED_OPERATIONS_UNKNOWN_ENUM_VALUE = 'UNKNOWN_ENUM_VALUE'.freeze ].freeze
- STATUS_ENUM =
[ STATUS_ACTIVE = 'ACTIVE'.freeze, STATUS_INACTIVE = 'INACTIVE'.freeze, STATUS_UNKNOWN_ENUM_VALUE = 'UNKNOWN_ENUM_VALUE'.freeze ].freeze
Instance Attribute Summary collapse
-
#compartment_ocid ⇒ String
OCI Compartment Id (ocid) in which the resource lives.
-
#delete_in_progress ⇒ BOOLEAN
A boolean flag indicating this resource in the process of being deleted.
-
#description ⇒ String
Description.
-
#domain_ocid ⇒ String
OCI Domain Id (ocid) in which the resource lives.
-
#expires_on ⇒ String
When the user's credentials expire.
-
#id ⇒ String
Unique identifier for the SCIM Resource as defined by the Service Provider.
- #idcs_created_by ⇒ OCI::IdentityDomains::Models::IdcsCreatedBy
- #idcs_last_modified_by ⇒ OCI::IdentityDomains::Models::IdcsLastModifiedBy
-
#idcs_last_upgraded_in_release ⇒ String
The release number when the resource was upgraded.
-
#idcs_prevented_operations ⇒ Array<String>
Each value of this attribute specifies an operation that only an internal client may perform on this particular resource.
-
#is_reset_secret ⇒ BOOLEAN
Specifies whether the secret must be reset.
- #meta ⇒ OCI::IdentityDomains::Models::Meta
-
#name ⇒ String
[Required] Name.
-
#ocid ⇒ String
Unique OCI identifier for the SCIM Resource.
-
#schemas ⇒ Array<String>
[Required] REQUIRED.
-
#scopes ⇒ Array<OCI::IdentityDomains::Models::OAuth2ClientCredentialScopes>
[Required] Scopes.
-
#status ⇒ String
The user's credential status.
-
#tags ⇒ Array<OCI::IdentityDomains::Models::Tags>
A list of tags on this resource.
-
#tenancy_ocid ⇒ String
OCI Tenant Id (ocid) in which the resource lives.
- #urn_ietf_params_scim_schemas_oracle_idcs_extension_self_change_user ⇒ OCI::IdentityDomains::Models::ExtensionSelfChangeUser
- #user ⇒ OCI::IdentityDomains::Models::OAuth2ClientCredentialUser
Class Method Summary collapse
-
.attribute_map ⇒ Object
Attribute mapping from ruby-style variable name to JSON key.
-
.swagger_types ⇒ Object
Attribute type mapping.
Instance Method Summary collapse
-
#==(other) ⇒ Object
Checks equality by comparing each attribute.
-
#build_from_hash(attributes) ⇒ Object
Builds the object from hash.
- #eql?(other) ⇒ Boolean
-
#hash ⇒ Fixnum
Calculates hash code according to all attributes.
-
#initialize(attributes = {}) ⇒ OAuth2ClientCredential
constructor
Initializes the object.
-
#to_hash ⇒ Hash
Returns the object in the form of hash.
-
#to_s ⇒ String
Returns the string representation of the object.
Constructor Details
#initialize(attributes = {}) ⇒ OAuth2ClientCredential
Initializes the object
349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 349 def initialize(attributes = {}) return unless attributes.is_a?(Hash) # convert string to symbol for hash key attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v } self.id = attributes[:'id'] if attributes[:'id'] self.ocid = attributes[:'ocid'] if attributes[:'ocid'] self.schemas = attributes[:'schemas'] if attributes[:'schemas'] self. = attributes[:'meta'] if attributes[:'meta'] self.idcs_created_by = attributes[:'idcsCreatedBy'] if attributes[:'idcsCreatedBy'] raise 'You cannot provide both :idcsCreatedBy and :idcs_created_by' if attributes.key?(:'idcsCreatedBy') && attributes.key?(:'idcs_created_by') self.idcs_created_by = attributes[:'idcs_created_by'] if attributes[:'idcs_created_by'] self.idcs_last_modified_by = attributes[:'idcsLastModifiedBy'] if attributes[:'idcsLastModifiedBy'] raise 'You cannot provide both :idcsLastModifiedBy and :idcs_last_modified_by' if attributes.key?(:'idcsLastModifiedBy') && attributes.key?(:'idcs_last_modified_by') self.idcs_last_modified_by = attributes[:'idcs_last_modified_by'] if attributes[:'idcs_last_modified_by'] self.idcs_prevented_operations = attributes[:'idcsPreventedOperations'] if attributes[:'idcsPreventedOperations'] raise 'You cannot provide both :idcsPreventedOperations and :idcs_prevented_operations' if attributes.key?(:'idcsPreventedOperations') && attributes.key?(:'idcs_prevented_operations') self.idcs_prevented_operations = attributes[:'idcs_prevented_operations'] if attributes[:'idcs_prevented_operations'] self. = attributes[:'tags'] if attributes[:'tags'] self.delete_in_progress = attributes[:'deleteInProgress'] unless attributes[:'deleteInProgress'].nil? raise 'You cannot provide both :deleteInProgress and :delete_in_progress' if attributes.key?(:'deleteInProgress') && attributes.key?(:'delete_in_progress') self.delete_in_progress = attributes[:'delete_in_progress'] unless attributes[:'delete_in_progress'].nil? self.idcs_last_upgraded_in_release = attributes[:'idcsLastUpgradedInRelease'] if attributes[:'idcsLastUpgradedInRelease'] raise 'You cannot provide both :idcsLastUpgradedInRelease and :idcs_last_upgraded_in_release' if attributes.key?(:'idcsLastUpgradedInRelease') && attributes.key?(:'idcs_last_upgraded_in_release') self.idcs_last_upgraded_in_release = attributes[:'idcs_last_upgraded_in_release'] if attributes[:'idcs_last_upgraded_in_release'] self.domain_ocid = attributes[:'domainOcid'] if attributes[:'domainOcid'] raise 'You cannot provide both :domainOcid and :domain_ocid' if attributes.key?(:'domainOcid') && attributes.key?(:'domain_ocid') self.domain_ocid = attributes[:'domain_ocid'] if attributes[:'domain_ocid'] self.compartment_ocid = attributes[:'compartmentOcid'] if attributes[:'compartmentOcid'] raise 'You cannot provide both :compartmentOcid and :compartment_ocid' if attributes.key?(:'compartmentOcid') && attributes.key?(:'compartment_ocid') self.compartment_ocid = attributes[:'compartment_ocid'] if attributes[:'compartment_ocid'] self.tenancy_ocid = attributes[:'tenancyOcid'] if attributes[:'tenancyOcid'] raise 'You cannot provide both :tenancyOcid and :tenancy_ocid' if attributes.key?(:'tenancyOcid') && attributes.key?(:'tenancy_ocid') self.tenancy_ocid = attributes[:'tenancy_ocid'] if attributes[:'tenancy_ocid'] self.name = attributes[:'name'] if attributes[:'name'] self.description = attributes[:'description'] if attributes[:'description'] self.status = attributes[:'status'] if attributes[:'status'] self.expires_on = attributes[:'expiresOn'] if attributes[:'expiresOn'] raise 'You cannot provide both :expiresOn and :expires_on' if attributes.key?(:'expiresOn') && attributes.key?(:'expires_on') self.expires_on = attributes[:'expires_on'] if attributes[:'expires_on'] self.is_reset_secret = attributes[:'isResetSecret'] unless attributes[:'isResetSecret'].nil? raise 'You cannot provide both :isResetSecret and :is_reset_secret' if attributes.key?(:'isResetSecret') && attributes.key?(:'is_reset_secret') self.is_reset_secret = attributes[:'is_reset_secret'] unless attributes[:'is_reset_secret'].nil? self.scopes = attributes[:'scopes'] if attributes[:'scopes'] self.user = attributes[:'user'] if attributes[:'user'] self.urn_ietf_params_scim_schemas_oracle_idcs_extension_self_change_user = attributes[:'urn:ietf:params:scim:schemas:oracle:idcs:extension:selfChange:User'] if attributes[:'urn:ietf:params:scim:schemas:oracle:idcs:extension:selfChange:User'] raise 'You cannot provide both :urn:ietf:params:scim:schemas:oracle:idcs:extension:selfChange:User and :urn_ietf_params_scim_schemas_oracle_idcs_extension_self_change_user' if attributes.key?(:'urn:ietf:params:scim:schemas:oracle:idcs:extension:selfChange:User') && attributes.key?(:'urn_ietf_params_scim_schemas_oracle_idcs_extension_self_change_user') self.urn_ietf_params_scim_schemas_oracle_idcs_extension_self_change_user = attributes[:'urn_ietf_params_scim_schemas_oracle_idcs_extension_self_change_user'] if attributes[:'urn_ietf_params_scim_schemas_oracle_idcs_extension_self_change_user'] end |
Instance Attribute Details
#compartment_ocid ⇒ String
OCI Compartment Id (ocid) in which the resource lives.
SCIM++ Properties: - caseExact: false - idcsSearchable: false - multiValued: false - mutability: readOnly - required: false - returned: default - type: string - uniqueness: none
157 158 159 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 157 def compartment_ocid @compartment_ocid end |
#delete_in_progress ⇒ BOOLEAN
A boolean flag indicating this resource in the process of being deleted. Usually set to true when synchronous deletion of the resource would take too long.
SCIM++ Properties: - caseExact: false - idcsSearchable: true - multiValued: false - mutability: readOnly - required: false - returned: default - type: boolean - uniqueness: none
115 116 117 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 115 def delete_in_progress @delete_in_progress end |
#description ⇒ String
Description
Added In: 2101262133
SCIM++ Properties: - caseExact: false - type: string - mutability: readWrite - required: false - returned: default
195 196 197 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 195 def description @description end |
#domain_ocid ⇒ String
OCI Domain Id (ocid) in which the resource lives.
SCIM++ Properties: - caseExact: false - idcsSearchable: false - multiValued: false - mutability: readOnly - required: false - returned: default - type: string - uniqueness: none
143 144 145 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 143 def domain_ocid @domain_ocid end |
#expires_on ⇒ String
When the user's credentials expire.
Added In: 2109090424
SCIM++ Properties: - caseExact: false - idcsSearchable: false - multiValued: false - mutability: immutable - required: false - returned: default - type: dateTime - uniqueness: none
227 228 229 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 227 def expires_on @expires_on end |
#id ⇒ String
Unique identifier for the SCIM Resource as defined by the Service Provider. Each representation of the Resource MUST include a non-empty id value. This identifier MUST be unique across the Service Provider's entire set of Resources. It MUST be a stable, non-reassignable identifier that does not change when the same Resource is returned in subsequent requests. The value of the id attribute is always issued by the Service Provider and MUST never be specified by the Service Consumer. bulkId: is a reserved keyword and MUST NOT be used in the unique identifier.
SCIM++ Properties: - caseExact: false - idcsSearchable: true - multiValued: false - mutability: readOnly - required: false - returned: always - type: string - uniqueness: global
37 38 39 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 37 def id @id end |
#idcs_created_by ⇒ OCI::IdentityDomains::Models::IdcsCreatedBy
71 72 73 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 71 def idcs_created_by @idcs_created_by end |
#idcs_last_modified_by ⇒ OCI::IdentityDomains::Models::IdcsLastModifiedBy
74 75 76 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 74 def idcs_last_modified_by @idcs_last_modified_by end |
#idcs_last_upgraded_in_release ⇒ String
The release number when the resource was upgraded.
SCIM++ Properties: - caseExact: false - idcsSearchable: false - multiValued: false - mutability: readOnly - required: false - returned: request - type: string - uniqueness: none
129 130 131 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 129 def idcs_last_upgraded_in_release @idcs_last_upgraded_in_release end |
#idcs_prevented_operations ⇒ Array<String>
Each value of this attribute specifies an operation that only an internal client may perform on this particular resource.
SCIM++ Properties: - idcsSearchable: false - multiValued: true - mutability: readOnly - required: false - returned: request - type: string - uniqueness: none
87 88 89 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 87 def idcs_prevented_operations @idcs_prevented_operations end |
#is_reset_secret ⇒ BOOLEAN
Specifies whether the secret must be reset.
Added In: 2109090424
SCIM++ Properties: - caseExact: false - idcsSearchable: false - multiValued: false - mutability: writeOnly - required: false - returned: default - type: boolean - uniqueness: none
243 244 245 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 243 def is_reset_secret @is_reset_secret end |
#meta ⇒ OCI::IdentityDomains::Models::Meta
68 69 70 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 68 def @meta end |
#name ⇒ String
[Required] Name
SCIM++ Properties: - caseExact: false - type: string - mutability: readWrite - required: true - returned: default
182 183 184 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 182 def name @name end |
#ocid ⇒ String
Unique OCI identifier for the SCIM Resource.
SCIM++ Properties: - caseExact: true - idcsSearchable: true - multiValued: false - mutability: immutable - required: false - returned: default - type: string - uniqueness: global
51 52 53 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 51 def ocid @ocid end |
#schemas ⇒ Array<String>
[Required] REQUIRED. The schemas attribute is an array of Strings which allows introspection of the supported schema version for a SCIM representation as well any schema extensions supported by that representation. Each String value must be a unique URI. This specification defines URIs for User, Group, and a standard \“enterprise\” extension. All representations of SCIM schema MUST include a non-zero value array with value(s) of the URIs supported by that representation. Duplicate values MUST NOT be included. Value order is not specified and MUST not impact behavior.
SCIM++ Properties: - caseExact: false - idcsSearchable: false - multiValued: true - mutability: readWrite - required: true - returned: default - type: string - uniqueness: none
65 66 67 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 65 def schemas @schemas end |
#scopes ⇒ Array<OCI::IdentityDomains::Models::OAuth2ClientCredentialScopes>
[Required] Scopes
SCIM++ Properties: - caseExact: false - idcsCompositeKey: [audience, scope] - type: complex - mutability: readWrite - multiValued: true - required: true - returned: default
256 257 258 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 256 def scopes @scopes end |
#status ⇒ String
The user's credential status.
Added In: 2109090424
SCIM++ Properties: - caseExact: false - idcsSearchable: false - multiValued: false - mutability: readWrite - required: false - returned: never - type: string - uniqueness: none
211 212 213 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 211 def status @status end |
#tags ⇒ Array<OCI::IdentityDomains::Models::Tags>
A list of tags on this resource.
SCIM++ Properties: - idcsCompositeKey: [key, value] - idcsSearchable: true - multiValued: true - mutability: readWrite - required: false - returned: request - type: complex - uniqueness: none
101 102 103 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 101 def @tags end |
#tenancy_ocid ⇒ String
OCI Tenant Id (ocid) in which the resource lives.
SCIM++ Properties: - caseExact: false - idcsSearchable: false - multiValued: false - mutability: readOnly - required: false - returned: default - type: string - uniqueness: none
171 172 173 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 171 def tenancy_ocid @tenancy_ocid end |
#urn_ietf_params_scim_schemas_oracle_idcs_extension_self_change_user ⇒ OCI::IdentityDomains::Models::ExtensionSelfChangeUser
262 263 264 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 262 def urn_ietf_params_scim_schemas_oracle_idcs_extension_self_change_user @urn_ietf_params_scim_schemas_oracle_idcs_extension_self_change_user end |
#user ⇒ OCI::IdentityDomains::Models::OAuth2ClientCredentialUser
259 260 261 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 259 def user @user end |
Class Method Details
.attribute_map ⇒ Object
Attribute mapping from ruby-style variable name to JSON key.
265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 265 def self.attribute_map { # rubocop:disable Style/SymbolLiteral 'id': :'id', 'ocid': :'ocid', 'schemas': :'schemas', 'meta': :'meta', 'idcs_created_by': :'idcsCreatedBy', 'idcs_last_modified_by': :'idcsLastModifiedBy', 'idcs_prevented_operations': :'idcsPreventedOperations', 'tags': :'tags', 'delete_in_progress': :'deleteInProgress', 'idcs_last_upgraded_in_release': :'idcsLastUpgradedInRelease', 'domain_ocid': :'domainOcid', 'compartment_ocid': :'compartmentOcid', 'tenancy_ocid': :'tenancyOcid', 'name': :'name', 'description': :'description', 'status': :'status', 'expires_on': :'expiresOn', 'is_reset_secret': :'isResetSecret', 'scopes': :'scopes', 'user': :'user', 'urn_ietf_params_scim_schemas_oracle_idcs_extension_self_change_user': :'urn:ietf:params:scim:schemas:oracle:idcs:extension:selfChange:User' # rubocop:enable Style/SymbolLiteral } end |
.swagger_types ⇒ Object
Attribute type mapping.
294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 294 def self.swagger_types { # rubocop:disable Style/SymbolLiteral 'id': :'String', 'ocid': :'String', 'schemas': :'Array<String>', 'meta': :'OCI::IdentityDomains::Models::Meta', 'idcs_created_by': :'OCI::IdentityDomains::Models::IdcsCreatedBy', 'idcs_last_modified_by': :'OCI::IdentityDomains::Models::IdcsLastModifiedBy', 'idcs_prevented_operations': :'Array<String>', 'tags': :'Array<OCI::IdentityDomains::Models::Tags>', 'delete_in_progress': :'BOOLEAN', 'idcs_last_upgraded_in_release': :'String', 'domain_ocid': :'String', 'compartment_ocid': :'String', 'tenancy_ocid': :'String', 'name': :'String', 'description': :'String', 'status': :'String', 'expires_on': :'String', 'is_reset_secret': :'BOOLEAN', 'scopes': :'Array<OCI::IdentityDomains::Models::OAuth2ClientCredentialScopes>', 'user': :'OCI::IdentityDomains::Models::OAuth2ClientCredentialUser', 'urn_ietf_params_scim_schemas_oracle_idcs_extension_self_change_user': :'OCI::IdentityDomains::Models::ExtensionSelfChangeUser' # rubocop:enable Style/SymbolLiteral } end |
Instance Method Details
#==(other) ⇒ Object
Checks equality by comparing each attribute.
482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 482 def ==(other) return true if equal?(other) self.class == other.class && id == other.id && ocid == other.ocid && schemas == other.schemas && == other. && idcs_created_by == other.idcs_created_by && idcs_last_modified_by == other.idcs_last_modified_by && idcs_prevented_operations == other.idcs_prevented_operations && == other. && delete_in_progress == other.delete_in_progress && idcs_last_upgraded_in_release == other.idcs_last_upgraded_in_release && domain_ocid == other.domain_ocid && compartment_ocid == other.compartment_ocid && tenancy_ocid == other.tenancy_ocid && name == other.name && description == other.description && status == other.status && expires_on == other.expires_on && is_reset_secret == other.is_reset_secret && scopes == other.scopes && user == other.user && urn_ietf_params_scim_schemas_oracle_idcs_extension_self_change_user == other.urn_ietf_params_scim_schemas_oracle_idcs_extension_self_change_user end |
#build_from_hash(attributes) ⇒ Object
Builds the object from hash
532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 532 def build_from_hash(attributes) return nil unless attributes.is_a?(Hash) self.class.swagger_types.each_pair do |key, type| if type =~ /^Array<(.*)>/i # check to ensure the input is an array given that the the attribute # is documented as an array but the input is not if attributes[self.class.attribute_map[key]].is_a?(Array) public_method("#{key}=").call( attributes[self.class.attribute_map[key]] .map { |v| OCI::Internal::Util.convert_to_type(Regexp.last_match(1), v) } ) end elsif !attributes[self.class.attribute_map[key]].nil? public_method("#{key}=").call( OCI::Internal::Util.convert_to_type(type, attributes[self.class.attribute_map[key]]) ) end # or else data not found in attributes(hash), not an issue as the data can be optional end self end |
#eql?(other) ⇒ Boolean
512 513 514 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 512 def eql?(other) self == other end |
#hash ⇒ Fixnum
Calculates hash code according to all attributes.
521 522 523 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 521 def hash [id, ocid, schemas, , idcs_created_by, idcs_last_modified_by, idcs_prevented_operations, , delete_in_progress, idcs_last_upgraded_in_release, domain_ocid, compartment_ocid, tenancy_ocid, name, description, status, expires_on, is_reset_secret, scopes, user, urn_ietf_params_scim_schemas_oracle_idcs_extension_self_change_user].hash end |
#to_hash ⇒ Hash
Returns the object in the form of hash
565 566 567 568 569 570 571 572 573 574 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 565 def to_hash hash = {} self.class.attribute_map.each_pair do |attr, param| value = public_method(attr).call next if value.nil? && !instance_variable_defined?("@#{attr}") hash[param] = _to_hash(value) end hash end |
#to_s ⇒ String
Returns the string representation of the object
559 560 561 |
# File 'lib/oci/identity_domains/models/o_auth2_client_credential.rb', line 559 def to_s to_hash.to_s end |