KPN

WeSeeDo Direct API

WeSeeDo Direct API allows you to set up a video communication channel between people by sending an SMS with a link to the meeting.

OpenAPI Specification

weseedo-direct-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: 'WeSeeDo Direct - WeSeeDo'
  version: 1.0.0
  description: >-
    WeSeeDo Direct API allows you to set up a video communication channel between people by sending an SMS with a link to the meeting.
  
    ---
    
    ## [Source view](https://app.swaggerhub.com/apis/kpn/weseedo-direct-weseedo/)<br/>
    [Documentation view](https://app.swaggerhub.com/apis-docs/kpn/weseedo-direct-weseedo/)
    
    ---
    
    ## [KPN API Store](https://developer.kpn.com/)<br/>
    [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:
  - description: SwaggerHub API URL
    url: https://api-prd.kpn.com/communication/weseedo/weseedodirect
components:
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://api-prd.kpn.com/oauth/client_credential/accesstoken?grant_type=client_credentials
  responses:
    bad_gateway:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
      description: Bad gateway
    bad_request:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
      description: Bad request
    forbidden:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
      description: Forbidden
    method_not_allowed:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
      description: Method not allowed
    not_found:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
      description: Not found
    precondition_failed:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
      description: Precondition failed
    server_error:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
      description: Server error
    service_unavailable:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
      description: Service unavailable
    too_many:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
      description: Too many requests
    unauthorized:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
      description: Unauthorized        
  schemas:
    Users_GetResponse:
      properties:
        success:
          type: boolean
          example: true
        result:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              name:
                type: string
              email:
                type: string
              locale:
                type: string
              role:
                type: string
              company:
                $ref: '#/components/schemas/Company'
      type: object
      example:
        - id: 58..eb
          name: Agent 1
          email: agent1@weseedo.nl
          locale: nl
          role: agent
          company:
            id: 58..60
            name: WeSeeDo B.V.
        - id: 58..ec
          name: Assistent 1
          email: assistent1@weseedo.nl
          locale: nl
          role: assistent
          company:
            id: 58..60
            name: WeSeeDo B.V.
  
    Users_GetUserByIdResponse:
      properties:
        success:
          type: boolean
          example: true
        result:
          $ref: '#/components/schemas/Users_GetResponse'
      type: object
  
    Company:
      properties:
        id:
          type: string
          example: 58..82
        name:
          type: string
          example: WeSeeDo B.V.
      type: object
  
    Users_POSTPUTResponse:
      properties:
        success:
          type: boolean
        result:
          type: array
          items:
            $ref: '#/components/schemas/User'
      type: object
    
    User:
      properties:
        id:
          type: string
          example: 58..82
        first_name:
          type: string
          example: Testfirstname
        last_name:
          type: string
          example: Testlastname
        name:
          type: string
          example: Testfirstname Testlastname
        email:
          type: string
          example: agent1@weseedo.nl
        locale:
          type: string
          example: nl
        role:
          type: string
          example: agent
        created_at:
          type: string
          example: '2017-11-17T12:07:56.308Z'
        company:
          $ref: '#/components/schemas/Company'
      type: object

    MeetingResponse:
      properties:
        success:
          type: boolean
        result:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                example: 5c...78
                description: The generated ID for this meeting
              room_id:
                type: string
                example: DA..At
                description: The `room_id` that is being used for this meeting,
                  you generally do not need to use this information.
              room_password:
                type: string
                example: Mp..Op
                description: The `room_password` that is being used for this
                  meeting, you generally do not need to use this information.
              duration:
                type: integer
                example: 0
                description: Duration of the meeting in seconds
              room_available_from:
                type: integer
                example: 1551971073
                description: Timestamp that described from when the room
                  will be available.
              room_available_till:
                type: integer
                example: 1552575873
                description: Timestamp that described until when the room
                  will be available. If the conversation is still active
                  at this time, it will NOT be automatically terminated!
              participants:
                type: array
                required:
                - id
                - name
                - username
                items:
                  type: object
                  properties:
                    username:
                      type: string
                      description: Automatically generated username for
                        a participant, for an agent this username has a
                        fixed value that is generated upon agent creation.
                    name:
                      type: string
                      description: Contains the name of the agent when the
                        participant is an agent, or the phone number of
                        the participant when it is a participant.
                    id:
                      type: string
                      description: The generated ID of an agent or participant
                    user:
                      type: string
                      description: Only returned for agents
                    email:
                      type: string
                      description: Only returned for agents
                    hash:
                      type: string
                      description: Only returned for participants (not agents).
                        This value should be sent along in the secure link
                        that will be sent to the participant, it authenticates
                        the participants.
                example:
                - username: agent.58eb.....
                  name: Agent 1
                  id: 5c..7a
                  user: 58..eb"
                  email: agent1@weseedo.nl
                - username: visitor.Cxo9uuYVYFAJDW47
                  name: "+3112312312"
                  id: 5d..70
                  hash: SI..wO (use this value when sending a text message
                    to the recipient)
      
    error:
      properties:
        info:
          description: Additional information about error.
          title: Info
          type: string
        message:
          description: Error message
          title: Error message
          type: string
        name:
          description: Error name
          title: Error name
          type: string
        status:
          description: Status
          title: Status
          type: string
        transactionId:
          description: The `transaction_id` of the the request.
          title: Transaction ID
          type: string
paths:
  "/api/sms":
    post:
      summary: Sends an SMS to a participant.
      description: Sends an SMS to a participant.
      tags:
      - Meetings
      security:
        - oauth2: []
      parameters: 
        - in: header
          name: user_email
          description: Enter the e-mail of the user.
          schema:
            type: string
          required: true          
      requestBody:
        description: The meeting to create.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                participant:
                  type: string
                  example: a8..48
                  description: Use the `id` of the participant that was returned when
                    creating the meeting
                body:
                  type: string
                  example: Click on the link and click `Allow`. https://login-direct.weseedo.nl/client.html?id=**REPLACE_WITH_PARTICIPANT_HASH**
                  description: The body of the SMS that is being sent to the participant.
                    Make sure to include the secure URL, use the `hash` of the participant
                    that was returned when creating the meeting."
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: boolean
        400:
          $ref: '#/components/responses/bad_request'
        401:
          $ref: '#/components/responses/unauthorized'
        403:
          $ref: '#/components/responses/forbidden'
        404:
          $ref: '#/components/responses/not_found'
        405:
          $ref: '#/components/responses/method_not_allowed'
        412:
          $ref: '#/components/responses/precondition_failed'
        429:
          $ref: '#/components/responses/too_many'
        500:
          $ref: '#/components/responses/server_error'
        502:
          $ref: '#/components/responses/bad_gateway'
        503:
          $ref: '#/components/responses/service_unavailable'
  "/api/meeting":
    post:
      summary: Creates a new meeting.
      description: Creates a new meeting.
      tags:
      - Meetings
      security:
        - oauth2: []
      parameters: 
        - in: header
          name: user_email
          description: Enter the e-mail of the agent user to send the SMS.
          schema:
            type: string
          required: true           
      requestBody:
        description: Enter the hone number of the participant. You can use any valid international phone number. For example `+31612312312`. `0612312312` or `12312312` are converted to `+31612312312`. 
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                participant:
                  type: string
                  description: Phone number of the participant, either in the form
                    of +31612312312, 0612312312, 12312312 (is converted to +31612312312),
                    or any other valid international phone number.
                  example: "+3112312312"
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MeetingResponse'
        400:
          $ref: '#/components/responses/bad_request'
        401:
          $ref: '#/components/responses/unauthorized'
        403:
          $ref: '#/components/responses/forbidden'
        404:
          $ref: '#/components/responses/not_found'
        405:
          $ref: '#/components/responses/method_not_allowed'
        412:
          $ref: '#/components/responses/precondition_failed'
        429:
          $ref: '#/components/responses/too_many'
        500:
          $ref: '#/components/responses/server_error'
        502:
          $ref: '#/components/responses/bad_gateway'
        503:
          $ref: '#/components/responses/service_unavailable'
  "/api/users":
    get:
      summary: Retrieves a list of users.
      description: Retrieves a list of users. Only users that you have access to will
        be returned.
      tags:
      - Users
      security:
        - oauth2: []
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Users_GetResponse'
        400:
          $ref: '#/components/responses/bad_request'
        401:
          $ref: '#/components/responses/unauthorized'
        403:
          $ref: '#/components/responses/forbidden'
        404:
          $ref: '#/components/responses/not_found'
        405:
          $ref: '#/components/responses/method_not_allowed'
        412:
          $ref: '#/components/responses/precondition_failed'
        429:
          $ref: '#/components/responses/too_many'
        500:
          $ref: '#/components/responses/server_error'
        502:
          $ref: '#/components/responses/bad_gateway'
        503:
          $ref: '#/components/responses/service_unavailable'
    post:
      summary: Creates a new user.
      description: Creates a new user.
      tags:
      - Users
      security:
        - oauth2: []
      parameters: 
        - in: header
          name: company_email
          description: Please use your company's email address. This is the email you were onboarded on apistore.
          schema:
            type: string        
      requestBody:
        description: The user to create.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                first_name:
                  type: string
                last_name:
                  type: string
                password:
                  type: string
                role:
                  type: string
                  description: Either `admin` or `agent`.
                email:
                  type: string
                locale:
                  type: string
                  description: Either `nl` or `en`.
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Users_POSTPUTResponse'        
        400:
          $ref: '#/components/responses/bad_request'
        401:
          $ref: '#/components/responses/unauthorized'
        403:
          $ref: '#/components/responses/forbidden'
        404:
          $ref: '#/components/responses/not_found'
        405:
          $ref: '#/components/responses/method_not_allowed'
        412:
          $ref: '#/components/responses/precondition_failed'
        429:
          $ref: '#/components/responses/too_many'
        500:
          $ref: '#/components/responses/server_error'
        502:
          $ref: '#/components/responses/bad_gateway'
        503:
          $ref: '#/components/responses/service_unavailable'
  "/api/users/{id}":
    get:
      summary: Retrieves a user.
      description: | 
          Retrieves a specific user. Enter the **{id}** of a user without the brackets. 
          
          Example: 5fc0c29c70d9e4667019be99
      tags:
      - Users
      security:
        - oauth2: []
      parameters:
      - name: id
        in: path
        description: | 
              User ID.

        required: true
        schema:
          type: string
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Users_GetUserByIdResponse'
        400:
          $ref: '#/components/responses/bad_request'
        401:
          $ref: '#/components/responses/unauthorized'
        403:
          $ref: '#/components/responses/forbidden'
        404:
          $ref: '#/components/responses/not_found'
        405:
          $ref: '#/components/responses/method_not_allowed'
        412:
          $ref: '#/components/responses/precondition_failed'
        429:
          $ref: '#/components/responses/too_many'
        500:
          $ref: '#/components/responses/server_error'
        502:
          $ref: '#/components/responses/bad_gateway'
        503:
          $ref: '#/components/responses/service_unavailable'
    put:
      summary: Updates a user.
      description: Updated a specific user, replace **{id}** with the **id** attribute
        of a user.
      tags:
      - Users
      security:
        - oauth2: []
      parameters:
      - name: id
        in: path
        description: User ID
        required: true
        schema:
          type: string
      requestBody:
        description: The user to update.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                first_name:
                  type: string
                last_name:
                  type: string
                locale:
                  type: string
                  description: Either `nl` or `en`.
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Users_POSTPUTResponse'
        400:
          $ref: '#/components/responses/bad_request'
        401:
          $ref: '#/components/responses/unauthorized'
        403:
          $ref: '#/components/responses/forbidden'
        404:
          $ref: '#/components/responses/not_found'
        405:
          $ref: '#/components/responses/method_not_allowed'
        412:
          $ref: '#/components/responses/precondition_failed'
        429:
          $ref: '#/components/responses/too_many'
        500:
          $ref: '#/components/responses/server_error'
        502:
          $ref: '#/components/responses/bad_gateway'
        503:
          $ref: '#/components/responses/service_unavailable'
    delete:
      summary: Deletes a user.
      description: Deletes a user, replace **{id}** with the **id** attribute of a
        user.
      tags:
      - Users
      security:
        - oauth2: []
      parameters:
      - name: id
        in: path
        description: User ID
        required: true
        schema:
          type: string
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  result:
                    type: object
                    properties:
                      id:
                        type: string
                        example: 5a..82
        400:
          $ref: '#/components/responses/bad_request'
        401:
          $ref: '#/components/responses/unauthorized'
        403:
          $ref: '#/components/responses/forbidden'
        404:
          $ref: '#/components/responses/not_found'
        405:
          $ref: '#/components/responses/method_not_allowed'
        412:
          $ref: '#/components/responses/precondition_failed'
        429:
          $ref: '#/components/responses/too_many'
        500:
          $ref: '#/components/responses/server_error'
        502:
          $ref: '#/components/responses/bad_gateway'
        503:
          $ref: '#/components/responses/service_unavailable'
  '/api/autologin':
    get:
      summary: Fetches the URL so that agent can login.
      description: >-
        Fetches the URL so that agent is able to login directly to the portal without entering his username and password.
      tags:
        - Autologin
      security:
        - oauth2: []
      parameters: 
        - in: header
          name: user_email
          description: Enter the email of user who wants to autologin.
          schema:
            type: string
          required: true           
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  url:
                    type: string
                    example: https://sandbox-direct.weseedo.nl/login/token
        400:
          $ref: '#/components/responses/bad_request'
        401:
          $ref: '#/components/responses/unauthorized'
        403:
          $ref: '#/components/responses/forbidden'
        404:
          $ref: '#/components/responses/not_found'
        405:
          $ref: '#/components/responses/method_not_allowed'
        412:
          $ref: '#/components/responses/precondition_failed'
        429:
          $ref: '#/components/responses/too_many'
        500:
          $ref: '#/components/responses/server_error'
        502:
          $ref: '#/components/responses/bad_gateway'
        503:
          $ref: '#/components/responses/service_unavailable'