Only this pageAll pages
Powered by GitBook
1 of 7

Custom Apps Development Training

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Version 0 (no authorization)

Hello World

Make App Academy API

The App Academy API was specifically developed for the Make Academy Custom Apps Development course.

Access

To access the API, please fill out the with your email, first and last names, redirect URI, and accept the terms and conditions.

After submitting the form, you should receive an email with credentials for both Version 1 (API key) and Version 2 (client Id and Secret) within 5 minutes. Access to Version 3 can be obtained within the practical challenge in the Custom Apps Development Training course.

After submitting the form, you will receive an email with credentials for Version 1 (API key) and Version 2 (client ID and Secret) within 5 minutes. To access Version 3, complete the practical challenge in the Custom Apps Development Training course.

Developers are limited to one access each.

Removal of access and data

If you wish to have your access and data removed, simply fill out the form and you will receive confirmation via email within 5 minutes.

Any access to the API will be removed if there has been no activity for 1 month, and all records created within the account will be deleted.

Limits

The API was designed solely for educational purposes, and therefore has some limitations in place to simulate a real API experience. These include:

  • Each user is granted access to 6 default records that cannot be updated or deleted.

  • Each user can create up to 14 records, resulting in 20 retrievable records.

  • Users are only allowed to update or delete records that they have created.

  • Each user is allowed to create 1 webhook.

  • The default (and maximum) page size in pagination is 5.

  • The default (and maximum) limit of retrieved records is 20.

form

Version 3

Getting started

The App Academy API version 3 was developed for the practical challenge within the Custom Apps Development course. Access ( username and password ) can be obtained there.

Authorization flow

Step one: Obtain a new token

Before getting access to API version 3, you will need your username and password to get a new access token.

Use your application username and password to issue a request to token endpoint.

You must use password grant type.

A successful request will respond with access_token , expires-in , and refresh_token parameters. Expires-in value is in minutes.

Step two: Make an API request

After obtaining the access token, you can send requests to App Academy API that contain the authorization header in this format: Bearer {access_token}.

Step three: Refresh the access token

The API provides the expires_in parameter in the token response to determine if the user's access token has expired. If it has, to obtain a new access token use the token endpoint with grant_type set to refresh_token .

Expires-in value is in minutes. To obtain a new access token and refresh token, the refresh token must not be expired!

Error handling

Error example

Pagination

App Academy API uses pagination to limit the response size for resources that return a potentially large collection of items. A request to a paged API will result in a results array wrapped in a JSON object with paging metadata, for example:

  • totalRecordsReturned - The number of results returned on the page.

The default (and maximum) page size in pagination is 5.

The default (and maximum) limit of retrieved records is 20.

Version 2 (OAuth2)

Authorization flow

The API version 2 implements the OAuth2 authorization framework, enabling secure authentication and authorization to access its resources. This flow has been developed specifically for the Make Academy Custom Apps Development course, aiming to simulate a real-world authentication and authorization process.

Every developer can integrate Custom App Academy API V2 by obtaining up to one app access that involves registration of their application and obtaining client credentials.

To obtain the necessary client credentials (client ID and secret), you can submit the . If you have previously submitted the form for API version 1, you should already have received the credentials to API version 2 via email.

Version 1 (API key)

Authentication

The App Academy API version 1 uses the API Key authorization. You need the x-api-key which you can obtain in this .

Pagination

To provide a realistic user authorization experience, API version 2 includes a feature where users can select the specific account they want to connect with the application. This mimics the behavior seen in real-world applications.

Selection of the account authorize

Each app user (John Doe/Jane Black) can have only one active connection. If you generate a new connection, the existing one will be removed.

Step one: Redirect a user to your app

Redirect the user to authorize endpoint. This will prompt the user to allow your application to access the Custom App Academy API on their behalf. You need the user to allow the connect scope to successfully authorize access. To obtain the code parameter to authorize token request, set the response_type to code.

Step two: Handle the callback request

Once a user decides to allow or disallow your application access to their account, Custom App Academy will redirect them to the OAuth2 redirect URL that you set when submitting your form.

If there was an error processing the request, the response will contain an error.message parameter. If the request was successful, the response will contain code parameter.

Step three: Retrieve an access token and refresh token

Use your application client_id and client_secret together with code from the previous step to issue a request to token endpoint. You must use the same redirect URL in the token request and authorization_code grant type.

A successful request will respond with access_token, expires-in, refresh_token and refresh_expires_in parameters. expires-in and refresh_expires_in values are in minutes.

Step four: Make an API request

After obtaining the access token, you can send requests to App Academy API that contain the authorization header in this format: Bearer {access_token}.

Step five: Refresh the access token

The API provides the expires_in parameter in the token response to determine if the user's access token has expired. If it has, use the refresh endpoint to retrieve a new access token and refresh token. expires-in and refresh_expires_in values are in minutes. To obtain a new access token and refresh token, the refresh token must not be expired!

Step six: Access invalidation

If the user wants to invalidate the access of your app to Custom App Academy API, use the invalidate endpoint.

Scopes

API Version 2 provides integration with scopes. Scopes provide a granular level of access control and ensure that users can only access the specific resources they need. The following scopes are supported:

Endpoint
Scope

authorize

connect

any GET endpoint*

read

any POST/PUT/PATCH ednpoint

write

any DELETE endpoint

delete

*except for /info endpoint.

Endpoints

In API version 2, all the endpoints available in API version 1 are fully supported. To make API calls in version 2, you need to use the URL for API version 2 as well as to ensure proper authorization and scope management by following the instructions provided above.

form
Version 1 (API key)

Since the App Academy API was built for educational purposes, the following types of pagination were used:

  • offset based

  • page based

  • has more items based

