---
# System prepended metadata

title: Estuardo Sierra

---

# Estuardo Sierra

## Calls API
A new product requirement states that all Talkdesk calls should be registered in a centralized system. A call has always two participants, a **customer** and an **agent**, and it can be either **inbound** (started by the customer) or outbound (started by the agent). The system must fulfill the following use cases:

* Ability to **register a new** call
* Ability to mark a call as **finished**
* Ability to **retrieve** the data associated with a given call
* Ability to list calls matching a given criteria. It should be possible to filter by:
    * Start and end dates
    * Status (in progress / finished)
    * Contact number

Clients should be able to interact with this system through a REST API. Each call pertains to a specific **tenant** (and a tenant can only access calls belonging to it), it must have an **unique identifier** and a new record must include the following information:
* Start date
* Source number
* Destination number
* Direction (inbound/outbound)

When a call is marked as finished, the record must also include the corresponding end date.

## Solution design
*:video_game: Go Estuardo Sierra :muscle:*


* Ability to **register a new** call
[POST]/calls/reg
request payload:
{
callid:
TenenantId:
SourceNumber:
DestinatioNumber:
Direction:

}

response body: {
200(callid)
}


http status: 201 (CREATED)


* Ability to mark a call as **finished**
[Put]/v1/calls/status/{callid}
response body{
http code[200]
}


* Ability to **retrieve** the data associated with a given call
[GET]/calls/{callid}
response body{
callid:
TenenantId:
SourceNumber:
DestinatioNumber:
Direction:
}


* Ability to list calls matching a given criteria.

[GET]calls/list/startdate=?,enddate=?,x=?,y=?
response body{
callid:
TenenantId:
SourceNumber:
DestinatioNumber:
Direction:
}