openapi: 3.1.0 info: title: FIT-Product Test description: |- Product Test API goal is to provide the ability to execute and manage product tests. Product testing involves assessing and evaluating the performance, functionality, and reliability of telecommunications equipment and services. This process is crucial to ensure that the products meet industry standards, comply with regulations, and meet the expectations of end-users. ### Resource - ProductTest ### Operations Product Test API performs the following operations on the resources: - Retrieve an entity or a collection of entities depending on filter criteria - Create an entity (including default values and creation rules) - Manage notification of events #### TMF API Reference TMF769-Product_Test-v5.0.0.oas.yaml (March 27, 2024) #### FIT Adaptations - ProductTest uses explicit FIT-specific types instead of a generic characteristic-based payload. - ProductTestSpecification is not part of FIT TMF769. - `testMeasure.metricCategory` and `testMeasure.unitOfMeasure` are strings. Suggested values from diagrams are not part of the OAS. version: 1.0.0 servers: - url: '{apiRoot}/tmf-api/productTestManagement/v5' variables: apiRoot: default: https://serverRoot enum: - https://serverRoot tags: - name: productTest description: Operations for ProductTest Resource - name: notification listener description: Notification listener endpoints paths: /listener/productTestAttributeValueChangeEvent: post: operationId: productTestAttributeValueChangeEvent summary: Client listener for ProductTestAttributeValueChangeEvent description: Example of a client listener for receiving the notification ProductTestAttributeValueChangeEvent requestBody: $ref: '#/components/requestBodies/ProductTestAttributeValueChangeEvent' responses: '204': $ref: '#/components/responses/204Notified' default: $ref: '#/components/responses/DefaultError' tags: - notification listener /listener/productTestCreateEvent: post: operationId: productTestCreateEvent summary: Client listener for ProductTestCreateEvent description: Example of a client listener for receiving the notification ProductTestCreateEvent requestBody: $ref: '#/components/requestBodies/ProductTestCreateEvent' responses: '204': $ref: '#/components/responses/204Notified' default: $ref: '#/components/responses/DefaultError' tags: - notification listener /listener/productTestStateChangeEvent: post: operationId: productTestStateChangeEvent summary: Client listener for ProductTestStateChangeEvent description: Example of a client listener for receiving the notification ProductTestStateChangeEvent requestBody: $ref: '#/components/requestBodies/ProductTestStateChangeEvent' responses: '204': $ref: '#/components/responses/204Notified' default: $ref: '#/components/responses/DefaultError' tags: - notification listener /productTest: get: operationId: listProductTest summary: List or find ProductTest objects description: List or find ProductTest objects parameters: - $ref: '#/components/parameters/Fields' - $ref: '#/components/parameters/Offset' - $ref: '#/components/parameters/Limit' responses: '200': $ref: '#/components/responses/200ProductTestArray' '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' tags: - productTest post: operationId: createProductTest summary: Creates a ProductTest description: This operation creates a ProductTest entity. parameters: - $ref: '#/components/parameters/Fields' requestBody: $ref: '#/components/requestBodies/ProductTest_FVO' responses: '201': $ref: '#/components/responses/201ProductTest' '202': $ref: '#/components/responses/202' '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '409': $ref: '#/components/responses/409' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' tags: - productTest /productTest/{id}: get: operationId: retrieveProductTest summary: Retrieves a ProductTest by ID description: This operation retrieves a ProductTest entity. Attribute selection enabled for all first level attributes. parameters: - $ref: '#/components/parameters/Id' - $ref: '#/components/parameters/Fields' responses: '200': $ref: '#/components/responses/200ProductTest_Get' '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' tags: - productTest patch: operationId: patchProductTest summary: Updates partially a ProductTest description: This operation updates partially a ProductTest entity. parameters: - $ref: '#/components/parameters/Id' - $ref: '#/components/parameters/Fields' requestBody: $ref: '#/components/requestBodies/ProductTest_MVO' responses: '200': $ref: '#/components/responses/200ProductTest_Patch' '202': $ref: '#/components/responses/202' '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' '405': $ref: '#/components/responses/405' '409': $ref: '#/components/responses/409' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' tags: - productTest components: schemas: ExecutionStateType: description: Possible values for the state of the execution type: string enum: - acknowledged - inProgress - failed - completed - rejected ResetType: description: Supported reset types for a BSA reset request type: string enum: - ontReset - lineReset - sessionReset NtDeviceOperationType: description: Supported NT device operation types type: string enum: - registration - deregistration - exchange ProductRef: description: A Product reference type: object allOf: - $ref: '#/components/schemas/EntityRef' discriminator: propertyName: '@type' mapping: ProductRef: '#/components/schemas/ProductRef' ProductTest: allOf: - $ref: '#/components/schemas/Entity' - type: object description: A FIT product test request or result bound to a product and one or more agreements. properties: endDateTime: description: The end date and time of the product test type: string format: date-time mode: description: An indication of whether the product test is running in "proactive" or "onDemand" mode type: string enum: - onDemand - proactive agreement: description: A reference to an agreement defined in the context of the ProductTest type: array items: $ref: '#/components/schemas/AgreementRefOrValue' attachment: description: Attachment type: array items: $ref: '#/components/schemas/AttachmentRefOrValue' externalIdentifier: description: External identifier associated with this product test $ref: '#/components/schemas/ExternalIdentifier' startDateTime: description: The start date and time of the product test type: string format: date-time state: $ref: '#/components/schemas/ExecutionStateType' stateChangeDate: description: The date and time the state changed type: string format: date-time stateChangeMessage: description: Message for the state change described as a combination of a text and a code type: array items: $ref: '#/components/schemas/Message' stateChangeHistory: description: The state change history associated with the product test type: array items: $ref: '#/components/schemas/StateChange' relatedParty: description: Related parties linked to the product test type: array items: $ref: '#/components/schemas/RelatedPartyOrPartyRole' testMeasure: description: The results of the test in terms of the measured metrics type: array items: $ref: '#/components/schemas/TestMeasure' relatedProduct: $ref: '#/components/schemas/ProductRef' name: description: The name of the product test type: string required: - state - stateChangeDate discriminator: propertyName: '@type' mapping: ProductTest: '#/components/schemas/ProductTest' BsaDiagnosis: '#/components/schemas/BsaDiagnosis' BsaReset: '#/components/schemas/BsaReset' NtDeviceOperation: '#/components/schemas/NtDeviceOperation' SendLink: '#/components/schemas/SendLink' ProductTest_FVO: allOf: - $ref: '#/components/schemas/Entity_FVO' - type: object description: A FIT product test create request bound to a product and one or more agreements. properties: endDateTime: description: The end date and time of the product test type: string format: date-time mode: description: An indication of whether the product test is running in "proactive" or "onDemand" mode type: string enum: - onDemand - proactive agreement: description: A reference to an agreement defined in the context of the ProductTest type: array items: $ref: '#/components/schemas/AgreementRefOrValue' attachment: description: Attachment type: array items: $ref: '#/components/schemas/AttachmentRefOrValue' externalIdentifier: description: External identifier associated with this product test $ref: '#/components/schemas/ExternalIdentifier' startDateTime: description: The start date and time of the product test type: string format: date-time state: $ref: '#/components/schemas/ExecutionStateType' stateChangeDate: description: The date and time the state changed type: string format: date-time stateChangeMessage: description: Message for the state change described as a combination of a text and a code type: array items: $ref: '#/components/schemas/Message' stateChangeHistory: description: The state change history associated with the product test type: array items: $ref: '#/components/schemas/StateChange' relatedParty: description: Related parties linked to the product test type: array items: $ref: '#/components/schemas/RelatedPartyOrPartyRole' testMeasure: description: The results of the test in terms of the measured metrics type: array items: $ref: '#/components/schemas/TestMeasure' relatedProduct: $ref: '#/components/schemas/ProductRef' name: description: The name of the product test type: string discriminator: propertyName: '@type' mapping: ProductTest: '#/components/schemas/ProductTest_FVO' BsaDiagnosis: '#/components/schemas/BsaDiagnosis_FVO' BsaReset: '#/components/schemas/BsaReset_FVO' NtDeviceOperation: '#/components/schemas/NtDeviceOperation_FVO' SendLink: '#/components/schemas/SendLink_FVO' ProductTest_MVO: type: object description: A FIT product test partial update payload. properties: endDateTime: description: The end date and time of the product test type: string format: date-time mode: description: An indication of whether the product test is running in "proactive" or "onDemand" mode type: string enum: - onDemand - proactive agreement: description: A reference to an agreement defined in the context of the ProductTest type: array items: $ref: '#/components/schemas/AgreementRefOrValue' attachment: description: Attachment type: array items: $ref: '#/components/schemas/AttachmentRefOrValue' externalIdentifier: description: External identifier associated with this product test $ref: '#/components/schemas/ExternalIdentifier' startDateTime: description: The start date and time of the product test type: string format: date-time state: $ref: '#/components/schemas/ExecutionStateType' stateChangeDate: description: The date and time the state changed type: string format: date-time stateChangeMessage: description: Message for the state change described as a combination of a text and a code type: array items: $ref: '#/components/schemas/Message' stateChangeHistory: description: The state change history associated with the product test type: array items: $ref: '#/components/schemas/StateChange' relatedParty: description: Related parties linked to the product test type: array items: $ref: '#/components/schemas/RelatedPartyOrPartyRole' testMeasure: description: The results of the test in terms of the measured metrics type: array items: $ref: '#/components/schemas/TestMeasure' relatedProduct: $ref: '#/components/schemas/ProductRef' name: description: The name of the product test type: string '@type': type: string discriminator: propertyName: '@type' mapping: ProductTest: '#/components/schemas/ProductTest_MVO' BsaDiagnosis: '#/components/schemas/BsaDiagnosis_MVO' BsaReset: '#/components/schemas/BsaReset_MVO' NtDeviceOperation: '#/components/schemas/NtDeviceOperation_MVO' SendLink: '#/components/schemas/SendLink_MVO' BsaDiagnosis: allOf: - $ref: '#/components/schemas/ProductTest' - type: object properties: accessLineId: description: Access line identifier type: string measureType: description: Identifies the requested diagnosis type type: string required: - measureType discriminator: propertyName: '@type' mapping: BsaDiagnosis: '#/components/schemas/BsaDiagnosis' BsaDiagnosis_FVO: allOf: - $ref: '#/components/schemas/ProductTest_FVO' - type: object properties: accessLineId: description: Access line identifier type: string measureType: description: Identifies the requested diagnosis type type: string required: - measureType discriminator: propertyName: '@type' mapping: BsaDiagnosis: '#/components/schemas/BsaDiagnosis_FVO' BsaDiagnosis_MVO: allOf: - $ref: '#/components/schemas/ProductTest_MVO' - type: object properties: accessLineId: description: Access line identifier type: string measureType: description: Identifies the requested diagnosis type type: string BsaReset: allOf: - $ref: '#/components/schemas/ProductTest' - type: object properties: accessLineId: description: Access line identifier type: string resetType: description: Identifies the requested reset type $ref: '#/components/schemas/ResetType' required: - resetType discriminator: propertyName: '@type' mapping: BsaReset: '#/components/schemas/BsaReset' BsaReset_FVO: allOf: - $ref: '#/components/schemas/ProductTest_FVO' - type: object properties: accessLineId: description: Access line identifier type: string resetType: description: Identifies the requested reset type $ref: '#/components/schemas/ResetType' required: - resetType discriminator: propertyName: '@type' mapping: BsaReset: '#/components/schemas/BsaReset_FVO' BsaReset_MVO: allOf: - $ref: '#/components/schemas/ProductTest_MVO' - type: object properties: accessLineId: description: Access line identifier type: string resetType: description: Identifies the requested reset type $ref: '#/components/schemas/ResetType' NtDevice: type: object description: NT device information used for NT device operations. properties: serialNumber: description: Serial number of the device type: string macAddress: description: MAC address of the device type: string deviceType: description: Type of the device type: string required: - serialNumber NtDevice_MVO: type: object description: Partial update payload for an NT device used in NT device operations. properties: serialNumber: description: Serial number of the device type: string macAddress: description: MAC address of the device type: string deviceType: description: Type of the device type: string NtDeviceOperation: allOf: - $ref: '#/components/schemas/ProductTest' - type: object properties: homeId: description: Home identifier type: string accessLineId: description: Access line identifier type: string ntDeviceOperationType: description: Identifies the requested NT device operation type $ref: '#/components/schemas/NtDeviceOperationType' device: $ref: '#/components/schemas/NtDevice' exchangedDevice: $ref: '#/components/schemas/NtDevice' required: - ntDeviceOperationType discriminator: propertyName: '@type' mapping: NtDeviceOperation: '#/components/schemas/NtDeviceOperation' NtDeviceOperation_FVO: allOf: - $ref: '#/components/schemas/ProductTest_FVO' - type: object properties: homeId: description: Home identifier type: string accessLineId: description: Access line identifier type: string ntDeviceOperationType: description: Identifies the requested NT device operation type $ref: '#/components/schemas/NtDeviceOperationType' device: $ref: '#/components/schemas/NtDevice' exchangedDevice: $ref: '#/components/schemas/NtDevice' required: - ntDeviceOperationType discriminator: propertyName: '@type' mapping: NtDeviceOperation: '#/components/schemas/NtDeviceOperation_FVO' NtDeviceOperation_MVO: allOf: - $ref: '#/components/schemas/ProductTest_MVO' - type: object properties: homeId: description: Home identifier type: string accessLineId: description: Access line identifier type: string ntDeviceOperationType: description: Identifies the requested NT device operation type $ref: '#/components/schemas/NtDeviceOperationType' device: $ref: '#/components/schemas/NtDevice_MVO' exchangedDevice: $ref: '#/components/schemas/NtDevice_MVO' SendLink: allOf: - $ref: '#/components/schemas/ProductTest' - type: object properties: accessLineId: description: Access line identifier type: string linkType: description: Identifies the requested link type type: string phoneNumber: description: Phone number type: string emailAddress: description: Email address type: string required: - linkType discriminator: propertyName: '@type' mapping: SendLink: '#/components/schemas/SendLink' SendLink_FVO: allOf: - $ref: '#/components/schemas/ProductTest_FVO' - type: object properties: accessLineId: description: Access line identifier type: string linkType: description: Identifies the requested link type type: string phoneNumber: description: Phone number type: string emailAddress: description: Email address type: string required: - linkType discriminator: propertyName: '@type' mapping: SendLink: '#/components/schemas/SendLink_FVO' SendLink_MVO: allOf: - $ref: '#/components/schemas/ProductTest_MVO' - type: object properties: accessLineId: description: Access line identifier type: string linkType: description: Identifies the requested link type type: string phoneNumber: description: Phone number type: string emailAddress: description: Email address type: string TestMeasure: allOf: - $ref: '#/components/schemas/Extensible' - type: object description: A TestMeasure specifies a measure of a specific aspect of a product test. properties: metricCategory: description: Category of the metric used to group test measures type: string metricDescription: description: Brief description of the metric type: string metricName: description: The name of the metric type: string metricValue: description: Value of the metric type: string unitOfMeasure: description: The unit of measure for the metric value type: string discriminator: propertyName: '@type' mapping: TestMeasure: '#/components/schemas/TestMeasure' ProductTestAttributeValueChangeEvent: allOf: - $ref: '#/components/schemas/Event' - type: object description: ProductTestAttributeValueChangeEvent generic structure properties: event: $ref: '#/components/schemas/ProductTestAttributeValueChangeEventPayload' discriminator: propertyName: '@type' mapping: ProductTestAttributeValueChangeEvent: '#/components/schemas/ProductTestAttributeValueChangeEvent' ProductTestAttributeValueChangeEventPayload: description: ProductTestAttributeValueChangeEventPayload generic structure type: object properties: productTest: $ref: '#/components/schemas/ProductTest' ProductTestCreateEvent: allOf: - $ref: '#/components/schemas/Event' - type: object description: ProductTestCreateEvent generic structure properties: event: $ref: '#/components/schemas/ProductTestCreateEventPayload' discriminator: propertyName: '@type' mapping: ProductTestCreateEvent: '#/components/schemas/ProductTestCreateEvent' ProductTestCreateEventPayload: description: ProductTestCreateEventPayload generic structure type: object properties: productTest: $ref: '#/components/schemas/ProductTest' ProductTestStateChangeEvent: allOf: - $ref: '#/components/schemas/Event' - type: object description: ProductTestStateChangeEvent generic structure properties: event: $ref: '#/components/schemas/ProductTestStateChangeEventPayload' discriminator: propertyName: '@type' mapping: ProductTestStateChangeEvent: '#/components/schemas/ProductTestStateChangeEvent' ProductTestStateChangeEventPayload: description: ProductTestStateChangeEventPayload generic structure type: object properties: productTest: $ref: '#/components/schemas/ProductTest' Extensible: description: Base Extensible schema for use in TMForum Open-APIs - When used for in a schema it means that the Entity described by the schema MUST be extended with the @type type: object properties: '@type': description: When sub-classing, this defines the sub-class Extensible name type: string example: '' '@baseType': description: When sub-classing, this defines the super-class type: string example: '' '@schemaLocation': description: A URI to a JSON-Schema file that defines additional attributes and relationships type: string example: '' discriminator: propertyName: '@type' required: - '@type' EntityRef: description: Entity reference schema to be use for all entityRef class. allOf: - $ref: '#/components/schemas/Extensible' - type: object required: - id properties: id: description: Identifier of the referred entity. type: string example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5 href: description: Hyperlink reference type: string format: uri example: https://api.example.org/resource/id name: description: Name of the referred entity. type: string example: EntityName '@referredType': description: The actual type of the target instance when needed for disambiguation. type: string example: '' Event: description: event with common attributes. allOf: - $ref: '#/components/schemas/Extensible' - type: object properties: eventId: description: The identifier of the notification. type: string example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5 eventTime: description: Time of the event occurrence. type: string format: date-time example: '2023-01-01T08:00:00+01:00' eventType: description: The type of the notification. type: string example: '' description: description: An explanatory of the event. type: string example: Lorem ipsum dolor timeOccurred: description: The time the event occurred. type: string format: date-time example: '2023-01-01T08:00:00+01:00' source: description: Source Entity described by EntityRef $ref: '#/components/schemas/EntityRef' reportingSystem: description: Reporting System described by EntityRef $ref: '#/components/schemas/EntityRef' required: - eventId - eventTime - eventType - event Entity: description: Base entity schema for use in TMForum Open-APIs. allOf: - $ref: '#/components/schemas/Extensible' - type: object properties: id: description: Unique identifier type: string example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5 href: description: Hyperlink reference type: string format: uri example: https://api.example.org/resource/id ContactMedium: description: Indicates the contact medium that could be used to contact the party. allOf: - $ref: '#/components/schemas/Extensible' - type: object properties: contactMediumIdentifier: description: Identifier for this contact medium. type: string example: '123' contactType: description: 'The type of contact, for example: phone number such as mobile or fixed line' type: string example: mobile preferred: description: If true, indicates that is the preferred contact medium type: boolean example: true validFor: $ref: '#/components/schemas/TimePeriod' discriminator: propertyName: '@type' mapping: PhoneContactMedium: '#/components/schemas/PhoneContactMedium' EmailContactMedium: '#/components/schemas/EmailContactMedium' PostalAddressContactMedium: '#/components/schemas/PostalAddressContactMedium' PhoneContactMedium: description: Describes a phone number that could be used to contact a party (an individual or an organization). allOf: - $ref: '#/components/schemas/ContactMedium' - type: object properties: phoneNumber: description: The phone number of the contact type: string example: +49 30 1234567 EmailContactMedium: description: Describes a email that could be used to contact a party (an individual or an organization). allOf: - $ref: '#/components/schemas/ContactMedium' - type: object properties: emailAddress: description: Full email address in standard format type: string example: info@example.net PostalAddressContactMedium: description: Describes a email that could be used to contact a party (an individual or an organization). allOf: - $ref: '#/components/schemas/ContactMedium' - type: object properties: city: description: Full city name type: string example: Berlin country: description: Country that the address is in (ISO-3166-1 ALPHA-2) type: string example: DE locality: description: Locality type: string example: '' postcode: description: Postcode type: string example: '10117' streetName: description: StreetName type: string example: Reinhardtstr. streetNr: description: StreetNr type: string example: '31' streetNrSuffix: description: StreetNrSuffix type: string example: a TimePeriod: description: A period of time, either as a deadline (endDateTime only) a startDateTime only, or both type: object properties: startDateTime: description: Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end type: string format: date-time example: '2023-01-01T08:00:00+01:00' endDateTime: description: End of the time period, using IETC-RFC-3339 format type: string format: date-time example: '2025-12-24T19:30:00+01:00' ExternalIdentifier: description: An identification of an entity that is owned by or originates in a software system different from the current system, for example a ProductOrder handed off from a commerce platform into an order handling system. The structure identifies the system itself, the nature of the entity within the system (e.g. class name) and the unique ID of the entity within the system. It is anticipated that multiple external IDs can be held for a single entity, e.g. if the entity passed through multiple systems on the way to the current system. In this case the consumer is expected to sequence the IDs in the array in reverse order of provenance, i.e. most recent system first in the list. allOf: - $ref: '#/components/schemas/Extensible' - type: object properties: id: description: Unique identifier type: string example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5 externalIdentifierType: description: Type of the identification, typically would be the type of the entity within the external system type: string example: ProductOrder owner: description: Name of the external system that owns the entity. type: string example: AcmeCommerce Characteristic: description: Describes a given characteristic of an object or entity through a name/value pair. allOf: - $ref: '#/components/schemas/Extensible' - type: object properties: id: description: Unique identifier of the characteristic type: string example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5 name: description: Name of the characteristic type: string example: characteristic name valueType: description: Data type of the value of the characteristic type: string example: string discriminator: propertyName: '@type' mapping: Characteristic: '#/components/schemas/Characteristic' StringCharacteristic: '#/components/schemas/StringCharacteristic' StringArrayCharacteristic: '#/components/schemas/StringArrayCharacteristic' ObjectCharacteristic: '#/components/schemas/ObjectCharacteristic' ObjectArrayCharacteristic: '#/components/schemas/ObjectArrayCharacteristic' NumberCharacteristic: '#/components/schemas/NumberCharacteristic' NumberArrayCharacteristic: '#/components/schemas/NumberArrayCharacteristic' IntegerCharacteristic: '#/components/schemas/IntegerCharacteristic' IntegerArrayCharacteristic: '#/components/schemas/IntegerArrayCharacteristic' BooleanCharacteristic: '#/components/schemas/BooleanCharacteristic' BooleanArrayCharacteristic: '#/components/schemas/BooleanArrayCharacteristic' StringCharacteristic: description: A characteristic which value is a String. allOf: - $ref: '#/components/schemas/Characteristic' - type: object required: - value properties: value: description: Value of the characteristic type: string example: Lorem ipsum dolor StringArrayCharacteristic: description: A characteristic which value is a String. allOf: - $ref: '#/components/schemas/Characteristic' - type: object properties: value: description: Value of the characteristic type: array items: type: string example: [] ObjectCharacteristic: description: A characteristic which value is an Object. allOf: - $ref: '#/components/schemas/Characteristic' - type: object required: - value properties: value: description: Value of the characteristic type: object ObjectArrayCharacteristic: description: A characteristic which value is an Object. allOf: - $ref: '#/components/schemas/Characteristic' - type: object properties: value: description: Value of the characteristic type: array items: type: object example: [] NumberCharacteristic: description: A characteristic which value is a Number. allOf: - $ref: '#/components/schemas/Characteristic' - type: object required: - value properties: value: description: Value of the characteristic type: number example: 1 NumberArrayCharacteristic: description: A characteristic which value is a Number. allOf: - $ref: '#/components/schemas/Characteristic' - type: object properties: value: description: Value of the characteristic type: array items: type: number example: [] IntegerCharacteristic: description: A characteristic which value is an Integer. allOf: - $ref: '#/components/schemas/Characteristic' - type: object required: - value properties: value: description: Value of the characteristic type: integer example: 1 IntegerArrayCharacteristic: description: A characteristic which value is an Integer. allOf: - $ref: '#/components/schemas/Characteristic' - type: object properties: value: description: Value of the characteristic type: array items: type: integer example: [] BooleanCharacteristic: description: A characteristic which value is a Boolean. allOf: - $ref: '#/components/schemas/Characteristic' - type: object required: - value properties: value: description: Value of the characteristic type: boolean example: true BooleanArrayCharacteristic: description: A characteristic which value is a Boolean. allOf: - $ref: '#/components/schemas/Characteristic' - type: object properties: value: description: Value of the characteristic type: array items: type: boolean example: [] Party: description: Generic Party structure used to define commonalities between sub concepts of Individual and Organization. allOf: - $ref: '#/components/schemas/Entity' - type: object properties: contactMedium: description: List of means for contacting the party, e.g. mobile phone, email address type: array items: $ref: '#/components/schemas/ContactMedium' example: [] externalReference: description: List of identifiers of the Party in an external system, for example when party information is imported from a commerce system type: array items: $ref: '#/components/schemas/ExternalIdentifier' example: [] businessId: description: A business relevant identifier when different from the technical identifier documented with the .id property type: string example: '1234' partyCharacteristic: description: List of additional characteristics that a Party can take on. type: array items: $ref: '#/components/schemas/Characteristic' example: [] Individual: description: Individual represents a single human being (a man, woman or child). The individual can be a customer, an employee or any other person that the organization needs to store information about. allOf: - $ref: '#/components/schemas/Party' - type: object properties: familyName: description: Contains the non-chosen or inherited name. Also known as last name in the Western context type: string example: Muster salutation: description: Standard wording used to address an individual type: string example: Ms givenName: description: First name of the individual type: string example: Melanie title: description: Useful for titles (aristocratic, social,...) Pr, Dr, Sir, ... type: string example: Dr. Organization: description: Organization represents a group of people identified by shared interests or purpose. Examples include business, department and enterprise. Because of the complex nature of many businesses, both organizations and organization units are represented by the same data. allOf: - $ref: '#/components/schemas/Party' - type: object properties: name: description: Organization name (department name for example) type: string example: Acme Corp. PartyRef: description: Party reference. type: object allOf: - $ref: '#/components/schemas/EntityRef' PartyRoleRef: description: Party role reference. type: object allOf: - $ref: '#/components/schemas/EntityRef' AccountRef: description: Account reference. A account may be a party account or a financial account. allOf: - $ref: '#/components/schemas/EntityRef' - type: object properties: description: description: Detailed description of the account type: string example: lorem ipsum dolor AgreementRef: description: Agreement reference. An agreement represents a contract or arrangement, either written or verbal and sometimes enforceable by law, such as a service level agreement or a customer price agreement. An agreement involves a number of other business entities, such as products, services, and resources and/or their specifications. type: object allOf: - $ref: '#/components/schemas/EntityRef' PartyOrPartyRole: description: A Party or PartyRole or Ref type: object discriminator: propertyName: '@type' oneOf: - $ref: '#/components/schemas/Individual' - $ref: '#/components/schemas/Organization' - $ref: '#/components/schemas/PartyRef' - $ref: '#/components/schemas/PartyRoleRef' - $ref: '#/components/schemas/PartyRole' RelatedPartyOrPartyRole: description: RelatedParty reference. A related party defines party or party role or its reference, linked to a specific entity allOf: - $ref: '#/components/schemas/Extensible' - type: object required: - role - partyOrPartyRole properties: role: description: Role played by the related party or party role in the context of the specific entity it is linked to. Such as 'initiator', 'customer', 'salesAgent', 'user' type: string example: '' partyOrPartyRole: $ref: '#/components/schemas/PartyOrPartyRole' PartyRole: description: The part played by a party in a given context. allOf: - $ref: '#/components/schemas/Entity' - type: object required: - name - engagedParty properties: businessId: description: A business relevant identifier when different from the technical identifier documented with the .id property type: string example: '1234' name: description: A word, term, or phrase by which the PartyRole is known and distinguished from other PartyRoles. It's the name of the PartyRole unique entity. type: string example: PartyRoleName description: description: A description of the PartyRole. type: string example: Lorem ipsum dolor role: description: Role played by the engagedParty in this context. As role is defined by partyRoleSpecification, this role attribute can be used to precise the role defined by partyRoleSpecification, or it can be used to define the role in case there is no partyRoleSpecification. type: string example: '' engagedParty: $ref: '#/components/schemas/PartyRef' characteristic: description: Describes the characteristic of a party role. type: array items: $ref: '#/components/schemas/Characteristic' example: [] account: description: Account type: array items: $ref: '#/components/schemas/AccountRef' example: [] agreement: description: Agreement type: array items: $ref: '#/components/schemas/AgreementRef' example: [] contactMedium: description: Contact medium type: array items: $ref: '#/components/schemas/ContactMedium' example: [] relatedParty: description: Related party type: array items: $ref: '#/components/schemas/RelatedPartyOrPartyRole' example: [] status: description: Used to track the lifecycle status of the party role. type: string example: '' statusReason: description: A string providing an explanation on the value of the status lifecycle. For instance if the status is Rejected, statusReason will provide the reason for rejection. type: string example: '' validFor: $ref: '#/components/schemas/TimePeriod' Agreement: description: An agreement represents a contract or arrangement, either written or verbal and sometimes enforceable by law, such as a service level agreement or a customer price agreement. An agreement involves a number of other business entities, such as products, services, and resources and/or their specifications. allOf: - $ref: '#/components/schemas/Entity' - type: object required: - agreementType properties: name: description: A human-readable name for the agreement type: string example: contract no. 42 engagedParty: description: Engaged party type: array items: $ref: '#/components/schemas/PartyOrPartyRole' example: [] relatedParty: description: Related party type: array items: $ref: '#/components/schemas/RelatedPartyOrPartyRole' example: [] businessId: description: A business relevant identifier when different from the technical identifier documented with the .id property type: string example: '1234' agreementType: description: Type of the agreement (e.g. witaContract, ServiceContractCustomer, ServiceContractOrderer, SingleContract, PreAgreement, witaContract,...) type: string example: ServiceContractOrderer AgreementRefOrValue: description: Agreement reference or value type: object discriminator: propertyName: '@type' oneOf: - $ref: '#/components/schemas/Agreement' - $ref: '#/components/schemas/AgreementRef' AttachmentRef: description: Attachment reference. type: object allOf: - $ref: '#/components/schemas/EntityRef' Quantity: description: An amount in a given unit type: object properties: amount: description: Numeric value in a given unit type: number format: float example: 20 default: 1 units: description: Unit type: string example: MBit/s Attachment: description: Complements the description of an element (for instance a product) through video, pictures... allOf: - $ref: '#/components/schemas/Entity' - type: object properties: attachmentType: description: Attachment type such as video, picture type: string example: video content: description: The actual contents of the attachment object, if embedded, encoded as base64 example: '' format: base64 type: string description: description: A narrative text describing the content of the attachment type: string example: Photograph of the Product mimeType: description: Attachment mime type such as extension file for video, picture and document type: string example: image/jpeg name: description: The name of the attachment type: string example: attachment.file url: description: Uniform Resource Locator, is a web page address (a subset of URI) type: string format: uri example: https://api.example.org/content/4aafacbd-11ff-4dc8-b445-305f2215715f size: description: The size of the attachment. $ref: '#/components/schemas/Quantity' validFor: description: The period of time for which the attachment is valid $ref: '#/components/schemas/TimePeriod' AttachmentRefOrValue: description: Attachment reference or value type: object discriminator: propertyName: '@type' oneOf: - $ref: '#/components/schemas/AttachmentRef' - $ref: '#/components/schemas/Attachment' Message: description: A message described as a combination of a text and a code with additional info where required. type: object properties: code: description: Predefined code corresponding to the message type: string example: '00' text: description: Predefined text describing the message corresponding to the code type: string example: Lorem ipsum dolor additionalInformation: description: additional textual information for the message type: string example: Lorem ipsum dolor messageSource: description: Predefined text describing the message corresponding to the code (e.g. Related) type: string example: Related StateChange: description: Holds the state notification message and associated date the state changed, populated by the server allOf: - $ref: '#/components/schemas/Extensible' - type: object required: - stateChangeDate - state properties: stateChangeDate: description: The date and time the state changed. type: string format: date-time example: '2023-01-01T08:00:00+01:00' stateChangeMessage: description: Message for the state change described as a combination of a text and a code. type: array items: $ref: '#/components/schemas/Message' example: [] state: description: The state of the API resource type: string example: '' ErrorMessage: description: Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx) allOf: - $ref: '#/components/schemas/Extensible' - type: object required: - code - reason properties: code: description: Application relevant detail, defined in the API or a common list. type: string example: '0995' reason: description: Explanation of the reason for the error which can be shown to a client user. type: string example: human error message: description: More details and corrective actions related to the error which can be shown to a client user. type: string example: Datenstruktur unzulässig. status: description: HTTP Error code extension type: string example: not found referenceError: description: URI of documentation describing the error. type: string format: uri example: https://api.example.org/error/id example: '@type': ErrorMessage code: '0995' reason: human error message: Datenstruktur unzulässig. status: not found referenceError: https://api.example.org/error/id Entity_FVO: description: Base entity schema for use in TMForum Open-APIs. allOf: - $ref: '#/components/schemas/Extensible' - type: object properties: id: description: Unique identifier type: string example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5 JsonPatch: description: A JSONPatch document as defined by RFC 6902 properties: op: description: |- The operation to be performed: * *add*: TODO * *remove*: TODO * *replace*: TODO * *move*: TODO * *copy*: TODO * *test*: TODO type: string enum: - add - remove - replace - move - copy - test example: add path: description: A JSON-Pointer type: string example: /productOrderItem/0/product/terminationDate value: description: The value to be used within the operations. example: '' from: description: A string containing a JSON Pointer value. type: string example: /productOrderItem/0/product/terminationDate required: - op - path JsonPatchOperations: description: JSONPatch Operations document as defined by RFC 6902 type: array items: $ref: '#/components/schemas/JsonPatch' example: [] examples: ProductTest_list_example_response: value: - id: b9b1727e-faae-497f-8e82-43ebe92de6ce href: https://serverRoot/tmf-api/productTestManagement/v5/productTest/b9b1727e-faae-497f-8e82-43ebe92de6ce state: completed startDateTime: '2026-07-17T08:00:00+02:00' endDateTime: '2026-07-17T08:00:03+02:00' stateChangeDate: '2026-07-17T08:00:03+02:00' stateChangeMessage: - code: '7510' text: Ergebnismeldung stateChangeHistory: - state: acknowledged changeDate: '2026-07-17T08:00:00+02:00' - state: inProgress changeDate: '2026-07-17T08:00:01+02:00' relatedProduct: id: ae443f8d-aa6a-41f9-8ec7-8b01e7f666e6 href: https://serverRoot/tmf-api/productInventory/v5/product/ae443f8d-aa6a-41f9-8ec7-8b01e7f666e6 '@type': ProductRef agreement: - '@type': Agreement name: buyerServiceContract businessId: '500012' agreementType: buyerServiceContract engagedParty: - businessId: '500011' '@type': Organization externalIdentifier: id: '1000222' externalIdentifierType: productTestExternalId measureType: standard testMeasure: - '@type': TestMeasure metricCategory: OverallResult metricName: OverallResult metricValue: FEHLER_BEI_DEUTSCHE_TELEKOM - '@type': TestMeasure metricCategory: FTTH_Opt_Pegel metricName: Durchführung metricValue: OK - '@type': TestMeasure metricCategory: FTTH_Opt_Pegel metricName: oltTxPower[ONU 20 (Kunde!)] metricValue: '5.9' unitOfMeasure: dBm '@type': BsaDiagnosis - id: 68c7a048-3ded-4b71-bf6a-8ef39c6704a2 href: https://serverRoot/tmf-api/productTestManagement/v5/productTest/68c7a048-3ded-4b71-bf6a-8ef39c6704a2 state: acknowledged startDateTime: '2026-07-17T09:00:00+02:00' stateChangeDate: '2026-07-17T09:00:00+02:00' relatedProduct: id: 95b34658-c50e-4dca-904a-ae2bbcb976d0 href: https://serverRoot/tmf-api/productInventory/v5/product/95b34658-c50e-4dca-904a-ae2bbcb976d0 '@type': ProductRef agreement: - '@type': Agreement name: buyerServiceContract businessId: '500022' agreementType: buyerServiceContract engagedParty: - businessId: '500021' '@type': Organization externalIdentifier: id: '1000222' externalIdentifierType: productTestExternalId homeId: H0004711 ntDeviceOperationType: registration device: serialNumber: ONT123456789 deviceType: ONT '@type': NtDeviceOperation description: Example response for retrieving product tests ProductTest_retrieve_example_response: value: id: b9b1727e-faae-497f-8e82-43ebe92de6ce href: https://serverRoot/tmf-api/productTestManagement/v5/productTest/b9b1727e-faae-497f-8e82-43ebe92de6ce state: completed startDateTime: '2026-07-17T08:00:00+02:00' endDateTime: '2026-07-17T08:00:03+02:00' stateChangeDate: '2026-07-17T08:00:03+02:00' stateChangeMessage: - code: '7510' text: Ergebnismeldung stateChangeHistory: - state: acknowledged changeDate: '2026-07-17T08:00:00+02:00' - state: inProgress changeDate: '2026-07-17T08:00:01+02:00' relatedProduct: id: ae443f8d-aa6a-41f9-8ec7-8b01e7f666e6 href: https://serverRoot/tmf-api/productInventory/v5/product/ae443f8d-aa6a-41f9-8ec7-8b01e7f666e6 '@type': ProductRef agreement: - '@type': Agreement name: buyerServiceContract businessId: '500012' agreementType: buyerServiceContract engagedParty: - businessId: '500011' '@type': Organization externalIdentifier: id: '1000222' externalIdentifierType: productTestExternalId measureType: standard testMeasure: - '@type': TestMeasure metricCategory: OverallResult metricName: OverallResult metricValue: FEHLER_BEI_DEUTSCHE_TELEKOM - '@type': TestMeasure metricCategory: FTTH_Opt_Pegel metricName: Durchführung metricValue: OK - '@type': TestMeasure metricCategory: FTTH_Opt_Pegel metricName: oltTxPower[ONU 20 (Kunde!)] metricValue: '5.9' unitOfMeasure: dBm '@type': BsaDiagnosis description: Example response for retrieving a specific product test DiagnoseNeuAnlegenProductTestRequest: description: POST ProductTest example - Diagnose neu anlegen value: $schema: '##SCHEMA_PATH##' relatedProduct: id: ae443f8d-aa6a-41f9-8ec7-8b01e7f666e6 '@type': ProductRef agreement: - '@type': Agreement name: buyerServiceContract businessId: '500012' agreementType: buyerServiceContract engagedParty: - businessId: '500011' '@type': Organization externalIdentifier: id: '1000222' externalIdentifierType: productTestExternalId measureType: standard '@type': BsaDiagnosis ResetStartenProductTestRequest: description: POST ProductTest example - Reset starten value: $schema: '##SCHEMA_PATH##' relatedProduct: id: ae443f8d-aa6a-41f9-8ec7-8b01e7f666e6 '@type': ProductRef agreement: - '@type': Agreement name: buyerServiceContract businessId: '500012' agreementType: buyerServiceContract engagedParty: - businessId: '500011' '@type': Organization externalIdentifier: id: '1000222' externalIdentifierType: productTestExternalId resetType: lineReset '@type': BsaReset DeviceRegistrierenProductTestRequest: description: POST ProductTest example - Device registrieren value: $schema: '##SCHEMA_PATH##' relatedProduct: id: 95b34658-c50e-4dca-904a-ae2bbcb976d0 '@type': ProductRef agreement: - '@type': Agreement name: buyerServiceContract businessId: '500022' agreementType: buyerServiceContract engagedParty: - businessId: '500021' '@type': Organization externalIdentifier: id: '1000222' externalIdentifierType: productTestExternalId homeId: H0004711 ntDeviceOperationType: registration device: serialNumber: ONT123456789 deviceType: ONT '@type': NtDeviceOperation DeviceDeregistrierenProductTestRequest: description: POST ProductTest example - Device deregistrieren value: $schema: '##SCHEMA_PATH##' relatedProduct: id: 95b34658-c50e-4dca-904a-ae2bbcb976d0 '@type': ProductRef agreement: - '@type': Agreement name: buyerServiceContract businessId: '500022' agreementType: buyerServiceContract engagedParty: - businessId: '500021' '@type': Organization externalIdentifier: id: '1000222' externalIdentifierType: productTestExternalId homeId: H0004711 ntDeviceOperationType: deregistration device: serialNumber: ONT123456789 deviceType: ONT '@type': NtDeviceOperation DeviceTauschenProductTestRequest: description: POST ProductTest example - Device tauschen value: $schema: '##SCHEMA_PATH##' relatedProduct: id: 95b34658-c50e-4dca-904a-ae2bbcb976d0 '@type': ProductRef agreement: - '@type': Agreement name: buyerServiceContract businessId: '500022' agreementType: buyerServiceContract engagedParty: - businessId: '500021' '@type': Organization externalIdentifier: id: '1000222' externalIdentifierType: productTestExternalId homeId: H0004711 ntDeviceOperationType: exchange device: serialNumber: ONT123456789 deviceType: ONT exchangedDevice: serialNumber: ONT987654321 deviceType: ONT '@type': NtDeviceOperation LinkSendenProductTestRequest: description: POST ProductTest example - Link senden value: $schema: '##SCHEMA_PATH##' relatedProduct: id: ae443f8d-aa6a-41f9-8ec7-8b01e7f666e6 '@type': ProductRef agreement: - '@type': Agreement name: buyerServiceContract businessId: '500012' agreementType: buyerServiceContract engagedParty: - businessId: '500011' '@type': Organization externalIdentifier: id: '1000222' externalIdentifierType: productTestExternalId linkType: activationLink phoneNumber: '+491701234567' emailAddress: buyer@example.org '@type': SendLink UnbekannteProduktIdProductTestRequest: description: POST ProductTest example - Unbekannte Produkt-ID value: $schema: '##SCHEMA_PATH##' agreement: - '@type': Agreement name: buyerServiceContract businessId: '500012' agreementType: buyerServiceContract engagedParty: - businessId: '500011' '@type': Organization - '@type': Agreement name: singleContract businessId: '555001' agreementType: singleContract externalIdentifier: id: '1000222' externalIdentifierType: productTestExternalId accessLineId: DEU.XYZ.FTYLIQ7PFT measureType: standard '@type': BsaDiagnosis CreateProductTest_request: description: POST ProductTest request example value: $schema: '##SCHEMA_PATH##' relatedProduct: id: ae443f8d-aa6a-41f9-8ec7-8b01e7f666e6 '@type': ProductRef agreement: - '@type': Agreement name: buyerServiceContract businessId: '500012' agreementType: buyerServiceContract engagedParty: - businessId: '500011' '@type': Organization externalIdentifier: id: '1000222' externalIdentifierType: productTestExternalId measureType: standard '@type': BsaDiagnosis CreateProductTest_response: description: POST ProductTest response value: $schema: '##SCHEMA_PATH##' id: b9b1727e-faae-497f-8e82-43ebe92de6ce href: https://serverRoot/tmf-api/productTestManagement/v5/productTest/b9b1727e-faae-497f-8e82-43ebe92de6ce relatedProduct: id: ae443f8d-aa6a-41f9-8ec7-8b01e7f666e6 '@type': ProductRef href: https://serverRoot/tmf-api/productInventory/v5/product/ae443f8d-aa6a-41f9-8ec7-8b01e7f666e6 agreement: - '@type': Agreement name: buyerServiceContract businessId: '500012' agreementType: buyerServiceContract engagedParty: - businessId: '500011' '@type': Organization externalIdentifier: id: '1000222' externalIdentifierType: productTestExternalId measureType: standard state: acknowledged startDateTime: '2026-07-17T08:00:00+02:00' stateChangeDate: '2026-07-17T08:00:00+02:00' '@type': BsaDiagnosis Create_request: description: Message example for ProductTestCreateEvent value: $schema: '##SCHEMA_PATH##' eventId: 8ee84c91-b402-4f34-bcd3-5f98cbf5d9f0 eventTime: '2026-07-17T08:00:00+02:00' eventType: ProductTestCreateEvent description: ProductTestCreateEvent illustration event: productTest: id: b9b1727e-faae-497f-8e82-43ebe92de6ce href: https://serverRoot/tmf-api/productTestManagement/v5/productTest/b9b1727e-faae-497f-8e82-43ebe92de6ce relatedProduct: id: ae443f8d-aa6a-41f9-8ec7-8b01e7f666e6 '@type': ProductRef href: https://serverRoot/tmf-api/productInventory/v5/product/ae443f8d-aa6a-41f9-8ec7-8b01e7f666e6 agreement: - '@type': Agreement name: buyerServiceContract businessId: '500012' agreementType: buyerServiceContract engagedParty: - businessId: '500011' '@type': Organization externalIdentifier: id: '1000222' externalIdentifierType: productTestExternalId measureType: standard state: acknowledged stateChangeDate: '2026-07-17T08:00:00+02:00' startDateTime: '2026-07-17T08:00:00+02:00' '@type': BsaDiagnosis '@type': ProductTestCreateEvent AttributeValueChange_request: description: Message example for ProductTestAttributeValueChangeEvent value: $schema: '##SCHEMA_PATH##' eventId: 7ab65083-2a70-4b9c-9d46-0fa8331253f1 eventTime: '2026-07-17T08:00:02+02:00' eventType: ProductTestAttributeValueChangeEvent description: ProductTestAttributeValueChangeEvent illustration event: productTest: id: b9b1727e-faae-497f-8e82-43ebe92de6ce href: https://serverRoot/tmf-api/productTestManagement/v5/productTest/b9b1727e-faae-497f-8e82-43ebe92de6ce relatedProduct: id: ae443f8d-aa6a-41f9-8ec7-8b01e7f666e6 '@type': ProductRef href: https://serverRoot/tmf-api/productInventory/v5/product/ae443f8d-aa6a-41f9-8ec7-8b01e7f666e6 agreement: - '@type': Agreement name: buyerServiceContract businessId: '500012' agreementType: buyerServiceContract engagedParty: - businessId: '500011' '@type': Organization externalIdentifier: id: '1000222' externalIdentifierType: productTestExternalId measureType: standard state: inProgress stateChangeDate: '2026-07-17T08:00:02+02:00' stateChangeMessage: - code: '0000' text: Keine Änderung zum Auftrag. stateChangeHistory: - state: acknowledged changeDate: '2026-07-17T08:00:00+02:00' startDateTime: '2026-07-17T08:00:00+02:00' '@type': BsaDiagnosis testMeasure: - '@type': TestMeasure metricCategory: OverallResult metricName: OverallResult metricValue: FEHLER_BEI_DEUTSCHE_TELEKOM - '@type': TestMeasure metricCategory: FTTH_Opt_Pegel metricName: Durchführung metricValue: OK - '@type': TestMeasure metricCategory: FTTH_Opt_Pegel metricName: oltTxPower[ONU 20 (Kunde!)] metricValue: '5.9' unitOfMeasure: dBm '@type': ProductTestAttributeValueChangeEvent StateChange_request: description: Message example for ProductTestStateChangeEvent value: $schema: '##SCHEMA_PATH##' eventId: 52f86e24-fd10-4c8d-92d7-f3c94d099f3d eventTime: '2026-07-17T08:00:01+02:00' eventType: ProductTestStateChangeEvent description: ProductTestStateChangeEvent illustration event: productTest: id: b9b1727e-faae-497f-8e82-43ebe92de6ce href: https://serverRoot/tmf-api/productTestManagement/v5/productTest/b9b1727e-faae-497f-8e82-43ebe92de6ce relatedProduct: id: ae443f8d-aa6a-41f9-8ec7-8b01e7f666e6 '@type': ProductRef href: https://serverRoot/tmf-api/productInventory/v5/product/ae443f8d-aa6a-41f9-8ec7-8b01e7f666e6 agreement: - '@type': Agreement name: buyerServiceContract businessId: '500012' agreementType: buyerServiceContract engagedParty: - businessId: '500011' '@type': Organization externalIdentifier: id: '1000222' externalIdentifierType: productTestExternalId measureType: standard state: inProgress stateChangeDate: '2026-07-17T08:00:01+02:00' stateChangeMessage: - code: '0000' text: Keine Änderung zum Auftrag. stateChangeHistory: - state: acknowledged changeDate: '2026-07-17T08:00:00+02:00' startDateTime: '2026-07-17T08:00:00+02:00' '@type': BsaDiagnosis '@type': ProductTestStateChangeEvent DiagnoseNeuAnlegenProductTestStateChangeCompleted: description: ProductTestStateChangeEvent (completed) - Diagnose neu anlegen value: $schema: '##SCHEMA_PATH##' eventId: f65af67a-a35d-4848-8c61-374f8a4ad9eb eventTime: '2026-07-17T08:00:03+02:00' eventType: ProductTestStateChangeEvent description: ProductTestStateChangeEvent illustration event: productTest: id: b9b1727e-faae-497f-8e82-43ebe92de6ce href: https://serverRoot/tmf-api/productTestManagement/v5/productTest/b9b1727e-faae-497f-8e82-43ebe92de6ce relatedProduct: id: ae443f8d-aa6a-41f9-8ec7-8b01e7f666e6 '@type': ProductRef href: https://serverRoot/tmf-api/productInventory/v5/product/ae443f8d-aa6a-41f9-8ec7-8b01e7f666e6 agreement: - '@type': Agreement name: buyerServiceContract businessId: '500012' agreementType: buyerServiceContract engagedParty: - businessId: '500011' '@type': Organization externalIdentifier: id: '1000222' externalIdentifierType: productTestExternalId measureType: standard state: completed stateChangeDate: '2026-07-17T08:00:03+02:00' stateChangeMessage: - code: '7510' text: Ergebnismeldung stateChangeHistory: - state: acknowledged changeDate: '2026-07-17T08:00:00+02:00' - state: inProgress changeDate: '2026-07-17T08:00:01+02:00' startDateTime: '2026-07-17T08:00:00+02:00' endDateTime: '2026-07-17T08:00:03+02:00' testMeasure: - '@type': TestMeasure metricCategory: OverallResult metricName: OverallResult metricValue: FEHLER_BEI_DEUTSCHE_TELEKOM - '@type': TestMeasure metricCategory: FTTH_Opt_Pegel metricName: Durchführung metricValue: OK - '@type': TestMeasure metricCategory: FTTH_Opt_Pegel metricName: oltTxPower[ONU 20 (Kunde!)] metricValue: '5.9' unitOfMeasure: dBm '@type': BsaDiagnosis '@type': ProductTestStateChangeEvent requestBodies: ProductTest_FVO: description: ProductTest create payload required: true content: application/json: schema: $ref: '#/components/schemas/ProductTest_FVO' examples: DiagnoseNeuAnlegen: $ref: '#/components/examples/DiagnoseNeuAnlegenProductTestRequest' ResetStarten: $ref: '#/components/examples/ResetStartenProductTestRequest' DeviceRegistrieren: $ref: '#/components/examples/DeviceRegistrierenProductTestRequest' DeviceDeregistrieren: $ref: '#/components/examples/DeviceDeregistrierenProductTestRequest' DeviceTauschen: $ref: '#/components/examples/DeviceTauschenProductTestRequest' LinkSenden: $ref: '#/components/examples/LinkSendenProductTestRequest' UnbekannteProduktId: $ref: '#/components/examples/UnbekannteProduktIdProductTestRequest' CreateProductTest: $ref: '#/components/examples/CreateProductTest_request' ProductTest_MVO: description: ProductTest partial update payload required: true content: application/json: schema: $ref: '#/components/schemas/ProductTest_MVO' application/merge-patch+json: schema: $ref: '#/components/schemas/ProductTest_MVO' application/json-patch+json: schema: $ref: '#/components/schemas/JsonPatchOperations' ProductTestCreateEvent: description: ProductTest create event payload required: true content: application/json: schema: $ref: '#/components/schemas/ProductTestCreateEvent' examples: DiagnoseNeuAnlegenCreate: $ref: '#/components/examples/Create_request' Create: $ref: '#/components/examples/Create_request' ProductTestAttributeValueChangeEvent: description: ProductTest attributeValueChange event payload required: true content: application/json: schema: $ref: '#/components/schemas/ProductTestAttributeValueChangeEvent' examples: DiagnoseNeuAnlegenAttributeValueChange: $ref: '#/components/examples/AttributeValueChange_request' AttributeValueChange: $ref: '#/components/examples/AttributeValueChange_request' ProductTestStateChangeEvent: description: ProductTest stateChange event payload required: true content: application/json: schema: $ref: '#/components/schemas/ProductTestStateChangeEvent' examples: DiagnoseNeuAnlegenStateChangeInProgress: $ref: '#/components/examples/StateChange_request' DiagnoseNeuAnlegenStateChangeCompleted: $ref: '#/components/examples/DiagnoseNeuAnlegenProductTestStateChangeCompleted' StateChange: $ref: '#/components/examples/StateChange_request' responses: '202': description: Accepted '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' '405': description: Method Not allowed content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' '501': description: Not Implemented content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' '503': description: Service Unavailable content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' 200ProductTestArray: description: List of ProductTest headers: X-Total-Count: $ref: '#/components/headers/X-Total-Count' content: application/json: schema: type: array items: $ref: '#/components/schemas/ProductTest' examples: ProductTest_list_example: $ref: '#/components/examples/ProductTest_list_example_response' 200ProductTest_Get: description: ProductTest retrieved successfully content: application/json: schema: $ref: '#/components/schemas/ProductTest' examples: ProductTest_retrieve_example: $ref: '#/components/examples/ProductTest_retrieve_example_response' 200ProductTest_Patch: description: ProductTest updated successfully content: application/json: schema: $ref: '#/components/schemas/ProductTest' application/merge-patch+json: schema: $ref: '#/components/schemas/ProductTest' application/json-patch+json: schema: $ref: '#/components/schemas/ProductTest' 201ProductTest: description: ProductTest created successfully content: application/json: schema: $ref: '#/components/schemas/ProductTest' examples: CreateProductTest: $ref: '#/components/examples/CreateProductTest_response' DefaultError: description: Error content: application/json: schema: $ref: '#/components/schemas/ErrorMessage' 204Notified: description: Notified parameters: Fields: name: fields in: query description: Comma-separated properties to be provided in response schema: type: string Offset: name: offset in: query description: Requested index for start of resources to be provided in response schema: type: integer Limit: name: limit in: query description: Requested number of resources to be provided in response schema: type: integer Id: name: id required: true schema: type: string in: path description: Identifier of the API Resource headers: X-Total-Count: description: Total number of items matching criteria schema: type: integer