Endpoints

About

Movies

Each user is granted access to 6 default records that cannot be updated or deleted.

Each user can create up to 14 records, resulting in a total of 20 retrievable records.

People

The query (parameter q ) has to be written in this format:

  • all the conditions can be grouped by operator AND

  • the value in each condition has to be enclosed in quotation marks

  • supported conditions:

    • contains

    • startsWith

    • endsWith

    • equal

  • multiple conditions can be used multiple times within one query

example:

Organizations

Genres

Awards

Webhooks

Each user can create 1 webhook.

Files

Please note that the Import endpoint does not upload or store any data. Therefore, the file

you provide will not be returned or stored in the Files endpoint.

Custom Fields (movie)

Please note that values in custom fields are not stored in movie records. Therefore, the

values you provide will not be returned or stored in the Movies endpoints.

form
contains= "Rob" AND startsWith = "Rob" AND endsWith = "Jr."
{
    "error": {
        "message": "Grant type not supported.",
        "code": 501
    }
}
{
    "totalRecordsReturned": 5,
    "records": [
        {
            "id": "1dca6a93fcf1",
            "name": "Robert Downey Jr.",
            "createdAt": "2023-04-13T17:04:47+00:00",
            "updatedAt": "2023-04-19T17:04:47+00:00"
        }
    ]
}

API reference

Record types

List record types

This endpoint returns the available record types, e.g. movie, organization, person, etc.

Response parameters

Name
Description

Retrieve a record type

This endpoint retrieves the JSON file of a record type. This JSON file contains the list of parameters available in the record type.

Response parameters

Name
Description

Records

Filtering records

The search records endpoint supports chained filters. The filter is sent in body of the request.

In addition to chained filters, records can be queried with single filters as well.

Supported operators for filtering

  • startsWith

  • endsWith

  • contains

  • equalsTo

Retrieve a record

Create a record

Each user is granted access to 6 default movie records that cannot be updated or deleted.

Each user can create up to 14 movie records, resulting in 20 retrievable movie records.

The body of the request contains the parameters available in the selected .

Update a record

Only the records created by the user can be updated.

The body of the request contains the parameters available in the selected .

Delete a record

Only the records created by the user can be deleted.

Files/Folders

Retrieve files or folders

Download a file

Delete a file

Upload a file

Each user is granted access to 1 default record that can't be deleted.

Each user can upload up to 1 file, resulting in 2 retrievable files.

The maximum size of a file one can upload to an upload session is 4 bytes. A single request within the upload session cannot exceed 1 byte. Example: If a file has 4 bytes, the file has to be split into 4 separate requests containing a block of data (bytes).

Step one: Open a slot for a file uplod

Open a slot for an upload session and save the file's name and the given file path where the file should be uploaded.

Only one slot can be open at a time. The slot can be open for max 1 minute. The session is dropped if the file upload is not finished by that time or if the upload session ends up with an error.

Step two: Upload the first block of data of the file

Upload the first block of data to an uplaod session.

Step three: Upload the other blocks of data of the file

Append more data to an upload session.

Step four: Upload the last block of data of the file and close the session

Finish the upload session by uploading the last block (byte) of the file's data.

Webhooks

Verification of the webhook

The Make Academy API version 3 uses a digital signature which is generated using the secret key entered when creating a webhook and the body of the webhook’s request. This data is contained within the Signature header.

The header contains the SHA algorithm used to generate the signature. To verify that the request originates from the App Academy API, you'll need to compute the HMAC 256 using your secret key and the body and compare it to the signature contained in the header. The successful matching of these values ensures that the webhook's source is the App Academy API.

Example of computing HMAC 256 in JavaScript

Responding to the webhook

You must set up the verification of the webhook.

When a webhook is attached, the verification payload is sent to the webhook. You must respond with the correct HTTP code:

  • 200 for correct signature

  • 400 for incorrect signature

For the 400 code, you must respond with the following response:

Headers

Body

Webhook's payload

Payload parameters

Name
Description

Attach a webhook

Detach a webhook

Return a greeting.

get

Returns a greeting. If no input is provided, the default text "Hello, World!" is returned.

Query parameters
namestringOptional

The name of the person to welcome.

greetingstringOptional

The greeting that should be used. E.g. Hello.

Responses
200

OK

application/json
400

Bad request

