Knak Sync Location API

Endpoints to retrieve Sync Location

OpenAPI Specification

knak-sync-location-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  description: '## Overview

    An API specification to provide a Custom Sync Location in Knak.


    By implementing a service conforming to this API specification, you will be able to send asset data to your own service and have that service specify a sync location based on that data.


    ## Authentication

    Knak provides two options for authentication:

    - **Basic Authentication**: Knak will use Basic Authentication to authenticate with your API. You will just need to provide a username and password when configuring the integration.

    - **OAuth2**: Knak will use OAuth2 to authenticate with your API. You will need to implement endpoints under a specified authorization path to support this. The default path will be `/oauth/token` but you can provide a separate path when configuring the integration if you so choose. The flow used is the standard [Authorization Code Grant](https://tools.ietf.org/html/rfc6749#section-4.1).



    Knak will use the tokens generated to make requests from your service.


    ## Custom Sync Location

    When a user has a custom sync location configured and they have set up a sync restriction that leverages the custom sync location.

    Knak will call the `/knak-sync-location` (or your own specified path) endpoint with the asset data when an asset is synced. Your service should return a response with the sync location for the asset.


    When your service provides a sync location, Knak will use that location to display only the available sync location to the user.

    '
  version: V1
  title: Custom API Reference Asset Custom Fieldsets Sync Location API
  x-logo:
    url: https://s3.amazonaws.com/assets.knak.io/img/Knak-Logo-Medium.png
servers:
- url: https://yourService.com/your-sync-location-api
tags:
- name: Sync Location
  description: Endpoints to retrieve Sync Location
paths:
  /v1/knak-sync-location:
    post:
      tags:
      - Sync Location
      summary: Provide Sync Location for Asset
      description: Knak will call this endpoint to get the sync location for the asset. This is used to determine the sync location for the asset in Knak.
      security:
      - OAuth2: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                data:
                  type: array
                  items:
                    type: object
                    properties:
                      type:
                        type: string
                        description: The type of the asset
                        example: email
                      id:
                        type: string
                        description: The ID of the asset
                        example: 66154fd1e9704
                      custom_field_example_1:
                        type: string
                        description: Can be any custom field you want to use to determine the sync location
                        example: newsletter
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          description: The type of the asset
                          example: email
                        id:
                          type: string
                          description: The ID of the asset
                          example: 66154fd1e9704
                        folder:
                          type: object
                          properties:
                            id:
                              type: string
                              description: The ID of the folder or program
                              example: '1256'
                            title:
                              type: string
                              description: The title of the folder or program
                              example: My Favourite Program
                            is_root:
                              type: boolean
                              description: Whether this is a root folder
                              example: false
                            status:
                              type: string
                              description: The status of the folder or program
                              nullable: true
                              example: null
                            parent_id:
                              type: string
                              description: The ID of the parent folder
                              example: '48'
                            folder_type:
                              type: string
                              description: The type of the folder (Folder or Program)
                              example: Program
        401:
          description: Unauthenticated
        403:
          description: Unauthorized
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          description: The type of the asset
                          example: email
                        id:
                          type: string
                          description: The ID of the asset
                          example: 66154fd1e9704
                  messages:
                    type: array
                    items:
                      type: object
                      properties:
                        message:
                          type: string
                          description: The error message
                          example: Invalid Custom Field
                        type:
                          type: string
                          description: The type of the error
                          example: invalid
                        level:
                          type: string
                          description: The severity level of the error
                          example: error
                        email_id:
                          type: string
                          description: The ID of the email
                          example: 66154fd1e9704