Public API

Reference documentation for Suivi APIs

8 min read

On this page:

    List of Available APIs

    This section describes the list of APIs offered by Suivi. This list is accessible from your site's URL by entering swagger at the end (e.g.: https://domain.suivi.co/swagger).

    Note that the swagger page has been enhanced with the schema for each available root.

    Board Mapping API

    The BoardMapping API allows you to:

    • Add a board mapping following a recurring import
    • Update a board mapping,
    • Delete a board mapping.

    Boards API

    The Boards API allows you to perform actions related to boards such as:

    • Update the roles of specified members (user and/or team),
    • Search for the list of boards in a workspace,
    • Search for a board view by its name,
    • Search for CSV import mappings of a board,
    • Export a board to CSV format,
    • Retrieve the list of sections in a board
    • Retrieve the list of views in a board
    • Change a user's role to an admin, contributor, or visitor role
    • Invite users to a board and assign them a role,
    • Import CSV data into a board,
    • Copy a board,
    • Copy a board from a sequence number,
    • Change the sharing status of a view,
    • Know the shared status of a board's views,
    • Modify a board's variables,
    • Retrieve the list of variables used in a board,
    • Retrieve the list of connections used in a board,
    • Modify the connections of a board,
    • Provide an overview of linked boards that will be duplicated when duplicating a board,
    • Duplicate a board and all its linked boards,
    • Check the links between two boards.

    BoardWebHook API

    The BoardWebhook API allows you to:

    • Retrieve the webhooks of a board by board identifier,
    • Know the webhooks of a board by webhook identifier,
    • Add a webhook,
    • Delete a webhook,
    • Launch a webhook,
    • Stop a webhook.

    API Book

    The Book API allows you to:

    • Customize the book background with an image provided by URL or by file transmitted in blob storage,
    • Customize the book logos (small and large),
    • Customize the book theme (light, solid, image),
    • Customize the book's primary color for solid theme type,
    • Verify that a user has the right to view a book and a book element.

    API Context

    The Context API allows you to know the context related to the current user.

    API Tenants

    The Tenants API allows you to:

    • Search for a tenant by name (exact),
    • Search for the list of tenants accessible by a user,
    • Update tenant user roles (Admin, Contributor, and Visitor),
    • Invite a user and assign them a role on a tenant,
    • Create a new tenant.

    API Users

    The Users API allows you to:

    • Search for a user by last name, first name, and email address,
    • Create, modify a user

    Workspaces API

    The Workspaces API allows you to:

    • Search for the list of workspaces accessible to a user,
    • Modify a user's Admin, Contributor, or Visitor roles in a workspace,
    • Invite a user and assign them a role in a workspace,
    • Create a new workspace.

    Authentication and API Access

    Obtaining an API Key

    Connecting to Suivi APIs requires providing an API key associated with an Admin user account of the tenant.

    To find this key, simply click on the avatar in the workspace and choose > Edit my profile, API key tab.

    Note that it is possible to generate a new key but there is always only one API key per tenant (the old key is therefore deactivated).

    Accessing Swagger APIs

    This section describes the list of APIs offered by Suivi. This list is accessible from your site's URL by entering swagger at the end (e.g.: https://domain.suivi.co/swagger).

    Note that the swagger page has been enhanced with the schema of each available root.

    This key will be necessary for you to connect to the Suivi Swagger API such as:

    🔐 API Key: my-api-key This key must be included in the user-api-key header of all your requests.

    Book (portal)

    The Book section groups all endpoints allowing you to customize the appearance and content of a book in your application.

    Modifying a book's background image

    There are two ways to change the background image:


    • By sending the URL of an image available on the internet
    • By uploading a file

    Modification by URL

    Method: PUT

    URL: public-api/Book/{BookId}/BackgroundImage

    Parameters:

    • The ID of the book to be modified, which is found in the request URL
    • The JSON in the request body that contains the image URL

    Request body:

    Example:

    Modification by image upload

    Method: POST

    URL: public-api/Book/{BookId}/BackgroundImageUpload

    Parameters:

    {  "ImageUrl": "string"}
    curl -X 'PUT' \  '[https://localhost:5001/public-api/Book/02F5GFJM403K9N9B8TCWTHAB4A/BackgroundImage](https://localhost:5001/public-api/Book/02F5GFJM403K9N9B8TCWTHAB4A/BackgroundImage)' \  -H 'accept: */*' \  -H 'user-api-key: my-api-key' \  -H 'Content-Type: application/json' \  -d '{  "ImageUrl": "[https://www.image.fr/mon_image.png](https://www.image.fr/mon_image.png)"}'
    • The ID of the book to be modified, which is found in the request URL
    • The image as a file in the request body

    Example:

    Modifying a book's logo

    There are two logos to upload in this method:

    curl -X 'POST' \  '[https://localhost:5001/public-api/Book/02F5GFJM403K9N9B8TCWTHAB4A/BackgroundImageUpload](https://localhost:5001/public-api/Book/02F5GFJM403K9N9B8TCWTHAB4A/BackgroundImageUpload)' \  -H 'accept: */*' \  -H 'user-api-key: my-api-key' \  -H 'Content-Type: multipart/form-data' \  -F 'BackgroundImageFile=@background-photo.jpg;type=image/jpeg'
    • The standard logo that displays on the book
    • The responsive logo for mobile display

    Method: POST

    URL: public-api/Book/{BookId}/Logo

    Parameters:

    • The ID of the book to be modified, found in the request URL
    • The image as a file in the request body for the standard logo
    • The image as a file in the request body for the responsive logo

    Example:

    Theme Modification

    There are three types of themes for a book:

    curl -X 'POST' \  '[https://localhost:5001/public-api/Book/02F5GFJM403K9N9B8TCWTHAB4A/Logo](https://localhost:5001/public-api/Book/02F5GFJM403K9N9B8TCWTHAB4A/Logo)' \  -H 'accept: */*' \  -H 'user-api-key: my-api-key' \  -H 'Content-Type: multipart/form-data' \  -F 'LogoFile=@logo.png;type=image/png' \  -F 'SmallLogoFile=@responsive-logo.png;type=image/png'
    • Light: The book will have a white banner on the left with title colors on mouse hover
    • Dark: The book will have a banner in the selected color
    • Transparent: The banner will be transparent and will show the background image

    Colors are defined in a key-value array that you can retrieve via the dedicated endpoint (see the "Retrieving theme colors" section below).

    Method: PUT

    URL: public-api/Book/{BookId}/Theme

    Parameters:

    • The ID of the book you want to modify, which is found in the request URL
    • The theme transmitted in the request body. Possible values:
      • Light
      • Dark
      • Transparent
    • The color transmitted in the request body, as an integer corresponding to the index of the desired color in the color array provided by the API

    Request body:

    Example:

    Retrieving theme colors

    Retrieval of available colors for a book's theme. The API returns a key-value array containing the index and hexadecimal value of the associated color.

    Method: GET

    URL: public-api/Book/ColorPalette

    Response:

    Example:

    Board

    The Board section groups the endpoints for managing a board's variables and connections.

    Retrieving variables

    It is possible to retrieve all variables of a board.

    Method: GET

    URL: public-api/Boards/{BoardId}/variables

    Parameters:

    {  "Theme": "string",  "ColorIndex": 0}
    curl -X 'PUT' \  '[https://localhost:5001/public-api/Book/02F5GFJM403K9N9B8TCWTHAB4A/Theme](https://localhost:5001/public-api/Book/02F5GFJM403K9N9B8TCWTHAB4A/Theme)' \  -H 'accept: */*' \  -H 'user-api-key: my-api-key' \  -H 'Content-Type: application/json' \  -d '{  "Theme": "Transparent",  "ColorIndex": 5}'
    {  "0": "#000000",  "1": "#303E4D",  "2": "#667684",  "3": "#B5BCC2",  "4": "#0652A7",  "5": "#3082B7",  "...": "..."}
    curl -X 'GET' \  '[https://localhost:5001/public-api/Book/ColorPalette](https://localhost:5001/public-api/Book/ColorPalette)' \  -H 'accept: */*' \  -H 'user-api-key: my-api-key'

    • The board ID found in the request URL

    Response:

    Example:

    Modifying Variables

    {  "Var01": "Val01",  "Var02": "NewVal02",  "Var03": "Val03"}
    curl -X 'GET' \  '[https://localhost:5001/public-api/Boards/01F5GFJM403K9N9B8TCWTHAB4A/variables](https://localhost:5001/public-api/Boards/01F5GFJM403K9N9B8TCWTHAB4A/variables)' \  -H 'accept: */*' \  -H 'user-api-key: my-api-key'
    icon
    Important

    The provided list will replace existing variables. It is recommended to retrieve the variables first and then send the complete list of desired variables.

    Method: PUT

    URL: public-api/Boards/{BoardId}/variables

    Parameters:

    • The board ID found in the request URL
    • JSON with the list of variables in the request body

    Request body:

    Example:

    Retrieving connections

    It is possible to retrieve the connections of a board.

    {  "var1": "Plop",  "var2": "65536"}
    curl -X 'PUT' \  '[https://localhost:5001/public-api/Boards/01F5GFJM403K9N9B8TCWTHAB4A/variables](https://localhost:5001/public-api/Boards/01F5GFJM403K9N9B8TCWTHAB4A/variables)' \  -H 'accept: */*' \  -H 'user-api-key: my-api-key' \  -H 'Content-Type: application/json' \  -d '{  "var1": "Plop",  "var2": "65536"}'
    icon
    Notes

    Sensitive information such as secrets for tokens or header values are not displayed by the API.

    The displayed response takes into account the two types of connections existing in the application:

    • Azure DevOps Connection
    • HTTP Connection

    Method: GET

    URL: public-api/Boards/{BoardId}/connections

    Parameters:

    • The board ID found in the request URL

    Example:

    Response:

    Modifying a Connection

    Modifying a connection is possible but requires following certain rules. To do this, we first need the connection ID, which can be retrieved via the API, and then provide a properly configured JSON based on what we want to do.

    curl -X 'GET' \  '[https://localhost:5001/public-api/Boards/01F5GFJM403K9N9B8TCWTHAB4A/connections](https://localhost:5001/public-api/Boards/01F5GFJM403K9N9B8TCWTHAB4A/connections)' \  -H 'accept: */*' \  -H 'user-api-key: my-api-key'
    {  "01JE6DY43AC7R7S2TPDAPJJ16E": {    "Id": "01JE6DY43AC7R7S2TPDAPJJ16E",    "Name": "TestFixed",    "Type": "AzureDevOps",    "Properties": {      "Organization": "statshvss",      "PersonalToken": "***"    }  },  "01JHJS7BQKH6SHMBMR7JFTNAFY": {    "Id": "01JHJS7BQKH6SHMBMR7JFTNAFY",    "Name": "TestHttp",    "Type": "Http",    "Properties": {      "BaseUrl": "[https://www.google.com](https://www.google.com)",      "Headers": [        "C",        "B"      ]    }  }}
    icon
    Important

    The type must always be kept in the JSON, even if it will not be modified.

    Possible actions:

    • Add an attribute
    • Modify an attribute value
    • Delete an attribute

    Method: PUT

    URL: public-api/Boards/{BoardId}/connections/{ConnectionId}

    Parameters:

    • The board ID found in the request URL
    • The connector ID found in the request URL
    • JSON in the request body

    Add an attribute

    Here is what the JSON must contain to add attributes:

    • Adding a "BaseUrl" attribute with the value "hello"
    • Adding a new header called "X-Custom-Header" with the value "maValeur"

    Request body:

    Example:

    Update an attribute

    Here I update my BaseUrl attribute with a new value and I update my X-Custom-Header header with a new value:

    Request body:

    Example:

    Delete an attribute

    Here I delete the X-Custom-Header header:

    Request body:

    Example:

    {  "Type": "Http",  "BaseUrl": {    "NewValue": "hello"  },  "Headers": {    "X-Custom-Header": {      "Action": "Add",      "Value": "maValeur"    }  }}
    curl -X 'PUT' \  '[https://localhost:5001/public-api/Boards/01F5GFJM403K9N9B8TCWTHAB4A/connections/01JHJS7BQKH6SHMBMR7JFTNAFY](https://localhost:5001/public-api/Boards/01F5GFJM403K9N9B8TCWTHAB4A/connections/01JHJS7BQKH6SHMBMR7JFTNAFY)' \  -H 'accept: */*' \  -H 'user-api-key: my-api-key' \  -H 'Content-Type: application/json' \  -d '{    "Type": "Http",    "BaseUrl": {      "NewValue": "hello"    },    "Headers": {      "X-Custom-Header": {        "Action": "Add",        "Value": "maValeur"      }    }  }'
    {  "Type": "Http",  "BaseUrl": {    "NewValue": "hello"  },  "Headers": {    "X-Custom-Header": {      "Action": "Update",      "Update": {        "NewValue": "Plop"      }    }  }}
    curl -X 'PUT' \  '[https://localhost:5001/public-api/Boards/01F5GFJM403K9N9B8TCWTHAB4A/connections/01JHJS7BQKH6SHMBMR7JFTNAFY](https://localhost:5001/public-api/Boards/01F5GFJM403K9N9B8TCWTHAB4A/connections/01JHJS7BQKH6SHMBMR7JFTNAFY)' \  -H 'accept: */*' \  -H 'user-api-key: my-api-key' \  -H 'Content-Type: application/json' \  -d '{    "Type": "Http",    "BaseUrl": {      "NewValue": "hello"    },    "Headers": {      "X-Custom-Header": {        "Action": "Update",        "Update": {          "NewValue": "Plop"        }      }    }  }'
    {  "Type": "Http",  "Headers": {    "X-Custom-Header": {      "Action": "Remove"    }  }}
    curl -X 'PUT' \  '[https://localhost:5001/public-api/Boards/01F5GFJM403K9N9B8TCWTHAB4A/connections/01JHJS7BQKH6SHMBMR7JFTNAFY](https://localhost:5001/public-api/Boards/01F5GFJM403K9N9B8TCWTHAB4A/connections/01JHJS7BQKH6SHMBMR7JFTNAFY)' \  -H 'accept: */*' \  -H 'user-api-key: my-api-key' \  -H 'Content-Type: application/json' \  -d '{    "Type": "Http",    "Headers": {      "X-Custom-Header": {        "Action": "Remove"      }    }  }'

    Did this answer your question?