application/json
get
/helloworld
{
  "result": "Hello, John!"
}
GET /api/v0/helloworld HTTP/1.1
Host: app-academy.make.com
Accept: */*

searchesIn

The list of parameters to search by in the records of the record type.

deletable

The record type suuports operation delete.

triggerable

The record type supports firing webhooks when a new event is logged.

The record type records the date and time of the event.

type

JSON type of the parameter, e.g. text, number, array.

nestedParameters

The parameters that are nested to the parameter.

name

Name of the record type.

label

Label of the record type.

creatable

The record type supports operation create.

updatable

The record type supports operation update.

readable

The record type supports operation read.

searchable

The record type supports operation search.

Endpoint to retrieve available record types.

get

This endpoint retrieves available record types.

Header parameters
authorizationstringRequired

Access token for authorization.

Responses
200

OK

application/json
get
/recordTypes

Retrieves a record type.

get

This endpoint retrieves JSON file of a record type.

Path parameters
namestringRequired

Name of the record to work with.

Header parameters
authorizationstringRequired

Access token for authorization.

name

Name of the parameter.

label

Label of teh parameter.

mandatory

The parameter is mandatory.

readable

The parameter is returned in the response body when the record is fetched.

updatable

The parameter can be used to create/update a record.

refersTo

Name of the record type to which the parameter refers. Only available for the parameters of type ID.

Retrieves records. E.g. movies.

post

Retrieves records. E.g. movies.

Path parameters
recordTypestringRequired

Type of the record to retrieve, e.g. movie.

Query parameters
offsetnumberOptional

The number of records to skip.

Example: 5

Retrieves records. E.g. movies.

post

Retrieves records. E.g. movies.

Path parameters
recordTypestringRequired

Type of the record to retrieve, e.g. movie.

Query parameters
offsetnumberOptional

The number of records to skip.

Example: 5

Retrieves the record by its ID.

get

Retrieves the record by its ID.

Path parameters
recordTypestringRequired

Type of the record to retrieve, e.g. movie.

idstringRequired

ID of the record to work with.

Header parameters

Creates a new record. E.g. a movie.

post

Creates a new record. E.g. a movie.

Path parameters
recordTypestringRequired

Type of the record to retrieve, e.g. movie.

Header parameters
authorizationstringRequired

Access token for authorization.

Updates the record by its ID.

patch

Updates the record by its ID.

Path parameters
recordTypestringRequired

Type of the record to retrieve, e.g. movie.

idstringRequired

ID of the record to work with.

Header parameters

Deletes the record by its ID.

delete

Deletes the record by its ID.

Path parameters
recordTypestringRequired

Type of the record to retrieve, e.g. movie.

idstringRequired

ID of the record to work with.

Header parameters

Retrieves the list of files or folders.

get

Retrieves the list of files or folders.

Query parameters
parentstringOptional

ID of the parent to work with.

pagenumberOptional

Identification of the page to retrieve.

Header parameters
authorizationstringRequired

Access token for authorization.

Retrieves the list of files or folders.

get

Retrieves the list of files or folders.

Query parameters
parentstringOptional

ID of the parent to work with.

pagenumberOptional

Identification of the page to retrieve.

Header parameters
authorizationstringRequired

Access token for authorization.

Downloads a file.

get

Downloads a file.

Path parameters
idstringRequired

ID of the record to work with.

Header parameters
authorizationstringRequired

Access token for authorization.

Deletes a file.

delete

Deletes a file.

Path parameters
idstringRequired

ID of the record to work with.

Header parameters
authorizationstringRequired

Access token for authorization.

Creates a session ID for a file upload. Stores a file name and the final location of the file (full path to the folder is required).

post

Creates a session ID for a file upload. Stores a file name and the final location of the file (full path to the folder is required).

Header parameters
authorizationstringRequired

Access token for authorization.

Body

Uploads the first block of data of a file.

post

Uploads the first block of data of a file.

Header parameters
authorizationstringRequired

Access token for authorization.

session-idstringRequired

Session ID of the file upload.

content-typestringRequired

application/octet-stream

Example: application/octet-stream
Body

Uploads the other blocks of data (bytes) of a file, except the last block of data.

post

Uploads the other blocks of data (bytes) of a file, except the last block of data.

Header parameters
authorizationstringRequired

Access token for authorization.

session-idstringRequired

Session ID of the file upload.

content-typestringRequired

application/octet-stream

Example: application/octet-stream
offsetnumberRequired

Identification of the byte's order in the file to upload.

Uploads the last block of data of a file and closes the session.

post

Uploads the last block of data a file and closes the session.

Header parameters
authorizationstringRequired

Access token for authorization.

session-idstringRequired

Session ID of the file upload.

content-typestringRequired

application/octet-stream

Example: application/octet-stream

eventType

The type of event that fired the webhook. Available types: verification, create, update.

data

The body of the record type.

Attaches a new webhook.

post

Attaches a new webhook.

Header parameters
authorizationstringRequired

Access token for authorization.

Body
urlstringRequired
secretKeystringRequired
recordTypestringRequired

Detaches an existing webhook.

delete

Detaches an existing webhook.

Path parameters
idstringRequired

ID of the record to work with.

Header parameters
authorizationstringRequired

Access token for authorization.

record type
record type

Endpoint to retrieve info about the connected account.

get

This endpoint retrieves info about the connected account.

Header parameters
authorizationstringRequiredExample: Bearer [accessToken]
Responses
200

OK

application/json
get
/whoami

Endpoint to refresh the access token.

post

This endpoint to refresh the access token.

Body
refresh_tokenstringRequired
grant_typestringRequiredExample: refresh_token
Responses
200

OK

application/json
post
/token

Endpoint to retrieve access token.

post

This endpoint retrieves the access token.

Body
usernamestringRequired
passwordstringRequired
grant_typestringRequiredExample: password
Responses
200

OK

application/json
post
/token
{
    "or":[
        {
            "and":[
                {
                    "property": "name",
                    "startsWith": "R"    
                },
                {
                    "property": "name",
                    "contains": "o"
                }
            ]
        },
        {
            "and":[
                {
                    "property": "name",
                    "startsWith": "G"
                },
                {
                    "property": "name",
                    "contains": "w"
                }
            ]
        }
    ]
}
{
    "and":[
        {
            "property": "name",
            "startsWith": "R"
        }
    ]
}
import * as crypto from 'crypto';

function generateHMACSHA256(secretKey: string, data: string): string {
    const hmac = crypto.createHmac('sha256', secretKey);
    hmac.update(data);
    return hmac.digest('hex');
}
const secretKey ='yourSecretKey';
const body ='yourBodyContent';

const hmacSHA256 = generateHMACSHA256(secretKey, body);
console.log(`HMAC-SHA256: ${hmacSHA256}`);
"Content-type": "application/json"
{
    "message": "Invalid signature"
}
{
    "eventType": "verification",
    "data": {...}
}
200

OK

200

OK

200

OK

{
  "name": "Jane Doe",
  "username": "[email protected]"
}
POST /api/v3/token HTTP/1.1
Host: app-academy.make.com
Content-Type: application/json
Accept: */*
Content-Length: 53

{
  "refresh_token": "text",
  "grant_type": "refresh_token"
}
{
  "access_token": "text",
  "expires_in": 1,
  "refresh_token": "text"
}
POST /api/v3/token HTTP/1.1
Host: app-academy.make.com
Content-Type: application/json
Accept: */*
Content-Length: 61

{
  "username": "text",
  "password": "text",
  "grant_type": "password"
}
{
  "access_token": "text",
  "expires_in": 1,
  "refresh_token": "text"
}
GET /api/v3/whoami HTTP/1.1
Host: app-academy.make.com
authorization: text
Accept: */*
200

OK

Responses
200

OK

application/json
get
/recordTypes/{name}
200

OK

Header parameters
authorizationstringRequired

Access token for authorization.

Body
anyOptional
Responses
200

OK

application/json
post
/{recordType}/query
200

OK

Header parameters
authorizationstringRequired

Access token for authorization.

Body
anyOptional
Responses
200

OK

application/json
post
/{recordType}/query
200

OK

authorizationstringRequired

Access token for authorization.

Responses
200

OK

application/json
get
/{recordType}/{id}
200

OK

No content

Responses
200

OK

application/json
post
/{recordType}
200

OK

No content

authorizationstringRequired

Access token for authorization.

Responses
200

OK

application/json
patch
/{recordType}/{id}
200

OK

No content

authorizationstringRequired

Access token for authorization.

Responses
200

OK

application/json
delete
/{recordType}/{id}
200

OK

No content

Responses
200

OK

application/json
get
/files
200

OK

Responses
200

OK

application/json
get
/files
200

OK

Responses
200

OK

application/octet-stream
get
/files/{id}
200

OK

No content

Responses
200

OK

application/json
delete
/files/{id}
200

OK

No content

pathstringRequiredExample: /8c6e22b7f1a0/e4673b2dff5e/1dca6a93fcf1
fileNamestringRequiredExample: test.txt
Responses
200

OK

application/json
post
/files/upload/openSlot
200

OK

string · binaryOptionalExample: raw(binary)
Responses
200

OK

application/json
post
/files/upload/start
200

OK

Body
string · binaryOptionalExample: raw(binary)
Responses
200

OK

application/json
post
/files/upload/append
200

OK

Body
string · binaryOptionalExample: raw(binary)
Responses
200

OK

application/json
post
/files/upload/finish
200

OK

Responses
200

OK

application/json
post
/webhooks
200

OK

Responses
200

OK

application/json
delete
/webhooks/{id}
200

OK

No content

{
  "recordTypes": [
    {
      "name": "movie",
      "label": "Movie",
      "creatable": true,
      "updatable": true,
      "readable": true,
      "searchable": true,
      "searchesIn": [
        "text"
      ],
      "deletable": true
    }
  ]
}
GET /api/v3/recordTypes/{name} HTTP/1.1
Host: app-academy.make.com
authorization: text
Accept: */*
{
  "recordParameters": [
    {
      "name": "id",
      "label": "ID",
      "mandatory": true,
      "readable": true,
      "updatable": true,
      "refersTo": "organization",
      "type": "text",
      "nestedParameters": [
        {
          "name": "id",
          "label": "ID",
          "mandatory": true,
          "readable": true,
          "updatable": true,
          "refersTo": "organization",
          "type": "text",
          "nestedParameters": [
            "[Circular Reference]"
          ]
        }
      ]
    }
  ]
}
POST /api/v3/{recordType}/query HTTP/1.1
Host: app-academy.make.com
authorization: text
Content-Type: application/json
Accept: */*
POST /api/v3/{recordType}/query HTTP/1.1
Host: app-academy.make.com
authorization: text
Content-Type: application/json
Accept: */*
GET /api/v3/{recordType}/{id} HTTP/1.1
Host: app-academy.make.com
authorization: text
Accept: */*
POST /api/v3/{recordType} HTTP/1.1
Host: app-academy.make.com
authorization: text
Accept: */*
PATCH /api/v3/{recordType}/{id} HTTP/1.1
Host: app-academy.make.com
authorization: text
Accept: */*
DELETE /api/v3/{recordType}/{id} HTTP/1.1
Host: app-academy.make.com
authorization: text
Accept: */*
GET /api/v3/files HTTP/1.1
Host: app-academy.make.com
authorization: text
Accept: */*
GET /api/v3/files HTTP/1.1
Host: app-academy.make.com
authorization: text
Accept: */*
{
  "totalPages": 2,
  "items": [
    {
      "name": "test.txt",
      "parent": "e4677852dffe",
      "id": "dj789jdj344i",
      "type": "folder"
    }
  ]
}
GET /api/v3/files/{id} HTTP/1.1
Host: app-academy.make.com
authorization: text
Accept: */*
DELETE /api/v3/files/{id} HTTP/1.1
Host: app-academy.make.com
authorization: text
Accept: */*
POST /api/v3/files/upload/openSlot HTTP/1.1
Host: app-academy.make.com
authorization: text
Content-Type: application/json
Accept: */*
Content-Length: 72

{
  "path": "/8c6e22b7f1a0/e4673b2dff5e/1dca6a93fcf1",
  "fileName": "test.txt"
}
POST /api/v3/files/upload/start HTTP/1.1
Host: app-academy.make.com
authorization: text
session-id: text
content-type: text
Content-Type: application/octet-stream
Accept: */*
Content-Length: 13

"raw(binary)"
POST /api/v3/files/upload/append HTTP/1.1
Host: app-academy.make.com
authorization: text
session-id: text
content-type: text
offset: 1
Content-Type: application/octet-stream
Accept: */*
Content-Length: 13

"raw(binary)"
POST /api/v3/files/upload/finish HTTP/1.1
Host: app-academy.make.com
authorization: text
session-id: text
content-type: text
Content-Type: application/octet-stream
Accept: */*
Content-Length: 13

"raw(binary)"
POST /api/v3/webhooks HTTP/1.1
Host: app-academy.make.com
authorization: text
Content-Type: application/json
Accept: */*
Content-Length: 53

{
  "url": "text",
  "secretKey": "text",
  "recordType": "text"
}
DELETE /api/v3/webhooks/{id} HTTP/1.1
Host: app-academy.make.com
authorization: text
Accept: */*
GET /api/v3/recordTypes HTTP/1.1
Host: app-academy.make.com
authorization: text
Accept: */*
{
  "totalRecordsReturned": 5,
  "records": [
    {
      "id": "1dca6a93fcf1",
      "name": "Robert Downey Jr.",
      "createdAt": "2023-04-13T17:04:47+00:00",
      "updatedAt": "2023-04-13T17:04:47+00:00"
    }
  ]
}
{
  "totalRecordsReturned": 5,
  "records": [
    {
      "id": "1dca6a93fcf1",
      "name": "Robert Downey Jr.",
      "createdAt": "2023-04-13T17:04:47+00:00",
      "updatedAt": "2023-04-13T17:04:47+00:00"
    }
  ]
}
{
  "totalPages": 2,
  "items": [
    {
      "name": "test.txt",
      "parent": "e4677852dffe",
      "id": "dj789jdj344i",
      "type": "folder"
    }
  ]
}
{
  "session_id": "e4677852dffe"
}
{
  "session_id": "e4677852dffe"
}
{
  "session_id": "e4677852dffe"
}
{
  "file_id": "test.txt"
}
{
  "hookId": "text",
  "secretKey": "text"
}

Endpoint to authorize access.

get

This endpoint enables authorization of your access to API.

Required scopes
This endpoint requires the following scopes:
  • : allows connection to resources
Authorizations
OAuth2authorizationCodeRequired
Authorization URL: Token URL:
Query parameters
scopestringRequiredExample: connect
client_idstringRequired
redirect_uristringRequiredExample: https://www.integromat.com/oauth/cb/app
response_typestringRequiredExample: code
Responses
200

OK

application/json
400

Bad Request

404

Not Found

501

Not Supported

get
/authorize

Endpoint to retrieve token.

post

This endpoint retrieves the token.

Required scopes
This endpoint requires the following scopes:
  • : allows connection to resources
Authorizations
OAuth2authorizationCodeRequired
Authorization URL: Token URL:
Body
codestringRequired
client_idstringRequired
grant_typestringRequiredExample: authorization_code
redirect_uristringRequiredExample: https://www.integromat.com/oauth/cb/app
client_secretstringRequired
Responses
200

OK

application/json
400

Bad Request

404

Not Found

501

Not Supported

post
/token

Endpoint to retrieve info about the connected account.

get

This endpoint retrieves info about the connected account.

Required scopes
This endpoint requires the following scopes:
  • : allows connection to resources
Authorizations
OAuth2authorizationCodeRequired
Authorization URL: Token URL:
Header parameters
authorizationstringRequiredExample: Bearer [accessToken]
Responses
200

OK

application/json
401

Not Authorized.

403

Missing Scope.

get
/info

Endpoint to retrieve a new refresh token.

post

This endpoint retrieves the refresh token.

Required scopes
This endpoint requires the following scopes:
  • : allows connection to resources
Authorizations
OAuth2authorizationCodeRequired
Authorization URL: Token URL:
Body
client_idstringOptional
grant_typestringOptionalExample: refresh_token
client_secretstringOptional
refresh_tokenstringOptional
Responses
200

OK

application/json
400

Bad Request

404

Not Found

501

Not Supported

post
/refresh

Endpoint to invalidate the access token.

get

This endpoint invalidates the access token.

Required scopes
This endpoint requires the following scopes:
  • : allows connection to resources
Authorizations
OAuth2authorizationCodeRequired
Authorization URL: Token URL:
Header parameters
authorizationstringRequiredExample: Bearer [accessToken]
Responses
204

OK

401

Not Authorized.

get
/invalidate

No content

{
  "access_token": "text",
  "expires_in": 5,
  "refresh_token": "text",
  "refresh_expires_in": 5
}
{
  "access_token": "text",
  "expires_in": 5,
  "refresh_token": "text",
  "refresh_expires_in": 5
}
GET /TKLOBOUCKOVA/app-academy-v2/1.0.0/authorize?scope=text&client_id=text&redirect_uri=text&response_type=text HTTP/1.1
Host: virtserver.swaggerhub.com
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
POST /TKLOBOUCKOVA/app-academy-v2/1.0.0/token HTTP/1.1
Host: virtserver.swaggerhub.com
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 148

{
  "code": "text",
  "client_id": "text",
  "grant_type": "authorization_code",
  "redirect_uri": "https://www.integromat.com/oauth/cb/app",
  "client_secret": "text"
}
GET /TKLOBOUCKOVA/app-academy-v2/1.0.0/info HTTP/1.1
Host: virtserver.swaggerhub.com
Authorization: Bearer YOUR_OAUTH2_TOKEN
authorization: text
Accept: */*
{
  "id": "d1b03e513fbc5881651d6c149fd259506f975ae1",
  "user": "Jane Doe"
}
POST /TKLOBOUCKOVA/app-academy-v2/1.0.0/refresh HTTP/1.1
Host: virtserver.swaggerhub.com
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 95

{
  "client_id": "text",
  "grant_type": "refresh_token",
  "client_secret": "text",
  "refresh_token": "text"
}
GET /TKLOBOUCKOVA/app-academy-v2/1.0.0/invalidate HTTP/1.1
Host: virtserver.swaggerhub.com
Authorization: Bearer YOUR_OAUTH2_TOKEN
authorization: text
Accept: */*
{
  "code": "text"
}

Retrieve the logged user

get

Gets information about the logged API user's account

Authorizations
x-api-keystringRequired
Header parameters
x-api-keystringRequired

API key for authorization.

Responses
200

OK

application/json
401

Unauthorized

get
/about

Create a movie

post

Creates a movie.

Authorizations
x-api-keystringRequired
Header parameters
x-api-keystringRequired

API key for authorization.

Body
namestringRequiredExample: Iron Man
directorIdstringRequiredExample: f841a38b77be
releaseDatestringRequiredExample: 2008
lengthnumberOptionalExample: 126
Responses
200

OK

application/json
400

Bad request error response

application/json
401

Unauthorized

post
/movies

List movies

get

Lists movies.

Authorizations
x-api-keystringRequired
Query parameters
pagenumberOptional

The number of the page to retrieve.

sincestringOptional

Retrieve records with dates in the provided sort parameter since this time. Default is createdAt. Allowed format YYYY-MM-DDTHH:mm:ssZ.

orderstring · enumOptional

The order in which the records should be returned. Default is asc.

Possible values:
sortstring · enumOptional

The parameter to be used for ordering the records. Available values are createdAt, updatedAt, name, originalPremiere, czechPremiere.

Possible values:
Header parameters
x-api-keystringRequired

API key for authorization.

Responses
200

OK

application/json
400

Bad request error response

application/json
401

Unauthorized

get
/movies

Retrieve a movie

get

Retrieves a movie.

Authorizations
x-api-keystringRequired
Path parameters
idstringRequired

ID of the resource to work with.

Header parameters
x-api-keystringRequired

API key for authorization.

Responses
200

OK

application/json
400

Bad request error response

application/json
401

Unauthorized

404

Record not found

application/json
get
/movies/{id}

Update a movie

put

Updates a movie. Without partial update.

Authorizations
x-api-keystringRequired
Path parameters
idstringRequired

ID of the resource to work with.

Header parameters
x-api-keystringRequired

API key for authorization.

Body
namestringRequiredExample: Iron Man
directorIdstringRequiredExample: f841a38b77be
releaseDatestringRequiredExample: 2008
lengthnumberOptionalExample: 126
Responses
200

OK

application/json
400

Bad request error response

application/json
401

Unauthorized

404

Record not found

application/json
put
/movies/{id}

Update a movie

patch

Updates a movie. With partial update.

Authorizations
x-api-keystringRequired
Path parameters
idstringRequired

ID of the resource to work with.

Header parameters
x-api-keystringRequired

API key for authorization.

Body
namestringOptionalExample: Iron Man
directorIdstringOptionalExample: f841a38b77be
releaseDatestringOptionalExample: 2008
lengthnumberOptionalExample: 126
Responses
200

OK

application/json
400

Bad request error response

application/json
401

Unauthorized

404

Record not found

application/json
patch
/movies/{id}

Delete a movie

delete

Deletes a movie.

Authorizations
x-api-keystringRequired
Path parameters
idstringRequired

ID of the resource to work with.

Header parameters
x-api-keystringRequired

API key for authorization.

Responses
200

OK

application/json
401

Unauthorized

delete
/movies/{id}

Search people involved in movies.

get

Searches people involved in movies.

Authorizations
x-api-keystringRequired
Query parameters
qstringOptional

The query to search in records.

Example: contains= \"Rob\" AND startsWith = \"Rob\" AND endsWith = \"Jr.\" AND equals = \"Robert Downey Jr.\"
offsetnumberOptional

The number of records to skip.

Header parameters
x-api-keystringRequired

API key for authorization.

Responses
200

OK

application/json
400

Bad request error response

application/json
401

Unauthorized

get
/people

List organizations involved in movies.

get

Lists organizations involved in movies.

Authorizations
x-api-keystringRequired
Query parameters
pagenumberOptional

The number of the page to retrieve.

Header parameters
x-api-keystringRequired

API key for authorization.

Responses
200

OK

application/json
400

Bad request error response

application/json
401

Unauthorized

get
/organizations

List genres of movies.

get

Lists genres of movies.

Authorizations
x-api-keystringRequired
Header parameters
x-api-keystringRequired

API key for authorization.

Responses
200

OK

application/json
400

Bad request error response

application/json
401

Unauthorized

get
/genres

List awards that were obtained by a movie.

get

Lists awards that were obtained by a movie.

Authorizations
x-api-keystringRequired
Path parameters
movieIdstringRequired

ID of the movie to work with.

Header parameters
x-api-keystringRequired

API key for authorization.

Responses
200

OK

application/json
400

Bad request error response

application/json
401

Unauthorized

get
/awards/{movieId}

Attach a webhook

post

Attaches a webhook.

Authorizations
x-api-keystringRequired
Header parameters
x-api-keystringRequired

API key for authorization.

Body
urlstringRequiredExample: https://hook.eu1.make.com/webhookToken
Responses
200

OK

No content

400

Bad request error response

application/json
401

Unauthorized

post
/webhooks

Detach a webhook

delete

Detaches a webhook.

Authorizations
x-api-keystringRequired
Path parameters
idstringRequired

ID of the resource to work with.

Header parameters
x-api-keystringRequired

API key for authorization.

Responses
200

OK

No content

401

Unauthorized

404

Resource not found.

application/json
delete
/webhooks/{id}

No content

No content

Retrieve a list of files/folders.

get

Retrieves a list of files/folders.

Authorizations
x-api-keystringRequired
Query parameters
parentstringOptional

