openapi: 3.1.0 info: title: FIT-Product Ordering description: |- The following document is the user guide of the REST API for Product Ordering management. It includes the model definition as well as all available operations. The Product Ordering API provides a standardized mechanism for placing a Product Order with all of the necessary order parameters. The API consists of a simple set of operations that interact with Customer Relationship Management / Order Negotiation systems in a consistent manner. A Product Order is created based on a product offer that is defined in a catalog. The Product Order references the product offer and identifies any specific requests made by the customer. Product Ordering API manages Product Order resource: - A Product Order is a type of order which can be used to place an order between a customer and a service provider or between a service provider and a partner and vice versa - Main Product Order attributes are its identifier, state (acknowledged, inProgress, completed...), priority, category, related dates, related billing account, related parties and order items - Main Order Items (aka order lines) attributes are the ordered offering and product characteristics with the related action to be performed (e.g. add or delete the products), state, location information for delivery. Product Ordering API performs the following operations on Product Order: - Creation of a Product Order (including default values and creation rules) - Retrieval of a Product Order or a collection of Product Orders depending on filter criteria - Notification of events on Product Order - Product Order creation - Product Order state change - Product Order attribute value change used to notify that any data in an order has just changed - Product Order information required used to notify that some data in the order need to be filled / are missing - Product Order jeopardy alert - Product Order milestone Product Ordering API performs the following operations on CancelProductOrder: - Creation of a Product Order cancel request - Retrieval of a Product Order cancellation request or a collection of Product Order cancellation requests depending on filter criteria - Notification of events on Product Order cancel - Cancel Product Order state change Product Ordering API performs the following operations on InflightChangeProductOrder (FIT only, for changing (amend, reschedule, add information, provide a response to an existing provider change Product Order, close) an existing Product Order): - Creation of an Inflight Change Product Order request - Retrieval of an Inflight Change Product Order request or a collection of Inflight Change Product Order requests depending on filter criteria - Notification of events on Inflight Change Product Order - Inflight Change Product Order state change #### FIT Adaptations **ProductOrder resource:** - PATCH & DELETE are not used for FIT - added state change history (based on TMF621) - Milestone / JeopardyAlert adapted to FIT requirements - added ProviderChangeInfo to document provider change agreement - added requestedTimeSlot to provide time slot request for appointment - added alternateProductOffering **InflightChangeProductOrder task resource:** added task resource to change an existing Product Order, e.g., rescheduling, addition of optional products, notes and related parties. #### Sources The source API definition can be found at [fit-tmf622.yaml](https://bitbucket.org/fit-api/fit-api/src/tmf622_v2.0.3/tmf622/oas/fit-tmf622.yaml) version: '2.0.3' servers: - url: https://api.example.com/tmf-api/productOrderingManagement/v5 - url: http://localhost:8080/tmf-api/productOrderingManagement/v5 security: - OAuth2ClientCredentials: - read - write tags: - name: productOrder description: Operations for ProductOrder Resource. - name: cancelProductOrder description: Operations for CancelProductOrder Resource. - name: inflightChangeProductOrder description: Operations for InflightChangeProductOrder Resource. - name: notification listener description: Notifications for Resource Lifecycle and event notifications. paths: /productOrder: get: operationId: listProductOrder summary: List or find ProductOrder objects description: |- This operation retrieves a ProductOrder entity. Attribute selection enabled for all first level attributes. parameters: - $ref: '#/components/parameters/Fields' - $ref: '#/components/parameters/Offset' - $ref: '#/components/parameters/Limit' responses: '200': $ref: '#/components/responses/200ProductOrderArray' '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' '406': $ref: '#/components/responses/406' '409': $ref: '#/components/responses/409' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' security: - OAuth2ClientCredentials: - read tags: - productOrder post: operationId: createProductOrder summary: Creates a ProductOrder description: This operation creates a ProductOrder entity. requestBody: $ref: '#/components/requestBodies/ProductOrder_FVO' responses: '201': $ref: '#/components/responses/201ProductOrder' '202': $ref: '#/components/responses/202' '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '409': $ref: '#/components/responses/409' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' security: - OAuth2ClientCredentials: - write tags: - productOrder /productOrder/{id}: get: operationId: retrieveProductOrder summary: Retrieves a ProductOrder by ID description: This operation retrieves a ProductOrder entity. Attribute selection is enabled for all first level attributes. parameters: - $ref: '#/components/parameters/Id' - $ref: '#/components/parameters/Fields' responses: '200': $ref: '#/components/responses/200ProductOrder' '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' '406': $ref: '#/components/responses/406' '409': $ref: '#/components/responses/409' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' security: - OAuth2ClientCredentials: - read tags: - productOrder /cancelProductOrder: get: operationId: listCancelProductOrder summary: List or find CancelProductOrder objects description: |- This operation retrieves a CancelProductOrder entity. Attribute selection enabled for all first level attributes. parameters: - $ref: '#/components/parameters/Fields' - $ref: '#/components/parameters/Offset' - $ref: '#/components/parameters/Limit' responses: '200': $ref: '#/components/responses/200CancelProductOrderArray' '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' '406': $ref: '#/components/responses/406' '409': $ref: '#/components/responses/409' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' security: - OAuth2ClientCredentials: - read tags: - cancelProductOrder post: operationId: createCancelProductOrder summary: Creates a CancelProductOrder description: This operation creates a CancelProductOrder entity. requestBody: $ref: '#/components/requestBodies/CancelProductOrder_FVO' responses: '201': $ref: '#/components/responses/201CancelProductOrder' '202': $ref: '#/components/responses/202' '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '409': $ref: '#/components/responses/409' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' security: - OAuth2ClientCredentials: - write tags: - cancelProductOrder /cancelProductOrder/{id}: get: operationId: retrieveCancelProductOrder summary: Retrieves a CancelProductOrder by ID description: This operation retrieves a CancelProductOrder entity. Attribute selection is enabled for all first level attributes. parameters: - $ref: '#/components/parameters/Id' - $ref: '#/components/parameters/Fields' responses: '200': $ref: '#/components/responses/200CancelProductOrder' '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' '406': $ref: '#/components/responses/406' '409': $ref: '#/components/responses/409' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' security: - OAuth2ClientCredentials: - read tags: - cancelProductOrder /inflightChangeProductOrder: get: operationId: listInflightChangeProductOrder summary: List or find InflightChangeProductOrder objects description: |- This operation retrieves a InflightChangeProductOrder entity. Attribute selection enabled for all first level attributes. parameters: - $ref: '#/components/parameters/Fields' - $ref: '#/components/parameters/Offset' - $ref: '#/components/parameters/Limit' responses: '200': $ref: '#/components/responses/200InflightChangeProductOrderArray' '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' '406': $ref: '#/components/responses/406' '409': $ref: '#/components/responses/409' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' '501': $ref: '#/components/responses/501' '503': $ref: '#/components/responses/503' security: - OAuth2ClientCredentials: - read tags: - inflightChangeProductOrder post: operationId: createInflightChangeProductOrder summary: Creates a InflightChangeProductOrder description: This operation creates a InflightChangeProductOrder entity. requestBody: $ref: '#/components/requestBodies/InflightChangeProductOrder_FVO' responses: '201': $ref: '#/components/responses/201InflightChangeProductOrder' '202': $ref: '#/components/responses/202' '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '405': $ref: '#/components/responses/405' '406': $ref: '#/components/responses/406' '409': $ref: '#/components/responses/409' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' security: - OAuth2ClientCredentials: - write tags: - inflightChangeProductOrder /inflightChangeProductOrder/{id}: get: operationId: retrieveInflightChangeProductOrder summary: Retrieves a InflightChangeProductOrder by ID description: This operation retrieves a InflightChangeProductOrder entity. Attribute selection is enabled for all first level attributes. parameters: - $ref: '#/components/parameters/Id' - $ref: '#/components/parameters/Fields' responses: '200': $ref: '#/components/responses/200InflightChangeProductOrder' '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' '406': $ref: '#/components/responses/406' '409': $ref: '#/components/responses/409' '429': $ref: '#/components/responses/429' '500': $ref: '#/components/responses/500' security: - OAuth2ClientCredentials: - read tags: - inflightChangeProductOrder /listener/productOrderCreateEvent: post: operationId: listenToProductOrderCreateEvent summary: Client listener for ProductOrderCreateEvent description: Example of a client listener for receiving notifications requestBody: $ref: '#/components/requestBodies/ProductOrderCreateEvent' responses: '204': $ref: '#/components/responses/204Notified' default: $ref: '#/components/responses/DefaultError' tags: - notification listener /listener/productOrderAttributeValueChangeEvent: post: operationId: listenToProductOrderAttributeValueChangeEvent summary: Client listener for ProductOrderAttributeValueChangeEvent description: Example of a client listener for receiving notifications requestBody: $ref: '#/components/requestBodies/ProductOrderAttributeValueChangeEvent' responses: '204': $ref: '#/components/responses/204Notified' default: $ref: '#/components/responses/DefaultError' tags: - notification listener /listener/productOrderStateChangeEvent: post: operationId: listenToProductOrderStateChangeEvent summary: Client listener for ProductOrderStateChangeEvent description: Example of a client listener for receiving notifications requestBody: $ref: '#/components/requestBodies/ProductOrderStateChangeEvent' responses: '204': $ref: '#/components/responses/204Notified' default: $ref: '#/components/responses/DefaultError' tags: - notification listener /listener/productOrderMilestoneEvent: post: operationId: listenToProductOrderMilestoneEvent summary: Client listener for ProductOrderMilestoneEvent description: Example of a client listener for receiving notifications requestBody: $ref: '#/components/requestBodies/ProductOrderMilestoneEvent' responses: '204': $ref: '#/components/responses/204Notified' default: $ref: '#/components/responses/DefaultError' tags: - notification listener /listener/productOrderJeopardyAlertEvent: post: operationId: listenToProductOrderJeopardyAlertEvent summary: Client listener for ProductOrderJeopardyAlertEvent description: Example of a client listener for receiving notifications requestBody: $ref: '#/components/requestBodies/ProductOrderJeopardyAlertEvent' responses: '204': $ref: '#/components/responses/204Notified' default: $ref: '#/components/responses/DefaultError' tags: - notification listener /listener/productOrderInformationRequiredEvent: post: operationId: listenToProductOrderInformationRequiredEvent summary: Client listener for ProductOrderInformationRequiredEvent description: Example of a client listener for receiving notifications requestBody: $ref: '#/components/requestBodies/ProductOrderInformationRequiredEvent' responses: '204': $ref: '#/components/responses/204Notified' default: $ref: '#/components/responses/DefaultError' tags: - notification listener /listener/cancelProductOrderStateChangeEvent: post: operationId: listenToCancelProductOrderStateChangeEvent summary: Client listener for CancelProductOrderStateChangeEvent description: Example of a client listener for receiving notifications requestBody: $ref: '#/components/requestBodies/CancelProductOrderStateChangeEvent' responses: '204': $ref: '#/components/responses/204Notified' default: $ref: '#/components/responses/DefaultError' tags: - notification listener /listener/inflightChangeProductOrderStateChangeEvent: post: operationId: listenToInflightChangeProductOrderStateChangeEvent summary: Client listener for InflightChangeProductOrderStateChangeEvent description: Example of a client listener for receiving notifications requestBody: $ref: '#/components/requestBodies/InflightChangeProductOrderStateChangeEvent' responses: '204': $ref: '#/components/responses/204Notified' default: $ref: '#/components/responses/DefaultError' tags: - notification listener components: schemas: InstallationInstruction: description: Specialization of Note allOf: - $ref: '#/components/schemas/Note' - type: object discriminator: propertyName: '@type' mapping: InstallationInstruction: '#/components/schemas/InstallationInstruction' BillingAccountRef: description: BillingAccount reference. A BillingAccount is a detailed description of a bill structure. type: object allOf: - $ref: '#/components/schemas/EntityRef' discriminator: propertyName: '@type' mapping: BillingAccountRef: '#/components/schemas/BillingAccountRef' CancelProductOrder: description: Request for cancellation an existing Product Order example: description: Example of created CancelProductOrder value: $schema: '##SCHEMA_PATH##' '@type': CancelProductOrder id: 2fd01b2b-9110-41ed-8efd-014d7e8ee158 href: https://api.example.org/tmf-api/productOrderingManagement/v5/cancelProductOrder/2fd01b2b-9110-41ed-8efd-014d7e8ee158 state: acknowledged requestDate: '2022-05-11T11:25:00+02:00' requestPostedDate: '2022-05-11T10:30:00+02:00' entity: '@type': ProductOrderRef id: 388a4963-f168-4603-99e8-477200099d91 href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91 stateChangeDate: '2022-05-11T11:25:00+02:00' allOf: - $ref: '#/components/schemas/TaskEntity' - type: object properties: stateChangeDate: description: The date and time the state changed. type: string format: date-time example: '2024-01-01T12: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: [] stateChangeHistory: description: The state change history that is associated to the Entity. Populated by the server type: array items: $ref: '#/components/schemas/StateChange' example: [] externalId: description: A reference to an externaly defined object in the context of the Product Order type: array items: $ref: '#/components/schemas/ExternalIdentifier' example: [] discriminator: propertyName: '@type' mapping: CancelProductOrder: '#/components/schemas/CancelProductOrder' CancelProductOrder_FVO: description: |- Request for cancellation an existing Product Order Skipped properties: state, stateChange, stateChangeDate, stateChangeHistory allOf: - $ref: '#/components/schemas/TaskEntity_FVO' - type: object properties: externalId: description: A reference to an externaly defined object in the context of the Product Order type: array items: $ref: '#/components/schemas/ExternalIdentifier' example: [] discriminator: propertyName: '@type' mapping: CancelProductOrder: '#/components/schemas/CancelProductOrder_FVO' InflightChangeProductOrder: description: Request to reschedule an existing Product Order example: description: Example of created InflightChangeProductOrder value: $schema: '##SCHEMA_PATH##' '@type': InflightChangeProductOrder id: 892cfa45-fca3-488d-8a7c-2883923f820e href: https://api.example.org/tmf-api/productOrderingManagement/v5/inflightChangeProductOrder/892cfa45-fca3-488d-8a7c-2883923f820e state: acknowledged requestDate: '2022-05-11T10:35:00+02:00' requestPostedDate: '2022-05-11T10:35:00+02:00' entity: '@type': ProductOrderRef id: 596d7fa0-981f-4b98-bcf5-e9b2955776f4 href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/596d7fa0-981f-4b98-bcf5-e9b2955776f4 category: - respondProviderChange stateChangeDate: '2022-05-11T10:35:00+02:00' providerChangeInfo: '@type': ProviderChangeInfo approval: true allOf: - $ref: '#/components/schemas/TaskEntity' - type: object required: - category properties: category: type: array items: type: string description: |- Possible values for the category of the task resource: enum: - add - activate - amend - close - respondProviderChange - reschedule example: respondProviderChange requestedCompletionDate: description: Rescheduled requested delivery date from the requester perspective type: string format: date-time example: '2025-12-24T19:30:00+01:00' closeMessage: $ref: '#/components/schemas/Message' stateChangeDate: description: The date and time the state changed. type: string format: date-time example: '2024-01-01T12: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: [] stateChangeHistory: description: The state change history that is associated to the Entity. Populated by the server type: array items: $ref: '#/components/schemas/StateChange' example: [] providerChangeInfo: $ref: '#/components/schemas/ProviderChangeInfo' externalId: description: A reference to an externaly defined object in the context of the Product Order type: array items: $ref: '#/components/schemas/ExternalIdentifier' example: [] agreement: description: A reference to an agreement defined in the context of the Product Order type: array items: $ref: '#/components/schemas/AgreementRefOrValue' example: [] note: description: Note type: array items: $ref: '#/components/schemas/Note' example: [] relatedParty: description: Related party type: array items: $ref: '#/components/schemas/RelatedPartyOrPartyRole' example: [] additionalOrderInformation: $ref: '#/components/schemas/AdditionalOrderInformation' productOrderItem: type: array items: $ref: '#/components/schemas/ProductOrderItem' example: [] discriminator: propertyName: '@type' mapping: InflightChangeProductOrder: '#/components/schemas/InflightChangeProductOrder' InflightChangeProductOrder_FVO: description: |- Request to change an existing Product Order Skipped properties: state, stateChange, stateChangeDate, stateChangeHistory allOf: - $ref: '#/components/schemas/TaskEntity_FVO' - type: object required: - category properties: category: type: array items: type: string description: |- Possible values for the category of the task resource: enum: - add - activate - amend - close - respondProviderChange - reschedule example: respondProviderChange requestedCompletionDate: description: Rescheduled requested delivery date from the requester perspective type: string format: date-time example: '2025-12-24T19:30:00+01:00' closeMessage: $ref: '#/components/schemas/Message' providerChangeInfo: $ref: '#/components/schemas/ProviderChangeInfo' externalId: description: A reference to an externally defined object in the context of the Product Order type: array items: $ref: '#/components/schemas/ExternalIdentifier' example: [] agreement: description: A reference to an agreement defined in the context of the Product Order type: array items: $ref: '#/components/schemas/AgreementRefOrValue' example: [] note: description: Note type: array items: $ref: '#/components/schemas/Note' example: [] relatedParty: description: Related party type: array items: $ref: '#/components/schemas/RelatedPartyOrPartyRole' example: [] additionalOrderInformation: $ref: '#/components/schemas/AdditionalOrderInformation' productOrderItem: type: array items: $ref: '#/components/schemas/ProductOrderItem' example: [] discriminator: propertyName: '@type' mapping: InflightChangeProductOrder: '#/components/schemas/InflightChangeProductOrder_FVO' OrderItemActionType: description: |- Action to be performed on the product: type: string enum: - add - modify - delete - nochange - transfer OrderItemRelationship: description: Used to describe relationships between order items for complex business cases (e.g. product change). allOf: - $ref: '#/components/schemas/Extensible' - type: object properties: id: description: Id of the related Order item (must be in the same Order) type: string example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5 relationshipType: description: Relationship type as relies on, bundles, etc... type: string example: requires discriminator: propertyName: '@type' mapping: OrderItemRelationship: '#/components/schemas/OrderItemRelationship' ProductOrderRelationship: description: The ProductOrderRelationship makes it possible to document references to other Product Orders. Use cases include orders on behalf of third parties and group orders. allOf: - $ref: '#/components/schemas/Entity' - type: object properties: relationshipType: description: The type of Product Order relationship type: string example: requires productOrder: description: Product Order type: array items: $ref: '#/components/schemas/ProductOrderRefOrValue' example: [] discriminator: propertyName: '@type' mapping: ProductOrderRelationship: '#/components/schemas/ProductOrderRelationship' Product: description: A product offering procured by a customer or other interested party playing a party role. A product is realized as one or more service(s) and / or resource(s). allOf: - $ref: '#/components/schemas/Entity' - type: object properties: creationDate: description: Date and time when the product was created type: string format: date-time example: '2023-01-01T08:00:00+01:00' description: description: Is the description of the product. It could be copied from the description of the Product Offering. type: string example: Lorem ipsum dolor name: description: Name of the product. It could be the same as the name of the product offering type: string example: Acme ludicrous speed fiber line orderDate: description: Is the date when the product was ordered type: string format: date-time example: '2023-01-01T08:00:00+01:00' startDate: description: Is the date from which the product starts type: string format: date-time example: '2023-01-01T08:00:00+01:00' terminationDate: description: Is the date when the product was terminated type: string format: date-time example: '2023-01-01T08:00:00+01:00' relatedPlace: description: Related place type: array items: $ref: '#/components/schemas/RelatedPlaceRefOrValue' example: [] product: description: Product type: array items: $ref: '#/components/schemas/ProductRefOrValue' example: [] productCharacteristic: description: Product characteristic type: array items: $ref: '#/components/schemas/Characteristic' example: [] productOffering: $ref: '#/components/schemas/ProductOfferingRefOrValue' productRelationship: description: Product relationship type: array items: $ref: '#/components/schemas/ProductRelationship' example: [] productSpecification: $ref: '#/components/schemas/ProductSpecificationRef' relatedParty: type: array items: $ref: '#/components/schemas/RelatedPartyOrPartyRole' example: [] status: $ref: '#/components/schemas/ProductStatusType' discriminator: propertyName: '@type' mapping: Product: '#/components/schemas/Product' BitstreamAccessProduct: '#/components/schemas/BitstreamAccessProduct' OpticalAccessLineProduct: '#/components/schemas/OpticalAccessLineProduct' HvtLocalLoopProduct: '#/components/schemas/HvtLocalLoopProduct' KvzLocalLoopProduct: '#/components/schemas/KvzLocalLoopProduct' StandaloneFieldServiceProduct: '#/components/schemas/StandaloneFieldServiceProduct' ProductOfferingQualificationRef: description: It's a productOfferingQualification that has been executed previously type: object allOf: - $ref: '#/components/schemas/EntityRef' discriminator: propertyName: '@type' mapping: ProductOfferingQualificationRef: '#/components/schemas/ProductOfferingQualificationRef' ProductOrder: description: A Product Order is a type of order which can be used to place an order between a customer and a service provider or between a service provider and a partner and vice versa, example: description: Example of created ProductOrder value: $schema: '##SCHEMA_PATH##' '@type': ProductOrder id: 388a4963-f168-4603-99e8-477200099d91 href: https://api.example.org/tmf-api/productOrderingManagement/v5/productOrder/388a4963-f168-4603-99e8-477200099d91 category: new creationDate: '2022-05-11T10:30:30+02:00' orderPostedDate: '2022-05-11T10:30:00+02:00' requestedCompletionDate: '2022-12-01T12:00:00+01:00' agreement: - '@type': Agreement name: buyerServiceContract engagedParty: - '@type': Organization businessId: '500011' businessId: '500012' agreementType: buyerServiceContract - '@type': Agreement name: ordererServiceContract engagedParty: - '@type': Organization businessId: '500014' businessId: '500013' agreementType: ordererServiceContract - '@type': Agreement name: providerChangeAgreement businessId: DEU.VFD.V012345678 agreementType: providerChangeAgreement externalId: - '@type': ExternalIdentifier id: '1000111' externalIdentifierType: externalOrderId owner: DEU.VFD productOrderItem: - '@type': ProductOrderItem id: '1' action: add product: '@type': BitstreamAccessProduct creationDate: '2022-05-11T10:30:30+02:00' relatedPlace: - '@type': RelatedPlaceRefOrValue role: locationA place: '@type': GeographicAddress city: Rheinhausen country: DE locality: Nordstadt postcode: '59055' streetName: Biberweg streetNr: '2' streetNrSuffix: a geographicSubAddress: - '@type': GeographicSubAddress buildingName: Einfamilienhaus networkTerminationUnitLocation: Flur 3.OG homeId: a12d5a4545 productOffering: '@type': ProductOffering name: FTTH 250000 requestedTimeSlot: '@type': TimeSlot validFor: startDateTime: '2022-12-01T08:00:00+01:00' endDateTime: '2022-12-01T12:00:00+01:00' relatedParty: - '@type': RelatedPartyOrPartyRole role: orderManagementBuyerContact partyOrPartyRole: '@type': Individual contactMedium: - '@type': PhoneContactMedium contactType: fixed phoneNumber: '+49221456789' - '@type': PhoneContactMedium contactType: mobile phoneNumber: '+4917754545454' - '@type': EmailContactMedium contactType: email emailAddress: j.kirk@example.net familyName: Kirk salutation: Herr givenName: James T. title: Captain - '@type': RelatedPartyOrPartyRole role: installationContact partyOrPartyRole: '@type': Individual contactMedium: - '@type': PhoneContactMedium contactType: fixed phoneNumber: '+49221145155' - '@type': PhoneContactMedium contactType: mobile phoneNumber: '+4917878878788' - '@type': EmailContactMedium contactType: email emailAddress: a.fischer@example.net familyName: Fischer salutation: Herr givenName: Alexander - '@type': RelatedPartyOrPartyRole role: locationAContact partyOrPartyRole: '@type': Individual familyName: Müller salutation: Herr givenName: Maximilian state: acknowledged stateChangeDate: '2022-05-11T10:30:00+02:00' additionalOrderInformation: campaignIdentifier: - PromotionFiber projectIdentifier: AB1234 couplingIdentifier: QW567 orderBindingId: AK45678 orderBindingNumberOfOrders: 5 hardwareIdType: OntSerialNumber hardwareIdValue: '1234567890' allOf: - $ref: '#/components/schemas/Entity' - type: object required: - productOrderItem - category - creationDate - orderPostedDate - state - stateChangeDate properties: category: description: Used to categorize the order from a business perspective (new, productChange, groupChange, productModification, termination, groupMigration) type: string example: new description: description: Description of the Product Order type: string example: Lorem ipsum dolor expectedCompletionDate: description: Expected delivery date amended by the provider type: string format: date-time example: '2025-12-24T19:30:00+01:00' creationDate: description: Date when the order resource was created type: string format: date-time example: '2023-01-01T08:00:00+01:00' orderIsChargingRelevant: description: Boolean amended by the provider defining if the processing of the ProductOrder is charging relevant type: boolean example: false orderPostedDate: description: Date when the order was posted by the requester type: string format: date-time example: '2023-01-01T08:00:00+01:00' priority: description: 'A way that can be used by consumers to prioritize orders in OM system (from 0 to 4 : 0 is the highest priority, and 4 the lowest)' type: string example: '4' requestedCompletionDate: description: Requested delivery date from the requestors perspective type: string format: date-time example: '2025-12-24T19:30:00+01:00' agreement: description: A reference to an agreement defined in the context of the Product Order type: array items: $ref: '#/components/schemas/AgreementRefOrValue' example: [] externalId: description: A reference to an externaly defined object in the context of the Product Order type: array items: $ref: '#/components/schemas/ExternalIdentifier' example: [] billingAccount: $ref: '#/components/schemas/BillingAccountRef' note: description: Note type: array items: $ref: '#/components/schemas/Note' example: [] productOfferingQualification: description: Product offering qualification type: array items: $ref: '#/components/schemas/ProductOfferingQualificationRef' example: [] productOrderItem: description: Product Order item type: array items: $ref: '#/components/schemas/ProductOrderItem' example: [] minItems: 1 relatedParty: description: Related party type: array items: $ref: '#/components/schemas/RelatedPartyOrPartyRole' example: [] state: $ref: '#/components/schemas/ProductOrderStateType' stateChangeDate: description: The date and time the state changed. type: string format: date-time example: '2024-01-01T12: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: [] stateChangeHistory: description: The state change history that is associated to the Entity. Populated by the server type: array items: $ref: '#/components/schemas/StateChange' example: [] earliestOrderRetry: description: Earliest date when the order can be submitted again. type: string format: date-time example: '2023-01-01T08:00:00+01:00' attachment: description: Attachment type: array items: $ref: '#/components/schemas/AttachmentRefOrValue' example: [] productOrderJeopardyAlert: description: List of ProductOrderJeopardyAlerts. A ProductOrderJeopardyAlert represents a predicted exception during a Product Order processing that would brings risk to complete successfully the order. type: array items: $ref: '#/components/schemas/ProductOrderJeopardyAlert' example: [] productOrderMilestone: description: List of ProductOrderMilestones. A ProductOrderMilestone represents an action or event marking a significant change or stage in processing of a Product Order. type: array items: $ref: '#/components/schemas/ProductOrderMilestone' example: [] productOrderRelationship: description: Product Order relationship type: array items: $ref: '#/components/schemas/ProductOrderRelationship' example: [] providerChangeInfo: $ref: '#/components/schemas/ProviderChangeInfo' additionalOrderInformation: $ref: '#/components/schemas/AdditionalOrderInformation' discriminator: propertyName: '@type' mapping: ProductOrder: '#/components/schemas/ProductOrder' ProductOrder_FVO: description: |- A Product Order is a type of order which can be used to place an order between a customer and a service provider or between a service provider and a partner and vice versa, Skipped properties: id, href, expectedCompletionDate, creationDate, orderIsChargingRelevant, state, stateChangeDate, stateChangeMessage, stateChangeHistory, requestedCompletionChangeHistory, expectedCompletionChangeHistory, jeopardyAlert, milestone, expectedCompletionDate (also skip productOrderItem.state) allOf: - $ref: '#/components/schemas/Extensible_FVO' - type: object required: - productOrderItem - category - orderPostedDate properties: category: description: Used to categorize the order from a business perspective (new, productChange, groupChange, productModification, termination, groupMigration) type: string example: new description: description: Description of the Product Order type: string example: Lorem ipsum dolor orderPostedDate: description: Date when the order request was created/posted type: string format: date-time example: '2023-01-01T08:00:00+01:00' priority: description: 'A way that can be used by consumers to prioritize orders in OM system (from 0 to 4: 0 is the highest priority, and 4 the lowest)' type: string example: '4' requestedCompletionDate: description: Expected completion date amended by the provider type: string format: date-time example: '2025-12-24T19:30:00+01:00' agreement: description: A reference to an agreement defined in the context of the Product Order type: array items: $ref: '#/components/schemas/AgreementRefOrValue' example: [] externalId: description: A reference to an externaly defined object in the context of the Product Order type: array items: $ref: '#/components/schemas/ExternalIdentifier' example: [] billingAccount: $ref: '#/components/schemas/BillingAccountRef' note: description: Note type: array items: $ref: '#/components/schemas/Note' example: [] productOfferingQualification: description: Product Order qualification type: array items: $ref: '#/components/schemas/ProductOfferingQualificationRef' example: [] productOrderItem: description: Product Order item type: array items: $ref: '#/components/schemas/ProductOrderItem' example: [] minItems: 1 relatedParty: description: Related party type: array items: $ref: '#/components/schemas/RelatedPartyOrPartyRole' example: [] attachment: description: Attachment type: array items: $ref: '#/components/schemas/AttachmentRefOrValue' example: [] productOrderRelationship: description: Product Order relationship type: array items: $ref: '#/components/schemas/ProductOrderRelationship' example: [] additionalOrderInformation: $ref: '#/components/schemas/AdditionalOrderInformation' discriminator: propertyName: '@type' mapping: ProductOrder: '#/components/schemas/ProductOrder_FVO' ProductOrderItem: description: An identified part of the order. A Product Order is decomposed into one or more order items. allOf: - $ref: '#/components/schemas/Extensible' - type: object required: - action - id properties: id: description: Identifier of the ProductOrder item (generally it is a sequence number 01, 02, 03,...) type: string example: '01' action: $ref: '#/components/schemas/OrderItemActionType' product: $ref: '#/components/schemas/ProductRefOrValue' productOffering: $ref: '#/components/schemas/ProductOfferingRefOrValue' alternateProductOffering: $ref: '#/components/schemas/ProductOfferingRefOrValue' productOrderItemRelationship: description: Product Order item relationship type: array items: $ref: '#/components/schemas/OrderItemRelationship' example: [] productOfferingQualificationItem: $ref: '#/components/schemas/ProductOfferingQualificationItemRef' endUserAppointmentIsNecessary: description: Defines if an end user appointment is required for this order item type: boolean example: false requestedTimeSlot: $ref: '#/components/schemas/TimeSlot' appointment: $ref: '#/components/schemas/AppointmentRefOrValue' discriminator: propertyName: '@type' mapping: ProductOrderItem: '#/components/schemas/ProductOrderItem' ProductOfferingQualificationItemRef: description: It's a productOfferingQualification item that has been executed previously allOf: - $ref: '#/components/schemas/Extensible' - type: object properties: productOfferingQualificationName: description: Name of the related entity. type: string example: n/a productOfferingQualificationHref: description: Reference of the related entity. type: string example: n/a '@referredType': description: The actual type of the target instance when needed for disambiguation. type: string example: n/a productOfferingQualificationId: description: Unique identifier of a related entity. type: string example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5 itemId: description: Id of an item of a product offering qualification type: string example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5 ProductOrderStateType: description: |- Possible values for the state of the order: type: string enum: - acknowledged - accepted - rejected - pending - inProgress - held - assessingCancellation - cancelled - completed - closed - failed - readyForActivation ProductOrderRef: description: ProductOrder (ProductOrder). The product order which the action is related with. type: object allOf: - $ref: '#/components/schemas/EntityRef' ProductOrderRefOrValue: description: Product reference or value type: object discriminator: propertyName: '@type' oneOf: - $ref: '#/components/schemas/ProductOrderRef' - $ref: '#/components/schemas/ProductOrder' ProductRef: description: Product reference type: object allOf: - $ref: '#/components/schemas/EntityRef' ProductRefOrValue: description: A product to be created defined by value or existing defined by reference. type: object discriminator: propertyName: '@type' oneOf: - $ref: '#/components/schemas/ProductRef' - $ref: '#/components/schemas/Product' ProductRelationship: description: Used to describe relationship between product. type: object properties: relationshipType: description: Relationship type as relies on, bundles, etc... type: string example: requires allOf: - $ref: '#/components/schemas/EntityRef' discriminator: propertyName: '@type' mapping: ProductRelationship: '#/components/schemas/ProductRelationship' ProductStatusType: description: |- Possible values for the status of the product: type: string enum: - created - pendingActive - cancelled - active - pendingTerminate - terminated - suspended - aborted ProductOrderCreateEvent: allOf: - $ref: '#/components/schemas/Event' - type: object description: ProductOrderCreateEvent generic structure properties: event: $ref: '#/components/schemas/ProductOrderCreateEventPayload' discriminator: propertyName: '@type' mapping: ProductOrderCreateEvent: '#/components/schemas/ProductOrderCreateEvent' ProductOrderCreateEventPayload: description: ProductOrderCreateEventPayload type: object properties: productOrder: $ref: '#/components/schemas/ProductOrder' ProductOrderAttributeValueChangeEvent: description: The notification data structure allOf: - $ref: '#/components/schemas/AttributeValueChangeEvent' - type: object properties: event: description: The event payload linked to the involved resource object $ref: '#/components/schemas/ProductOrderAttributeValueChangeEventPayload' discriminator: propertyName: '@type' mapping: ProductOrderAttributeValueChangeEvent: '#/components/schemas/ProductOrderAttributeValueChangeEvent' ProductOrderAttributeValueChangeEventPayload: description: The event data structure type: object properties: productOrder: description: The involved resource data for the event $ref: '#/components/schemas/ProductOrder' ProductOrderStateChangeEvent: description: The notification data structure allOf: - $ref: '#/components/schemas/Event' - type: object properties: event: description: The event payload linked to the involved resource object $ref: '#/components/schemas/ProductOrderStateChangeEventPayload' discriminator: propertyName: '@type' mapping: ProductOrderStateChangeEvent: '#/components/schemas/ProductOrderStateChangeEvent' ProductOrderStateChangeEventPayload: description: The event data structure type: object properties: productOrder: description: The involved resource data for the event $ref: '#/components/schemas/ProductOrder' ProductOrderInformationRequiredEvent: description: The notification data structure allOf: - $ref: '#/components/schemas/Event' - type: object properties: fieldPath: description: Field path type: array items: $ref: '#/components/schemas/FieldPath' example: [] event: description: The event payload linked to the involved resource object $ref: '#/components/schemas/ProductOrderInformationRequiredEventPayload' discriminator: propertyName: '@type' mapping: ProductOrderInformationRequiredEvent: '#/components/schemas/ProductOrderInformationRequiredEvent' ProductOrderInformationRequiredEventPayload: description: The event data structure type: object properties: productOrder: description: The involved resource data for the event $ref: '#/components/schemas/ProductOrder' CancelProductOrderStateChangeEvent: description: The notification data structure allOf: - $ref: '#/components/schemas/Event' - type: object properties: event: description: The event payload linked to the involved resource object $ref: '#/components/schemas/CancelProductOrderStateChangeEventPayload' discriminator: propertyName: '@type' mapping: CancelProductOrderStateChangeEvent: '#/components/schemas/CancelProductOrderStateChangeEvent' CancelProductOrderStateChangeEventPayload: description: The event data structure type: object properties: cancelProductOrder: description: The involved resource data for the event $ref: '#/components/schemas/CancelProductOrder' InflightChangeProductOrderStateChangeEvent: description: The notification data structure allOf: - $ref: '#/components/schemas/Event' - type: object properties: event: description: The event payload linked to the involved resource object $ref: '#/components/schemas/InflightChangeProductOrderStateChangeEventPayload' discriminator: propertyName: '@type' mapping: InflightChangeProductOrderStateChangeEvent: '#/components/schemas/InflightChangeProductOrderStateChangeEvent' InflightChangeProductOrderStateChangeEventPayload: description: The event data structure type: object properties: inflightChangeProductOrder: description: The involved resource data for the event $ref: '#/components/schemas/InflightChangeProductOrder' BitstreamAccessProduct: description: Bitstream access product allOf: - $ref: '#/components/schemas/Product' - type: object properties: accessTechnology: description: Defines the type of connectivity (e.g. FTTH, FTTB, FTTC, HFC, Coax, TAL, OAL) type: string example: FTTH accessProtocol: description: "Defines the type and technology of the access (e.g. \tEthernet, P2P, GPON, XGS-PON, VDSL, GFAST-CuDa., GFAST-Coax, DOCSIS, ADSL, SDSL, ...)" type: string example: VDSL upstreamNominalBandwidth: description: Defines the upstream access bandwidth (e.g. 100 Mbit/s , 1 Gbit/s, 100 kbit/s) $ref: '#/components/schemas/Quantity' downstreamNominalBandwidth: description: Defines the downstream access bandwidth (e.g. 400 Mbit/s , 1 Gbit/s ) $ref: '#/components/schemas/Quantity' trafficHandOver: description: Defines how the traffic is handed over to the reseller (e.g. L2, L3, LT) type: string example: L2 trafficAggregation: description: Defines the aggregation provided by the supplier hand over close to customer, in a region or one central hand over for the complete country (e.g. local, regional, national) type: string example: local networkTerminationUnitType: description: Defines the type of the access termination (e.g. withOnt, withoutOnt) type: string example: withOnt uniConnectorType: description: Defines the interface of the access termination (e.g. TAE, RJ45, E2000, LC-APC, MMD (Multi Media Dose → Koaxialdose, F-Stecker) ...) type: string example: RJ45 reversePowering: description: Defines if the DSLAM needs to be reverse powered (e.g. yes, no) type: string example: 'yes' leadTime: description: Defines the typical lead time for provisioning an access $ref: '#/components/schemas/Duration' lineID: description: Defines the identifier of the access line. If ProductId is not known for change orders, the contract number of the product to be changed / terminated can be entered here by the buyer type: string virtualAccessLineId: description: Line-Identifier for the end customer type: string enni: description: Identifies the point of traffic interconnection external network to network interconnection (e.g. value or location of A10NSP) type: string enniPort: description: Defines the configured port type: string example: n/a cvlan: description: Defines the configured C-VLAN type: string example: n/a svlan: description: Defines the configured S-VLAN type: string networkTerminationUnitLocation: description: Describes the location of the network termination (e.g. describes the position of TAE/GF-TA or ONT) type: string homeId: description: Identifies the GF-TA unit at the end user's premise. type: string example: a12d5a4545 ontSerialNumber: description: Serial number of the ONT type: string example: '1515515155115' trafficLimitationUpstream: description: Defines the traffic/Speedlimit of bandwith $ref: '#/components/schemas/Quantity' trafficLimitationDownstream: description: Defines the traffic/Speedlimit of bandwith $ref: '#/components/schemas/Quantity' singleContractIdExistingProduct: description: If ProductId is not known for change orders, the contract number of the product to be changed / canceled can be entered here type: string example: '3072576895' discriminator: propertyName: '@type' mapping: BitstreamAccessProduct: '#/components/schemas/BitstreamAccessProduct' OpticalAccessLineProduct: description: Optical access line product allOf: - $ref: '#/components/schemas/Product' - type: object required: - patchService properties: patchService: description: Entity connecting active and passive port $ref: '#/components/schemas/PatchServiceType' passiveAccessLineId: description: Technical identifier for the fibtre optical cable - starting at the ODF to the customers house - homeId type: string example: DEU.DGW.G465157FDU ontType: description: Type of ONT type: string example: '9000' ontActivationCode: description: Code required to activate an ONT at this connection, has to be provided by the NGA and used only if the ANE offers a service to deliver the ONT to the end-customer. type: string example: Aalskdg78q ontSerialNumber: description: Serial number of ONT type: string example: ALCL:F8ADCACF oltName: description: Name of the OLT the fibre shall be/is connected to. type: string example: dtm4711-access6 oltPort: description: Port of the OLT the fibre shall be/is connected to. type: string example: 3/7/15 splitterName: description: Name of the splitter type: string example: bch1743-NVT7-MUX34 splitterPort: description: Port on the splitter the fibre is connected to may be provided by the NGA or ANE depending on set-up of the project type: string example: '27' switchingDataNga: description: Data provided by the NGA (owner of the active network) about the active fibre optical connection. Defines the location of the fibre in the POP. $ref: '#/components/schemas/SwitchingDataOal' switchingDataAne: description: Data provided by the ANE (owner of the passive network) about the passive fibre optical connection. Defines the location of the fibre in the POP. $ref: '#/components/schemas/SwitchingDataOal' ontProvidedBy: description: Provider of the ONT (e.g. Buyer, Seller) example: Buyer discriminator: propertyName: '@type' mapping: OpticalAccessLineProduct: '#/components/schemas/OpticalAccessLineProduct' PatchServiceType: description: |- Possible values are: type: string enum: - partner - supplier SwitchingDataOal: description: Switching data optical access line type: object properties: room: description: Room the ODF is located type: string example: A rack: description: Rack the ODF is located type: string example: '1' shelf: description: Shelf in the rack type: string example: '3' slot: description: Slot in the shelf type: string example: '5' port: description: Port in the slot type: string example: SPL-410688-05-B-2-32 ppid: description: PortId type: string example: 000SP50 HvtLocalLoopProduct: description: Local loop from the central office allOf: - $ref: '#/components/schemas/LocalLoopProduct' - type: object properties: switchingDataHvt: description: Switiching data for the Local loop from the central office type: array items: $ref: '#/components/schemas/SwitchingDataHvt' example: [] maxItems: 2 minItems: 1 discriminator: propertyName: '@type' mapping: HvtLocalLoopProduct: '#/components/schemas/HvtLocalLoopProduct' KvzLocalLoopProduct: description: Local loop from the curb allOf: - $ref: '#/components/schemas/LocalLoopProduct' - type: object properties: switchingDataKvz: description: Switching data for the Local loop from the curb type: array items: $ref: '#/components/schemas/SwitchingDataKvz' example: [] maxItems: 2 minItems: 1 discriminator: propertyName: '@type' mapping: KvzLocalLoopProduct: '#/components/schemas/KvzLocalLoopProduct' LocalLoopProduct: description: Local loop product allOf: - $ref: '#/components/schemas/Product' - type: object properties: transmissionMethod: description: Transmission method type: string example: H01 loopResistance: description: 'Total resistance (unit: ohms) of the loop' type: string example: <1200 maxGrossBitrate: description: Max. gross bit rate in kbit/s type: string example: '9000' singleContractIdExistingProduct: description: If ProductId is not known for change orders, the contract number of the product to be changed / canceled can be entered here type: string example: '3072345760' accessLine: $ref: '#/components/schemas/AccessLine' lineSegment: description: Line segment type: array items: $ref: '#/components/schemas/LineSegment' example: [] maxItems: 99 access: $ref: '#/components/schemas/Access' discriminator: propertyName: '@type' mapping: LocalLoopProduct: '#/components/schemas/LocalLoopProduct' StandaloneFieldServiceProduct: description: StandaloneFieldService product allOf: - $ref: '#/components/schemas/Product' - type: object properties: networkTerminationUnitLocation: description: Describes the location of the network termination (e.g. describes the position of TAE/GF-TA or ONT) type: string homeId: description: Identifies the GF-TA unit at the end user's premise. type: string example: a12d5a4545 discriminator: propertyName: '@type' mapping: StandaloneFieldServiceProduct: '#/components/schemas/StandaloneFieldServiceProduct' AccessLine: description: Access line for the local loop type: object properties: lineKey: description: Indicates the type of line type: string example: 96W areaCodeA: description: The area code of location A type: string example: '228' areaCodeB: description: The area code of location B type: string example: '228' talSequenceNumber: description: Consecutive number to identify the line type: string example: FXP00WZTRH required: - lineKey - areaCodeA - areaCodeB - talSequenceNumber LineSegment: description: Line segment type: object properties: id: description: Consecutive number to identify the line section type: string example: '1' length: description: 'Length (unit: meter) of the line section' type: string example: '441' diameter: description: Diameter of the line section type: string example: '500' required: - id - length - diameter Access: description: Notes on the commissioned connection type: object properties: areaCode: description: Area code of the previous connection (when changing provider) type: string example: '228' subscriberNumber: description: Phone number of the previous connection (when changing provider) type: string example: '123456' required: - areaCode - subscriberNumber SwitchingDataKvz: description: Switching data for the Local loop from the curb type: object properties: kvzId: description: Unique identifier of the cable distributor type: string example: '20' kvzSwitchingId: description: Information from the carrier regarding its switching data type: string example: '285' required: - kvzId - kvzSwitchingId SwitchingDataHvt: description: Switching data for the Local loop from the central office type: object properties: uevt: description: Number of the "Übergabeverteiler" type: string example: '0203' evs: description: Number of the "Endverschluss" type: string example: '24' copperPairId: description: Number of the twisted pair type: string example: '43' required: - uevt - evs - copperPairId ProductOrderMilestone: description: A ProductOrderMilestone represents an action or event marking a significant change or stage in processing of a Product Order. type: object allOf: - $ref: '#/components/schemas/Milestone' discriminator: propertyName: '@type' mapping: ProductOrderMilestone: '#/components/schemas/ProductOrderMilestone' ProductOrderMilestoneEvent: description: The notification data structure allOf: - $ref: '#/components/schemas/Event' - type: object properties: event: description: The event payload linked to the involved resource object $ref: '#/components/schemas/ProductOrderMilestoneEventPayload' discriminator: propertyName: '@type' mapping: ProductOrderMilestoneEvent: '#/components/schemas/ProductOrderMilestoneEvent' ProductOrderMilestoneEventPayload: description: The event data structure type: object properties: productOrder: description: The involved resource data for the event $ref: '#/components/schemas/ProductOrder' ProductOrderJeopardyAlert: description: A ProductOrderJeopardyAlert represents a predicted exception during a Product Order processing that would brings risk to complete successfully the order. type: object allOf: - $ref: '#/components/schemas/JeopardyAlert' discriminator: propertyName: '@type' mapping: ProductOrderJeopardyAlert: '#/components/schemas/ProductOrderJeopardyAlert' ProductOrderJeopardyAlertEvent: description: The notification data structure allOf: - $ref: '#/components/schemas/Event' - type: object properties: event: description: The event payload linked to the involved resource object $ref: '#/components/schemas/ProductOrderJeopardyAlertEventPayload' discriminator: propertyName: '@type' mapping: ProductOrderJeopardyAlertEvent: '#/components/schemas/ProductOrderJeopardyAlertEvent' ProductOrderJeopardyAlertEventPayload: description: The event data structure type: object properties: productOrder: description: The involved resource data for the event $ref: '#/components/schemas/ProductOrder' ProviderChangeInfo: description: Additional provider change information for terminating provider allOf: - $ref: '#/components/schemas/Extensible' - type: object properties: respondTime: description: Latest time the response to the provider change request must have been submitted type: string format: date-time example: '2025-12-24T19:30:00+01:00' approval: description: State of the provider change approval type: boolean example: true responseMessage: $ref: '#/components/schemas/Message' discriminator: propertyName: '@type' mapping: ProviderChangeInfo: '#/components/schemas/ProviderChangeInfo' AdditionalOrderInformation: description: Defines additional order information type: object properties: providerChangeAgreementTechnology: description: Technology of the old product (only for Provider Change Use Cases) type: string example: Kupfer providerChangeAgreementLineId: description: LineId of the old product (only for Provider Change Use Cases) type: string example: DEU.XYZ.HV1G1 providerChangeAgreementSingleContractId: description: Single Contract Id of the old product (only for Provider Change Use Cases) type: string example: '3213214567' providerChangePassiveAccessLineId: description: Single Contract Id of the old product (only for Provider Change Use Cases) type: string example: '123456789' previousTenantGivenName: description: Given Name of the previous tenant type: string example: Karl previousTenantFamilyName: description: Family Name of the previous tenant type: string example: Klammer previousTenantNationalDestinationCode: description: National destination code of the previous tenant type: string example: '228' previousTenantSubscriberNumber: description: Subscriber number of the previous tenant type: string example: '1234567' campaignIdentifier: description: List of identifiers for marketing campaigns, e. g. promotions type: array example: [] items: type: string example: '#A6' projectIdentifier: description: Identifier for specific projects type: string example: 12a couplingIdentifier: description: Identifier for specific projects type: string example: 23b orderBindingId: description: Identifier used to bind orders type: string example: 34c orderBindingNumberOfOrders: description: Number of orders (used together with orderBindingId) type: integer example: 5 orderBindingFailedExternalOrderId: description: Failed order number (refers to another failed order) type: string example: '3213214568' copperPairInUseLineKey: description: LineKey of the copper pair in Use type: string example: 96W copperPairInUseNationalDestinationCodeA: description: NationalDestinationCodeA of the copper pair in Use type: string example: '228' copperPairInUseNationalDestinationCodeB: description: NationalDestinationCodeB of the copper pair in Use type: string example: '228' copperPairInUseTalSequenceNumber: description: TalSequenceNumber of the copper pair in Use type: string example: FXP00WZTRH hardwareIdType: description: 'HardwareId to identify the line: type' type: string example: OntSerialNumber hardwareIdValue: description: 'HardwareId to identify the line: value' type: string example: 53674F3DC03FD37C aggregatorProductOffering: description: Name of pre product type: string example: n/a aggregatorNGA: description: Seller name of pre product type: string example: n/a aggregatorOrderAction: description: Order category of pre product type: string example: n/a aggregatorOrderId: description: Order id of pre product type: string example: n/a 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' 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: Type of the contact medium to qualifiy it like pro email / personal email. This is not used to define the contact medium used. type: string example: personal email 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. 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: '' 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' Note: description: Extra information about a given entity allOf: - $ref: '#/components/schemas/Entity' - type: object required: - text properties: author: description: Author of the note type: string example: jarvis date: description: Date of the note type: string format: date-time example: '2023-01-01T08:00:00+01:00' text: description: Text of the note type: string example: Lorem ipsum dolor 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 Duration: description: A time interval in a given unit of time type: object properties: amount: description: Time interval (number of seconds, minutes, hours, etc.) type: integer example: 60 units: description: Unit of time (seconds, minutes, hours, etc.) type: string example: seconds Place: description: Place value (base class). allOf: - $ref: '#/components/schemas/Entity' - type: object properties: externalIdentifier: type: array description: Collection of external identifiers items: $ref: '#/components/schemas/ExternalIdentifier' GeographicSubAddress: description: |- Representation of a GeographicSubAddress It is used for addressing within a property in an urban area (country properties are often defined differently). It may refer to a building, a building cluster, or a floor of a multistory building. allOf: - $ref: '#/components/schemas/Place' - type: object properties: buildingName: description: Allows for buildings that have well-known names type: string example: Hinterhaus buildingComplement: description: Additional designation for completing the building name type: string example: n/a GeographicAddress: description: |- Structured textual way of describing how to find a Property in an urban area (country properties are often defined differently). Note : Address corresponds to SID UrbanPropertyAddress allOf: - $ref: '#/components/schemas/Place' - type: object properties: city: description: City that the address is in type: string example: Berlin country: description: Country that the address is in (ISO-3166-1 ALPHA-2) type: string example: DE locality: description: An area of defined or undefined boundaries within a local authority or other legislatively defined area, usually rural or semi rural in nature. [ANZLIC-STREET], or a suburb, a bounded locality within a city, town or shire principally of urban character [ANZLICSTREET] type: string example: '' postcode: description: descriptor for a postal delivery area, used to speed and simplify the delivery of mail (also know as zipcode) type: string example: '10117' streetName: description: Name of the street or other street type type: string example: Reinhardtstr. streetNr: description: Number identifying a specific property on a public street. It may be combined with streetNrLast for ranged addresses type: string example: '31' streetNrSuffix: description: the first street number suffix type: string example: a geographicSubAddress: description: Geographic sub address type: array items: $ref: '#/components/schemas/GeographicSubAddress' example: [] GeographicSite: description: Geographic site allOf: - $ref: '#/components/schemas/Place' - type: object properties: code: description: 'A code that may be used for some addressing schemes eg: [ANSI T1.253-1999]' type: string example: '' creationDate: description: Date and time when the GeographicSite was created type: string format: date-time example: '2023-01-01T08:00:00+01:00' description: description: Text describing additional information regarding the site type: string example: Lorem ipsum dolor place: description: Place type: array items: $ref: '#/components/schemas/Place' example: [] geographicSiteCharacteristic: description: Geographic site characteristics type: array items: $ref: '#/components/schemas/Characteristic' example: [] status: description: The condition of the GeographicSite, such as planned, underConstruction, cancelled, active, inactive, former type: string example: active PlaceRef: description: Place reference. type: object allOf: - $ref: '#/components/schemas/EntityRef' PlaceRefOrValue: description: A place ref or value type: object discriminator: propertyName: '@type' oneOf: - $ref: '#/components/schemas/GeographicAddress' - $ref: '#/components/schemas/GeographicSite' - $ref: '#/components/schemas/PlaceRef' RelatedPlaceRefOrValue: description: Entity reference. The polymorphic attributes @type, @schemaLocation & @referredType are related to the RelatedPlace entity and not the RelatedPlaceRefOrValue class itself allOf: - $ref: '#/components/schemas/Extensible' - type: object required: - role - place properties: role: description: Role played by the related entity type: string example: '' place: $ref: '#/components/schemas/PlaceRefOrValue' TargetProductSchema: description: The reference object to the schema and type of target product which is described by product specification type: object properties: '@schemaLocation': description: This field provides a link to the schema describing the target product type: string example: https://schemas.example.com/example/schema '@type': description: Class type of the target product type: string example: '' required: - '@schemaLocation' - '@type' ProductSpecificationRef: description: 'Product specification reference: A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role.' allOf: - $ref: '#/components/schemas/EntityRef' - type: object properties: version: description: Version of the product specification type: string example: '1.0' targetProductSchema: $ref: '#/components/schemas/TargetProductSchema' ProductOffering: description: Represents entities that are orderable from the provider of the catalog, this resource includes pricing information. allOf: - $ref: '#/components/schemas/Entity' - type: object properties: description: description: Description of the productOffering type: string example: Lorem ipsum dolor version: description: ProductOffering version type: string example: '1.0' lifecycleStatus: description: Used to indicate the current lifecycle status type: string example: created name: description: Name of the productOffering type: string example: product offering name productSpecification: description: A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role. $ref: '#/components/schemas/ProductSpecificationRef' ProductOfferingRef: description: ProductOffering reference. A product offering represents entities that are orderable from the provider of the catalog, this resource includes pricing information. type: object allOf: - $ref: '#/components/schemas/EntityRef' ProductOfferingRefOrValue: description: The polymorphic attributes @type, @schemaLocation & @referredType are related to the Resource entity and not the ProductOfferingRefOrValue class itself type: object discriminator: propertyName: '@type' oneOf: - $ref: '#/components/schemas/ProductOffering' - $ref: '#/components/schemas/ProductOfferingRef' TimeSlot: allOf: - $ref: '#/components/schemas/Extensible' - type: object required: - validFor properties: id: description: Unique identifier of the TimeSlot type: string example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5 href: description: Reference of the TimeSlot type: string example: https://api.example.org/timeslot/id relatedParty: description: RelatedParty reference. A related party defines party or party role linked to a specific entity. $ref: '#/components/schemas/RelatedPartyOrPartyRole' validFor: description: Start date and end date of the timeSlot $ref: '#/components/schemas/TimePeriod' AppointmentRef: description: Appointment reference. type: object allOf: - $ref: '#/components/schemas/EntityRef' AttachmentRef: description: Attachment reference. type: object allOf: - $ref: '#/components/schemas/EntityRef' 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/AVIF 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' AppointmentStateType: description: |- Valid values for the lifecycle status of the appointment are: