openapi: 3.0.0 info: version: v1 title: 'ServiceNow Customer Connect' description: >- This is Customer Connect API for KPN ServiceNow-Green Tickets. With this API KPN SN Green will be able to create new, or update existing tickets. This document provides the API specification. ### Key highlights - **Security:** HTTPS, OAuth, Rate limit - **Versioning:** Supports version-less API, version tight. If no version is provided (in header) it defaults to latest version. --- ## [Source view](https://app.swaggerhub.com/apis/kpn/servicenow-kpn/)
[Documentation view](https://app.swaggerhub.com/apis-docs/kpn/servicenow-kpn/)
--- ## [KPN Developer](https://developer.kpn.com/)
[Getting Started](https://developer.kpn.com/getting-started) --- contact: name: API Support email: api_developer@kpn.com url: 'https://developer.kpn.com/support' termsOfService: 'https://developer.kpn.com/legal' servers: - url: 'https://api-prd.kpn.com/network/kpn/servicenow' externalDocs: description: HTTP response headers url: https://developer.kpn.com/documentation-response-headers paths: /Ticket: post: tags: - Ticket description: This operation will create a new ticket in KPN ServiceNow Green operationId: ticket-post summary: Create a new Ticket security: - oauth2: [] parameters: - $ref: "#/components/parameters/api_version" requestBody: description: JSON object with the data to create the new Ticket content: application/json: schema: $ref: '#/components/schemas/NewTicket' responses: 200: description: Successful operation. The body will contain the ticket number in KPN ServiceNow Green content: application/json: schema: $ref: '#/components/schemas/NewTicket200Response' 400: description: Bad Request. The body will contain details for the error. content: application/json: schema: $ref: '#/components/schemas/error' 401: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' 403: description: Forbidden content: application/json: schema: $ref: '#/components/schemas/error' 404: description: Not Found content: application/json: schema: $ref: '#/components/schemas/error' 429: description: Too many requests content: application/json: schema: $ref: '#/components/schemas/error' 500: description: Server error, please try again. content: application/json: schema: $ref: '#/components/schemas/error' patch: tags: - Ticket description: This operation will update an existing ticket in KPN ServiceNow Green operationId: ticket-patch summary: Update an existing Ticket security: - oauth2: [] parameters: - $ref: "#/components/parameters/api_version" requestBody: description: update Request. Update existing Incident content: application/json: schema: $ref: '#/components/schemas/UpdateTicket' responses: 200: description: Successful operation content: application/json: schema: $ref: '#/components/schemas/UpdateTicket200Response' 400: description: Bad Request. The body will contain details for the error. content: application/json: schema: $ref: '#/components/schemas/error' 401: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' 403: description: Forbidden content: application/json: schema: $ref: '#/components/schemas/error' 404: description: Not Found content: application/json: schema: $ref: '#/components/schemas/error' 429: description: Too many requests content: application/json: schema: $ref: '#/components/schemas/error' 500: description: Server error, please try again. content: application/json: schema: $ref: '#/components/schemas/error' get: tags: - Ticket description: Get details for an open tickets operationId: ticket-get summary: Get Ticket delatils security: - oauth2: [] parameters: - $ref: "#/components/parameters/api_version" - $ref: "#/components/parameters/kpn_ticket_number" responses: 200: description: Successful operation, the body will contain an array with ticket data. content: application/json: schema: $ref: '#/components/schemas/GetTicket200Response' 400: description: Bad Request. The body will contain details for the error. content: application/json: schema: $ref: '#/components/schemas/error' 401: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' 403: description: Forbidden content: application/json: schema: $ref: '#/components/schemas/error' 404: description: Not Found content: application/json: schema: $ref: '#/components/schemas/error' 429: description: Too many requests content: application/json: schema: $ref: '#/components/schemas/error' 500: description: Server error, please try again. content: application/json: schema: $ref: '#/components/schemas/error' /Task: patch: tags: - Task description: This operation will update an existing task in KPN ServiceNow Green operationId: task-patch summary: Update an existing Task security: - oauth2: [] parameters: - $ref: "#/components/parameters/api_version" requestBody: description: update Request. Update existing Incident content: application/json: schema: $ref: '#/components/schemas/UpdateTask' responses: 200: description: Successful operation content: application/json: schema: $ref: '#/components/schemas/UpdateTicket200Response' 400: description: Bad Request. The body will contain details for the error. content: application/json: schema: $ref: '#/components/schemas/error' 401: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' 403: description: Forbidden content: application/json: schema: $ref: '#/components/schemas/error' 404: description: Not Found content: application/json: schema: $ref: '#/components/schemas/error' 429: description: Too many requests content: application/json: schema: $ref: '#/components/schemas/error' 500: description: Server error, please try again. content: application/json: schema: $ref: '#/components/schemas/error' /ListOpenTickets: get: tags: - Ticket description: Get a list of open tickets operationId: ticket-list summary: List Tickets security: - oauth2: [] parameters: - $ref: "#/components/parameters/api_version" - $ref: "#/components/parameters/kpn_ticket_number" responses: 200: description: Successful operation, the body will contain an array with ticket data. content: application/json: schema: $ref: '#/components/schemas/GetTicket200Response' 400: description: Bad Request. The body will contain details for the error. content: application/json: schema: $ref: '#/components/schemas/error' 401: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' 403: description: Forbidden content: application/json: schema: $ref: '#/components/schemas/error' 404: description: Not Found content: application/json: schema: $ref: '#/components/schemas/error' 429: description: Too many requests content: application/json: schema: $ref: '#/components/schemas/error' 500: description: Server error, please try again. content: application/json: schema: $ref: '#/components/schemas/error' /TicketUpdates: get: tags: - Ticket description: This operation retrieves the updates for tickets operationId: ticketupdates-get summary: Ticket Updates security: - oauth2: [] parameters: - $ref: "#/components/parameters/api_version" responses: 200: description: Successful operation, the body will contain an array with ticket updates. content: application/json: schema: $ref: '#/components/schemas/GetTicketUpdates200Response' 400: description: Bad Request. The body will contain details for the error. content: application/json: schema: $ref: '#/components/schemas/error' 401: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' 403: description: Forbidden content: application/json: schema: $ref: '#/components/schemas/error' 404: description: Not Found content: application/json: schema: $ref: '#/components/schemas/error' 429: description: Too many requests content: application/json: schema: $ref: '#/components/schemas/error' 500: description: Server error, please try again. content: application/json: schema: $ref: '#/components/schemas/error' /GetAttachment/{attachment_id}: get: description: Get attachment operationId: get-attachment summary: Get Attachment tags: - Attachment security: - oauth2: [] parameters: - $ref: "#/components/parameters/api_version" - $ref: "#/components/parameters/attachment_id" responses: 200: description: Successful operation. The body will contain the attachment details. content: application/json: schema: $ref: '#/components/schemas/GetAttachment200Response' 400: description: Bad Request. The body will contain details for the error. content: application/json: schema: $ref: '#/components/schemas/error' 401: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/error' 403: description: Forbidden content: application/json: schema: $ref: '#/components/schemas/error' 404: description: Not Found content: application/json: schema: $ref: '#/components/schemas/error' 429: description: Too many requests content: application/json: schema: $ref: '#/components/schemas/error' 500: description: Server error, please try again. content: application/json: schema: $ref: '#/components/schemas/error' components: securitySchemes: oauth2: type: oauth2 flows: clientCredentials: tokenUrl: https://api-prd.kpn.com/oauth/client_credential/accesstoken?grant_type=client_credentials scopes : {} parameters: api_version: in: header name: api-version schema: type: string description: >- API Version. If no version is provided it defaults to latest version. required: false attachment_id: in: path name: attachment_id schema: type: string description: >- attachment_id to get the attachment. required: true kpn_ticket_number: in: query name: kpn_ticket_number schema: type: string description: >- KPN number of the ticket to get the details for. If not provided a list of open tickets will be returned. required: false schemas: error: type: object properties: error: type: object properties: code: type: string description: Code representing the error example: '1234' message: type: string description: Description of the error example: Description of the error. NewTicket: type: object required: - ticket_type - customer_reference_number - short_description - service properties: ticket_type: enum: - Incident - Request for Information - Change Request type: string description: Type of ticket example: incident customer_reference_number: type: string description: Unique reference-number of the customer system example: INC01234567 short_description: type: string description: Short description of the ticket example: 'Win11 L schijf: Kan niet worden toegevoegd' description: type: string description: Details of the ticket example: Some extended description\nSecond line service: type: string description: Service for which the ticket is reported example: Azure Managed Cloud ci: type: string description: Configuration item for which the ticket is reported example: GSEM01300 desired_delivery_date: type: string description: Only for Change Request tickets, the desired date when the change should be completed example: 2024-10-25 10:26:27 contact: type: string description: Id of the contact (Reported by / Requested by) example: jan.jansen@customer.com user: type: string description: Id of the user (Affected user / Requested for) example: truus.bakker@customer.com priority: enum: - 1 - Critical - 2 - High - 3 - Moderate - 4 - Low - 5 - Planning type: string description: Only for Incident tickets, the desired priority of the ticket example: 1 - Critical attachments: type: array items: type: object required: - name - content properties: name: type: string description: Name of the file with file extension example: test.txt content: type: string description: Base64 coded content of the attachment example: IQ0KZW5hYmxlIHNlY3JldCBjaXNjbw0KIQ0KIQ0KIQ0KIQ0KIQ0KIQ0KIQ0Kbm8gaXAgc291cmNlLXJvdXRlDQohDQohDQohDQohDQohDQohDQohDQohDQoNCg0KIQ0KaXAgd1ZXVlIDEwMCBvdCiBwZXJtaXQgdWQogdHJhbnNwb3J0IGlucHV0IHRlbG5ldA0KIQ0KZW5k content_type: type: string description: Content_type of the attachment example: text/plain UpdateTicket: type: object required: - action - customer_reference_number - kpn_ticket_number properties: action: type: string enum: - Comment - Response description: Action to take on the ticket example: Comment comment: type: string description: Additional information example: New comment update status: type: string enum: - Success - Failure description: Status for the response example: success transaction_id: type: string description: Transaction_id for the response. To be taken from the retrieved ticket update. example: 29b2ffa5-f0a7-428f-a8d6-aff95c469deb kpn_ticket_number: type: string example: INC#34567890 description: Ticket number in the KPN system customer_reference_number: type: string description: Unique reference-number of the customer system example: INC01234567 attachments: type: array items: type: object required: - name - content properties: name: type: string example: test.txt description: Name of the file with file extension content: type: string example: IQ0KZW5hYmxlIHNlY3JldCBjaXNjbw0KIQ0KIQ0KIQ0KIQ0KIQ0KIQ0KIQ0Kbm8gaXAgc291cmNlLXJvdXRlDQohDQohDQohDQohDQohDQohDQohDQohDQoNCg0KIQ0KaXAgd1ZXVlIDEwMCBvdCiBwZXJtaXQgdWQogdHJhbnNwb3J0IGlucHV0IHRlbG5ldA0KIQ0KZW5k description: Base64 coded content of the attachment content_type: type: string description: Content_type of the attachment example: text/plain UpdateTask: type: object required: - action - customer_reference_number - kpn_ticket_number properties: action: type: string enum: - In Progress - Comment - Worknote - On Hold - Closed Complete - Closed Incomplete - Closed Skipped - Response description: Action to take on the task example: Comment comment: type: string description: Additional information, user visible, for action = Comment example: New comment update worknotes: type: string description: Additional information, not user visible, for action = Worknote & action = On Hold example: New worknote update close_notes: type: string description: Additional information on task closure, for action = Closed Complete/Closed Incomplete/Closed Skipped example: close update error_details: type: string description: Additional information for action = Response and status = Failure example: error description status: type: string enum: - Success - Failure description: Status for the response example: Success transaction_id: type: string description: Transaction_id for the response. To be taken from the retrieved ticket update. example: 29b2ffa5-f0a7-428f-a8d6-aff95c469deb kpn_ticket_number: type: string example: INC#34567890 description: Ticket number in the KPN system customer_reference_number: type: string description: Unique reference-number of the customer system example: INC01234567 attachments: type: array items: type: object required: - name - content properties: name: type: string example: test.txt description: Name of the file with file extension content: type: string example: IQ0KZW5hYmxlIHNlY3JldCBjaXNjbw0KIQ0KIQ0KIQ0KIQ0KIQ0KIQ0KIQ0Kbm8gaXAgc291cmNlLXJvdXRlDQohDQohDQohDQohDQohDQohDQohDQohDQoNCg0KIQ0KaXAgd1ZXVlIDEwMCBvdCiBwZXJtaXQgdWQogdHJhbnNwb3J0IGlucHV0IHRlbG5ldA0KIQ0KZW5k description: Base64 coded content of the attachment content_type: type: string description: Content_type of the attachment example: text/plain NewTicket200Response: type: object properties: code: type: string example: TechnicalEndpointSuccess state: type: string example: inserted kpn_ticket_number: type: string example: INC#34567890 customer_reference_number: type: string example: INC01234567 note: type: string example: Incident INC#34567890 has been created; UpdateTicket200Response: type: object properties: code: type: string example: TechnicalEndpointSuccess state: type: string example: updated kpn_ticket_number: type: string example: INC#34567890 customer_reference_number: type: string example: INC01234567 note: type: string example: Incident INC#34567890 has been updated; GetTicket200Response: type: object properties: result: type: array items: type: object properties: kpn_ticket_number: type: string description: Ticket number in the KPN system example: INC#34567890 customer_reference_number: type: string description: Unique reference-number of the customer system example: INC01234567 ticket_type: type: string description: Type of ticket example: Incident state: type: string description: State of the ticket in the KPN system example: In Progress short_description: type: string description: Short description of the ticket example: 'Win11 L schijf: Kan niet worden toegevoegd' link: type: string description: Url-extension to be use to query more ticket-details example: /Ticket?kpn_ticket_number=INC%2334567890 required: - kpn_ticket_number - ticket_type - state - short_description - link GetTicketUpdates200Response: type: array items: type: object properties: transaction_id: type: string description: Unique transaction-message identifier example: 9ac7901f-276e-4202-8a40-757af564cb30 message_datetime_utc: type: string description: Creation date-time of the update example: '2024-10-03T11:08:32Z' ticket_type: type: string description: Type of ticket example: incident action: type: string description: Action taken on the ticket example: In Progress kpn_ticket_number: type: string description: Ticket number in the KPN system example: INC#34567890 customer_reference_number: type: string description: Unique reference-number of the customer system example: INC01234567 ticket_attributes: type: object properties: state: type: string description: State of the ticket in the KPN system example: In Progress comments: type: string description: Additional information example: Some additional information from KPN required: - transaction_id - message_datetime_utc - ticket_type - action - kpn_ticket_number GetAttachment200Response: type: object properties: name: type: string description: Name of the file with file extension example: sample.txt content: type: string description: Base64 coded content of the attachment example: VGVzdA== content_type: type: string description: Content_type of the attachment example: text/plain