ID of the folder to retrieve its content.

Header parameters
x-api-keystringRequired

API key for authorization.

Responses
200

OK

application/json
get
/files
200

OK

Download a file.

get

Downloads a file.

Authorizations
x-api-keystringRequired
Path parameters
idstringRequired

ID of the file to download.

Header parameters
x-api-keystringRequired

API key for authorization.

Responses
200

OK

application/octet-stream
Responsestring · binary
get
/files/{id}/export
200

OK

Upload a file.

post

Upload a file.

Authorizations
x-api-keystringRequired
Query parameters
parentstringRequired

ID of the folder where the file should be uploaded.

Header parameters
x-api-keystringRequired

API key for authorization.

Body
Responses
200

OK

application/json
post
/files/import

List custom fields.

get

Retrieves custom fields.

Authorizations
x-api-keystringRequired
Header parameters
x-api-keystringRequired

API key for authorization.

Responses
200

OK

application/json
get
/custom-fields
200

OK

{
  "id": "0c841ade9610",
  "name": "Iron Man",
  "genres": [
    {
      "id": "1",
      "name": "action"
    }
  ],
  "length": 126,
  "topCast": [
    {
      "role": "Tony Stark",
      "castId": "5bfb3056c5e4",
      "castName": "Robert Downey Jr."
    }
  ],
  "director": {
    "directorId": "f841a38b77be",
    "directorName": "Jon Favreau"
  },
  "boxOffice": {
    "budget": 140,
    "grossProfit": 585.8
  },
  "createdAt": "2023-04-13T17:04:47+00:00",
  "premieres": {
    "czechPremiere": "2008-04-30T22:00:00+00:00",
    "originalPremiere": "2008-05-01T22:00:00+00:00"
  },
  "updatedAt": "2023-04-19T17:04:47+00:00",
  "releaseDate": "2008"
}
{
  "result": [
    {
      "id": "0c841ade9610",
      "name": "Iron Man",
      "genres": [
        {
          "id": "1",
          "name": "action"
        }
      ],
      "length": 126,
      "topCast": [
        {
          "role": "Tony Stark",
          "castId": "5bfb3056c5e4",
          "castName": "Robert Downey Jr."
        }
      ],
      "director": {
        "directorId": "f841a38b77be",
        "directorName": "Jon Favreau"
      },
      "boxOffice": {
        "budget": 140,
        "grossProfit": 585.8
      },
      "createdAt": "2023-04-13T17:04:47+00:00",
      "premieres": {
        "czechPremiere": "2008-04-30T22:00:00+00:00",
        "originalPremiere": "2008-05-01T22:00:00+00:00"
      },
      "updatedAt": "2023-04-19T17:04:47+00:00",
      "releaseDate": "2008"
    }
  ]
}
{
  "id": "0c841ade9610",
  "name": "Iron Man",
  "genres": [
    {
      "id": "1",
      "name": "action"
    }
  ],
  "length": 126,
  "topCast": [
    {
      "role": "Tony Stark",
      "castId": "5bfb3056c5e4",
      "castName": "Robert Downey Jr."
    }
  ],
  "director": {
    "directorId": "f841a38b77be",
    "directorName": "Jon Favreau"
  },
  "boxOffice": {
    "budget": 140,
    "grossProfit": 585.8
  },
  "createdAt": "2023-04-13T17:04:47+00:00",
  "premieres": {
    "czechPremiere": "2008-04-30T22:00:00+00:00",
    "originalPremiere": "2008-05-01T22:00:00+00:00"
  },
  "updatedAt": "2023-04-19T17:04:47+00:00",
  "releaseDate": "2008"
}
{
  "id": "0c841ade9610",
  "name": "Iron Man",
  "genres": [
    {
      "id": "1",
      "name": "action"
    }
  ],
  "length": 126,
  "topCast": [
    {
      "role": "Tony Stark",
      "castId": "5bfb3056c5e4",
      "castName": "Robert Downey Jr."
    }
  ],
  "director": {
    "directorId": "f841a38b77be",
    "directorName": "Jon Favreau"
  },
  "boxOffice": {
    "budget": 140,
    "grossProfit": 585.8
  },
  "createdAt": "2023-04-13T17:04:47+00:00",
  "premieres": {
    "czechPremiere": "2008-04-30T22:00:00+00:00",
    "originalPremiere": "2008-05-01T22:00:00+00:00"
  },
  "updatedAt": "2023-04-19T17:04:47+00:00",
  "releaseDate": "2008"
}
GET /api/v1/about HTTP/1.1
Host: app-academy.make.com
x-api-key: text
Accept: */*
[
  {
    "name": "John Doe",
    "email": "[email protected]",
    "webhook": "https://hook.eu1.make.com/abcdef123",
    "webhook-watched-items": "create, update",
    "redirect-URI": "https://www.make.com/oauth/cb/app"
  }
]
POST /api/v1/movies HTTP/1.1
Host: app-academy.make.com
x-api-key: text
Content-Type: application/json
Accept: */*
Content-Length: 313

