An open API service indexing awesome lists of open source software.

https://github.com/grokify/go-ringcentral-engage

RingCentral Engage Digital / Dimelo SDK for Go - https://www.dimelo.com - https://engage-api-docs.rtfd.org
https://github.com/grokify/go-ringcentral-engage

Last synced: 3 months ago
JSON representation

RingCentral Engage Digital / Dimelo SDK for Go - https://www.dimelo.com - https://engage-api-docs.rtfd.org

Awesome Lists containing this project

README

        

# RingCentral Engage SDK for Go

[![Build Status][build-status-svg]][build-status-url]
[![Go Report Card][goreport-svg]][goreport-url]
![API Coverage][api-coverage-svg]
[![Docs][docs-godoc-svg]][docs-godoc-url]
[![License][license-svg]][license-url]
[![Stack Overflow][stackoverflow-svg]][stackoverflow-url]
[![Twitter][twitter-svg]][twitter-url]

[api-coverage-svg]: https://img.shields.io/badge/api%20coverage-116%2F121%20%3D%2096%25-yellow.svg
[build-status-svg]: https://github.com/grokify/go-ringcentral-engage/actions/workflows/ci.yaml/badge.svg?branch=master
[build-status-url]: https://github.com/grokify/go-ringcentral-engage/actions/workflows/ci.yaml
[goreport-svg]: https://goreportcard.com/badge/github.com/grokify/go-ringcentral-engage
[goreport-url]: https://goreportcard.com/report/github.com/grokify/go-ringcentral-engage
[docs-godoc-svg]: https://img.shields.io/badge/docs-godoc-blue.svg
[docs-godoc-url]: https://godoc.org/github.com/grokify/go-ringcentral-engage/engagedigital
[license-svg]: https://img.shields.io/badge/license-MIT-blue.svg
[license-url]: https://github.com/grokify/go-ringcentral-engage/blob/master/LICENSE
[stackoverflow-svg]: https://img.shields.io/badge/Stack%20Overflow-ringcentral-orange.svg
[stackoverflow-url]: https://stackoverflow.com/questions/tagged/ringcentral
[twitter-svg]: https://img.shields.io/twitter/follow/ringcentraldevs.svg?style=social&label=follow
[twitter-url]: https://twitter.com/RingCentralDevs

## Overview

This currently provides a minimal Go SDK for RingCentral Engage Digital, formerly Dimelo:

https://www.dimelo.com

## Pre-requisites

You need the following:

1. RingCentral Engage Digital / Dimelo Account and the URL subdomain, e.g. `my-subdomain` in the following URL: `https://my-subdomain.engagement.dimelo.com`
1. An API Access Token. You can retrive this at the following URL, using your own domain in place of `my-subdomain`: `https://my-subdomain.engagement.dimelo.com/admin/api_access_tokens`

## Installation

```
$ go get github.com/grokify/go-ringcental-engage/...
```

## Usage

The main SDK is in the `engagedigital/engagedigital` folder. The `engagedigital/engagedigitalutil` folder provides a non-autogenerated helper function to instantiate the SDK:

```go
import("github.com/grokify/go-ringcentral-engage/engagedigital/engagedigitalutil")

func main() {
apiClient := engagedigitalutil.NewApiClient("my-subdomain", "my-access-token")

// helper function to get access to raw `*http.Client`
httpClient := apiClient.HTTPClient()
}
```

For information on how to use the `apiClient` object, see:

1. [`engagedigital/examples`](engagedigital/examples) folder for usage. [`engagedigital/examples/simple_get`](engagedigital/examples/simple_get) includes a simple functions for a lot of the `GET` APIs.
1. [engagedigital/engagedigital/README.md](https://github.com/grokify/go-ringcentral-engage/blob/master/engagedigital/README.md) for SDK documentation.

## Documentation

[engagedigital/engagedigital/README.md](https://github.com/grokify/go-ringcentral-engage/blob/master/engagedigital/README.md)

## Coverage

116/121 APIs - 96%

- [x] Communities
- [x] GET /1.0/communities
- [x] GET /1.0/communities/:id

- [x] Sources
- [x] GET /1.0/content_sources
- [x] GET /1.0/content_sources/:id
- [x] PUT /1.0/content_sources/:id

- [x] Folders
- [x] GET /1.0/folders
- [x] GET /1.0/folders/:id
- [x] POST /1.0/folders
- [x] PUT /1.0/folders/:id
- [x] DELETE /1.0/folders/:id

- [x] Roles
- [x] GET /1.0/roles
- [x] GET /1.0/roles/:id
- [x] POST /1.0/roles
- [x] PUT /1.0/roles/:id

- [x] Categories
- [x] GET /1.0/categories
- [x] GET /1.0/categories/:id
- [x] POST /1.0/categories
- [x] PUT /1.0/categories/:id
- [x] DELETE /1.0/categories/:id

- [x] Tags
- [x] GET /1.0/tags
- [x] GET /1.0/tags/:id
- [x] POST /1.0/tags
- [x] PUT /1.0/tags/:id
- [x] DELETE /1.0/tags/:id

- [x] Teams
- [x] GET /1.0/teams
- [x] GET /1.0/teams/:id
- [x] POST /1.0/teams
- [x] PUT /1.0/teams/:id
- [x] DELETE /1.0/teams/:id

- [x] Users
- [x] GET /1.0/users/me
- [x] GET /1.0/users
- [x] GET /1.0/users/:id
- [x] POST /1.0/users
- [x] PUT /1.0/users/:id
- [x] POST /1.0/users/invite
- [x] DELETE /1.0/users/:id

- [ ] User Source Permissions
- [ ] GET /1.0/users/:id/sources_permissions
- [ ] PUT /1.0/users/:id/sources_permissions

- [x] Identities
- [x] GET /1.0/identities
- [x] GET /1.0/identities/:id

- [x] Identity Groups
- [x] GET /1.0/identity_groups
- [x] GET /1.0/identity_groups/:id
- [x] PUT /1.0/identity_groups/:id

- [x] Custom Fields
- [x] GET /1.0/custom_fields
- [x] GET /1.0/custom_fields/:id
- [x] POST /1.0/custom_fields
- [x] PUT /1.0/custom_fields/:id
- [x] DELETE /1.0/custom_fields/:id

- [x] Threads
- [x] GET /1.0/content_threads
- [x] GET /1.0/content_threads/:id
- [x] PUT /1.0/content_threads/:id/update_categories
- [x] PUT /1.0/content_threads/:id/ignore
- [x] PUT /1.0/content_threads/:id/close
- [x] GET /1.0/content_threads/:id/open

- [x] Contents
- [x] GET /1.0/contents
- [x] GET /1.0/contents/:id
- [x] POST /1.0/contents
- [x] PUT /1.0/contents/:id/update_categories
- [x] PUT /1.0/contents/:id/ignore

- [x] Attachments
- [x] GET /1.0/attachments
- [x] GET /1.0/attachments/:id
- [x] POST /1.0/attachments

- [x] Events
- [x] GET /1.0/events
- [x] GET /1.0/events/:id

- [ ] Interventions
- [x] GET /1.0/interventions
- [x] GET /1.0/interventions/:id
- [x] POST /1.0/interventions
- [ ] PUT /1.0/interventions/:id
- [x] PUT /1.0/interventions/:id/close
- [x] PUT /1.0/interventions/:id/reassign
- [x] PUT /1.0/interventions/:id/update_categories
- [x] DELETE /1.0/interventions/:id/cancel

- [x] Intervention comments
- [x] GET /1.0/intervention_comments
- [x] GET /1.0/intervention_comments/:id
- [x] POST /1.0/intervention_comments
- [x] DELETE /1.0/intervention_comments/:id

- [x] Agent Status (task view)
- [x] GET /1.0/status
- [x] GET /1.0/status/:agent_id
- [ ] PUT /1.0/status/:agent_id

- [x] Webhook
- [x] GET /1.0/webhooks
- [x] GET /1.0/webhooks/:id
- [x] POST /1.0/webhooks
- [x] PUT /1.0/webhooks/:id
- [x] DELETE /1.0/webhooks/:id

- [x] Time Sheet
- [x] GET /1.0/time_sheets
- [x] GET /1.0/time_sheets/:id
- [x] POST /1.0/time_sheets
- [x] PUT /1.0/time_sheets/:id
- [x] DELETE /1.0/time_sheets/:id

- [x] Channels
- [x] GET /1.0/channels
- [x] GET /1.0/channels/:id
- [x] PUT /1.0/channels/:id

- [x] Settings
- [x] GET /1.0/settings
- [x] PUT /1.0/settings

- [x] Locales
- [x] GET /1.0/locales

- [x] Timezones
- [x] GET /1.0/timezones

- [x] Presence statuses
- [x] GET /1.0/presence_status
- [x] GET /1.0/presence_status/:id
- [x] POST /1.0/presence_status
- [x] PUT /1.0/presence_status/:id
- [x] DELETE /1.0/presence_status/:id

- [x] Tasks
- [x] GET /1.0/tasks
- [x] GET /1.0/tasks/:id
- [x] POST /1.0/tasks/:id/transfer
- [x] POST /1.0/tasks/:id/move

- [x] Reply Assistant - Entries
- [x] GET /1.0/reply_assistant/entries
- [x] GET /1.0/reply_assistant/entries/:id
- [x] POST /1.0/reply_assistant/entries
- [x] PUT /1.0/reply_assistant/entries/:id
- [x] DELETE /1.0/reply_assistant/entries/:id

- [x] Reply Assistant - Versions
- [x] GET /1.0/reply_assistant/versions
- [x] GET /1.0/reply_assistant/versions/:id
- [x] POST /1.0/reply_assistant/versions
- [x] PUT /1.0/reply_assistant/versions/:id
- [x] DELETE /1.0/reply_assistant/versions/:id

- [x] Reply Assistant - Groups
- [x] GET /1.0/reply_assistant/groups
- [x] GET /1.0/reply_assistant/groups/:id
- [x] POST /1.0/reply_assistant/groups
- [x] PUT /1.0/reply_assistant/groups/:id
- [x] DELETE /1.0/reply_assistant/groups/:id

- [ ] Survey Response
- [ ] GET /1.0/survey_responses/:id

There are 127 endpoints. To count, use the following on OS-X:

```
$ grep ' [ ]' README.md | wc -l
```

## Building the SDK

You won't normally need to do this unless you want to modify the SDK, like adding endpoints via the OpenAPI 2.0 / Swagger 2.0 specification.

This SDK is auto-generated from the [OpenAPI 2.0 / Swagger 2.0 spec](codegen/openapi-spec.json) using [OpenAPI Generator](https://github.com/OpenAPITools/openapi-generator).

> **Note:** This SDK uses a merged OpenAPI spec so do not edit the `codegen/openapi-spec.json` file. Instead, edit files in and add files to the `codegen/partial-specs` folder.

Run:

```
$ cd codegen
$ go run merge.go -v 3
$ sh generate.sh
$ rm -rf ../engagedigital
$ mv engagedigital ..
```
# Credits

Thanks to the following apps for making this possible:

* https://github.com/OpenAPITools/openapi-generator
* https://github.com/getkin/kin-openapi/tree/master/openapi3
* https://apidevtools.org/swagger-parser/online/
* https://mermade.org.uk/openapi-converter