{
  "name": "Iron Man",
  "genres": [
    {
      "id": "1"
    }
  ],
  "directorId": "f841a38b77be",
  "releaseDate": "2008",
  "length": 126,
  "topCast": [
    {
      "role": "Tony Stark",
      "castId": "5bfb3056c5e4"
    }
  ],
  "boxOffice": {
    "budget": 140,
    "grossProfit": 585.8
  },
  "premieres": {
    "czechPremiere": "2008-04-30T22:00:00+00:00",
    "originalPremiere": "2008-05-01T22:00:00+00:00"
  }
}
GET /api/v1/movies HTTP/1.1
Host: app-academy.make.com
x-api-key: text
Accept: */*
GET /api/v1/movies/{id} HTTP/1.1
Host: app-academy.make.com
x-api-key: text
Accept: */*
{
  "id": "0c841ade9610",
  "name": "Iron Man",
  "genres": [
    {
      "id": "1",
      "name": "action"
    }
  ],
  "length": 126,
  "topCast": [
    {
      "role": "Tony Stark",
      "castId": "5bfb3056c5e4",
      "castName": "Robert Downey Jr."
    }
  ],
  "director": {
    "directorId": "f841a38b77be",
    "directorName": "Jon Favreau"
  },
  "boxOffice": {
    "budget": 140,
    "grossProfit": 585.8
  },
  "createdAt": "2023-04-13T17:04:47+00:00",
  "premieres": {
    "czechPremiere": "2008-04-30T22:00:00+00:00",
    "originalPremiere": "2008-05-01T22:00:00+00:00"
  },
  "updatedAt": "2023-04-19T17:04:47+00:00",
  "releaseDate": "2008"
}
PUT /api/v1/movies/{id} HTTP/1.1
Host: app-academy.make.com
x-api-key: text
Content-Type: application/json
Accept: */*
Content-Length: 313

{
  "name": "Iron Man",
  "genres": [
    {
      "id": "1"
    }
  ],
  "directorId": "f841a38b77be",
  "releaseDate": "2008",
  "length": 126,
  "topCast": [
    {
      "role": "Tony Stark",
      "castId": "5bfb3056c5e4"
    }
  ],
  "boxOffice": {
    "budget": 140,
    "grossProfit": 585.8
  },
  "premieres": {
    "czechPremiere": "2008-04-30T22:00:00+00:00",
    "originalPremiere": "2008-05-01T22:00:00+00:00"
  }
}
PATCH /api/v1/movies/{id} HTTP/1.1
Host: app-academy.make.com
x-api-key: text
Content-Type: application/json
Accept: */*
Content-Length: 313

{
  "name": "Iron Man",
  "genres": [
    {
      "id": "1"
    }
  ],
  "directorId": "f841a38b77be",
  "releaseDate": "2008",
  "length": 126,
  "topCast": [
    {
      "role": "Tony Stark",
      "castId": "5bfb3056c5e4"
    }
  ],
  "boxOffice": {
    "budget": 140,
    "grossProfit": 585.8
  },
  "premieres": {
    "czechPremiere": "2008-04-30T22:00:00+00:00",
    "originalPremiere": "2008-05-01T22:00:00+00:00"
  }
}
DELETE /api/v1/movies/{id} HTTP/1.1
Host: app-academy.make.com
x-api-key: text
Accept: */*
{
  "success": "true"
}
GET /api/v1/people HTTP/1.1
Host: app-academy.make.com
x-api-key: text
Accept: */*
GET /api/v1/organizations HTTP/1.1
Host: app-academy.make.com
x-api-key: text
Accept: */*
{
  "result": [
    {
      "id": "1",
      "awardName": "Oscar",
      "awardCategories": [
        "[\"best-achievement-in-sound-editing\",\"best-achievement-in-visual-effects\"]"
      ],
      "organizationName": "Academy Awards, USA"
    }
  ]
}
GET /api/v1/genres HTTP/1.1
Host: app-academy.make.com
x-api-key: text
Accept: */*
{
  "result": [
    {
      "id": "1",
      "name": "action"
    }
  ]
}
GET /api/v1/awards/{movieId} HTTP/1.1
Host: app-academy.make.com
x-api-key: text
Accept: */*
{
  "hasMoreItems": true,
  "result": [
    {
      "id": "1",
      "award": [
        {
          "people": [
            {
              "id": "5bfb3056c5e4",
              "name": "Robert Downey Jr."
            }
          ],
          "outcome": "0",
          "awardCategoryId": "best-achievement-in-visual-effects"
        }
      ],
      "movieId": "0c841ade9610",
      "organization": {
        "awardName": "Oscar",
        "organizationId": "1",
        "organizationName": "Academy Awards, USA"
      }
    }
  ]
}
POST /api/v1/webhooks HTTP/1.1
Host: app-academy.make.com
x-api-key: text
Content-Type: application/json
Accept: */*
Content-Length: 68

{
  "url": "https://hook.eu1.make.com/webhookToken",
  "events": [
    "create"
  ]
}
DELETE /api/v1/webhooks/{id} HTTP/1.1
Host: app-academy.make.com
x-api-key: text
Accept: */*
{
  "result": [
    {
      "id": "5bfb3056c5e4",
      "name": "Robert Downey Jr."
    }
  ]
}
200

OK

{
  "success": "true"
}
GET /api/v1/files HTTP/1.1
Host: app-academy.make.com
x-api-key: text
Accept: */*
GET /api/v1/files/{id}/export HTTP/1.1
Host: app-academy.make.com
x-api-key: text
Accept: */*
binary
POST /api/v1/files/import?parent=text HTTP/1.1
Host: app-academy.make.com
x-api-key: text
Content-Type: application/json
Accept: */*
Content-Length: 63

{
  "file": {
    "value": "binary",
    "options": {
      "filename": "myFile.txt"
    }
  }
}
GET /api/v1/custom-fields HTTP/1.1
Host: app-academy.make.com
x-api-key: text
Accept: */*
{
  "custom_fields": [
    {
      "name": "review_comment",
      "type": "multi_line_text",
      "label": "Review Comment"
    }
  ]
}
{
  "items": [
    {
      "name": "exampleFile2.doc",
      "type": "file",
      "mimeType": "image/jpeg",
      "parent": "d6c6bea4f03b",
      "id": "1a0e71b0edb0"
    }
  ],
  "totalPages": 1
}