Are you Gonçalo?
This is your free professional page on AI Realty. Claim it to edit your profile, receive inbound leads and promote your listings.
About Gonçalo
Gonçalo Fonseca is an Associate Agent associated with the real estate agency RE/MAX Latina. Based in Portugal, he focuses his professional activity within the municipality of Mafra, assisting clients with their real estate needs in this region.
His main professional address is located at Rua Serpa Pinto, 77 A, 2640-534 Mafra. Clients and partners can reach him directly through this office to discuss local market opportunities and property transactions.
For inquiries and direct communication, Gonçalo Fonseca can be contacted by phone at +351 916 866 424. Active clients and partners can also reach his office via the landline phone number at +351 261 817 370.of Use: this API is protected by Intellectual Property rights and its use is subject to the terms and conditions set forth on our website. Please check the current terms at www.upm.es.
The current license of use of the API is: Non-commercial Use ("Creative Commons Attribution-NonCommercial-ShareAlike 3.0").
For any questions or commercial use inquiries, please contact: [email protected]
This document was last updated: February, 2013.
### Table of Contents
- [Introduction](#introduction) - [Base URL](#base-url) - [Request format](#request-format) - [Response format](#response-format) - [Common responses / HTTP status codes](#common-responses--http-status-codes) - [Authentication and Authorization](#authentication-and-authorization) - [Rate Limits](#rate-limits) - [Summary of available resources](#summary-of-available-resources) - [Version 1.0 (v1)](#version-10-v1) - [Resources detailed description](#resources-detailed-description) - [/v1/schools](#v1schools) - [/v1/schools/{school}](#v1schoolsschool) - [/v1/schools/{school}/degrees](#v1schoolsschooldegrees) - [/v1/degrees](#v1degrees) - [/v1/degrees/{degree}](#v1degreesdegree) - [/v1/degrees/{degree}/subjects](#v1degreesdegreesubjects) - [/v1/subjects](#v1subjects) - [/v1/subjects/{subject}](#v1subjectssubject)
# Introduction
The UPM API is is oriented to developers to easily build and scale apps with UPM open data.
The currently released API allows access to academic public offer, such as schools, degrees and course syllabuses (subjects). This academic offer belongs to "Politecnica" (or UPM, short form for "Universidad Politécnica de Madrid").
This documentation describes the version 1.0 of the API. Future versions may provide more information, resources and more advanced features. Please keep updated with the email address announced above or check the URL where you found this document.
For more information about the university, please visit: [http://www.upm.es](http://www.upm.es)
## Base URL
Every URL starts with:
https://api.upm.es
Both HTTP and HTTPS are supported in some cases, although **HTTPS is highly recommended** and it may be mandatory in a near future or for some private data or actions.
## Request format
All API methods use a basic REST schema.
For GET requests (the only kind of requests supported in this version):
- Variables are passed through the path (such as identifiers) and as GET parameters. - Optional parameters are supported (see resource descriptions for details).
## Response format
Output is generated only in **JSON** (JavaScript Object Notation) format. You should enforce this format by passing the header `Accept: application/json` in your requests. JSON responses may be delivered pretty-printed or compact. Your application should be ready to handle both of them.
*Note: XML might be supported in future versions.*
If `callback` URL parameter is used, output turns to JSONP response with a function call of the name given by the parameter. Example: `https://api.upm.es/v1/schools?callback=my_function`
## Common responses / HTTP status codes
Every API request returns an HTTP status code, which gives you quick details about the status of the request. The standard HTTP status code is always returned in the HTTP Response header.
In addition, the JSON response may include a status code and message. For successful responses, standard JSON format is described inside each resource section.
In case of error, the typical JSON output is structured as follows:
```javascript { "status": "error", "code": 401, "message": "Authorization Required" } ```
The typical HTTP status codes (included in HTTP header and JSON body) retrieved by the UPM API are:
- **200 OK**: Request was successful. - **204 No Content**: Request was successful, but there is no data to return. This is typically used for void lists or delete operations. - **401 Unauthorized**: Authentication failed (no valid client credentials provided). See Authentication section. - **403 Forbidden**: Authorization failed (wrong permissions for this action/resource or developer quota reached). See Rate Limit section. - **404 Not Found**: Resource not found. - **500 Internal Server Error**: Some generic and unhandled error in servers occurred. If it is persistent, please report. - **503 Service Unavailable**: The system is temporary down because of maintenance, or too busy. Please try again later.
## Authentication and Authorization
We use API-Key based authentication. This means you must request an API Key before using the API for your development. This key identifier must be sent on every request to authenticate, and the key itself has assigned some constraints and quotas (rate-limits). See next section for details.
In this version, only GET requests are supported, oriented to consume public data. No OAuth or complex authentication is needed.
You must send your specific credential as part of the query payload dynamically on every request. This is done with the `client_id` (your standard application developer key) parameter. Example:
https://api.upm.es/v1/schools?client_id=12a34b56c78d90e
## Rate Limits
By default, every new standard developer key is limited in the volume of API calls she can execute in a designated period.
If this limit is exceeded, subsequent requests will return an error code: **403 Forbidden** (with a specific detail message).
These limits are in place to prevent robots or bad programming practices from consuming too many resources and impacting experience for other users. If you are developing a professional application or a highly scalable university project, you may contact `[email protected]` to request an limit increase, explaining the scope of your project.
Default limits are:
- **Rate Limit**: 1 request per second. - **Volume Limit**: 1.000 requests per day (UTC timezone).
# Summary of available resources
Most resources are hyperlinked inside JSON files, following HATEOAS schema approach, so you can follow the resource links to discover data.
Also, standard URLs are predictable. This section is a summary of available resources for the current version:
## Version 1.0 (v1)
- [/v1/schools](#v1schools) (Retrieves the list of schools/faculties in UPM) - [/v1/schools/{school}](#v1schoolsschool) (Retrieves details about one specific school) - [/v1/schools/{school}/degrees](#v1schoolsschooldegrees) (Retrieves the list of study degrees offered by one specific school) - [/v1/degrees](#v1degrees) (Retrieves the list of all study degrees offered in UPM) - [/v1/degrees/{degree}](#v1degreesdegree) (Retrieves details about one specific study degree) - [/v1/degrees/{degree}/subjects](#v1degreesdegreesubjects) (Retrieves the list of syllabus subjects taught inside one specific study degree) - [/v1/subjects](#v1subjects) (Retrieves the list of all subjects taught in UPM) - [/v1/subjects/{subject}](#v1subjectssubject) (Retrieves details about one specific subject/course)
---
# Resources detailed description
## /v1/schools
### Description Retrieves the list of high schools / faculties (**"Escuelas / Facultades"**) in UPM. This includes all active centres in the university.
### Method GET
### Optional Parameters - **`lang`**: The language in which parameters are returned. Support values: `es` (Spanish, default), `en` (English). At current version, English support is partial; names are returned in Spanish if English translations are not available.
### Output JSON structure and fields An array containing zero or more "School Summary" objects, containing the following properties:
- **`code`**: string. Internal academic code for the resource. - **`name`**: string. Institutional official name of the school. - **`acronym`**: string. Universal academic acronym. - **`links`**: Array of links (rel/uri). Always includes at least reference "self" to the detailed resource.
### Example Request `GET https://api.upm.es/v1/schools?client_id=12a34b56c78d90e&lang=es`
### Example Response ```javascript [ { "code": "09", "name": "E.T.S. de Ingenieros de Telecomunicación", "acronym": "ETSIT", "links": [ { "rel": "self", "uri": "https://api.upm.es/v1/schools/09" } ] }, { "code": "10", "name": "E.T.S.I. Topografía, Geodesia y Cartografía", "acronym": "ETSITGC", "links": [ { "rel": "self", "uri": "https://api.upm.es/v1/schools/10" } ] } ] ```
---
## /v1/schools/{school}
### Description Retrieves details about a specific school / faculty in UPM, using its unique identifier.
### Method GET
### Parameters in Path - **`school`**: string. Code of the school, as retrieved in `/v1/schools`.
### Optional Parameters - **`lang`**: See `/v1/schools`
### Output JSON structure and fields A structured object representing the school detailed info. Properties:
- **`code`**: string. Internal academic code for the resource. Matches `{school}` parameter. - **`name`**: string. Institutional official name of the school. - **`acronym`**: string. Universal academic acronym. - **`address`**: string. Full physical address. - **`postal_code`**: string. Postal code. - **`locality`**: string. Locality (typically Madrid). - **`province`**: string. Province (typically Madrid). - **`phone`**: string. Public contact details (phone, optional). - **`fax`**: string. Public contact details (fax, optional). - **`web_url`**: string. Main external school website URL. - **`coord_gps`**: string. GPS coordinates in "latitude,longitude" layout. - **`links`**: Array of links (rel/uri). Includes "self", and "degrees" (list of degrees offered by this school).
### Example Request `GET https://api.upm.es/v1/schools/09?client_id=12a34b56c78d90e`
### Example Response ```javascript { "code": "09", "name": "E.T.S. de Ingenieros de Telecomunicación", "acronym": "ETSIT", "address": "Avda. Complutense, 30", "postal_code": "28040", "locality": "Madrid", "province": "Madrid", "phone": "91 549 57 00", "fax": "91 543 96 52", "web_url": "http://www.etsit.upm.es", "coord_gps": "40.452331,-3.726887", "links": [ { "rel": "self", "uri": "https://api.upm.es/v1/schools/09" }, { "rel": "degrees", "uri": "https://api.upm.es/v1/schools/09/degrees" } ] } ```
---
## /v1/schools/{school}/degrees
### Description Retrieves the list of active study degrees (**"Titulaciones"**) inside one specific school, using its unique identifier.
### Method GET
### Parameters in Path - **`school`**: string. Code of the school, as retrieved in `/v1/schools`.
### Optional Parameters - **`lang`**: See `/v1/schools`
### Output JSON structure and fields An array containing zero or more "Degree Summary" objects, containing the following properties:
- **`code`**: string. Unique academic official code for the degree. - **`name`**: string. Official name of the degree/curriculum. - **`school_code`**: string. Owner school academic code. - **`academic_year_start`**: string. Representation of the academic year when the degree started (first year of deployment). Layout: "YYYY-YY". - **`plan_code`**: string. Academic identifier of study itinerary plan/structure (not unique). - **`degree_type`**: string. Represents the academic model (e.g.: "Grado", "Máster Universitario", "Doctorado", "1er y 2º Ciclo"). - **`links`**: Array of links (rel/uri). Always includes at least reference "self" to the detailed resource.
### Example Request `GET https://api.upm.es/v1/schools/09/degrees?client_id=12a34b56c78d90e`
### Example Response ```javascript [ { "code": "09TT", "name": "Grado en Ingeniería de Tecnologías y Servicios de Telecomunicación", "school_code": "09", "academic_year_start": "2010-11", "plan_code": "09TT", "degree_type": "Grado", "links": [ { "rel": "self", "uri": "https://api.upm.es/v1/degrees/09TT" } ] }, { "code": "09AQ", "name": "Máster Universitario en Ingeniería de Redes y Servicios Telemáticos", "school_code": "09", "academic_year_start": "2010-11", "plan_code": "09AQ", "degree_type": "Máster Universitario", "links": [ { "rel": "self", "uri": "https://api.upm.es/v1/degrees/09AQ" } ] } ] ```
---
## /v1/degrees
### Description Retrieves the list of **all** offering study degrees (**"Titulaciones"**) in the whole university (all schools).
### Method GET
### Optional Parameters - **`lang`**: See `/v1/schools` - **`degree_type`**: Allows filtering by degree type (e.g. `degree_type=Grado` or `degree_type=Master`). Matches exact text (case-sensitive) or starts-with query.
### Output JSON structure and fields An array containing zero or more "Degree Summary" objects. Properties are identical to `/v1/schools/{school}/degrees` dataset.
### Example Request `GET https://api.upm.es/v1/degrees?client_id=12a34b56c78d90e°ree_type=Grado`
### Example Response ```javascript [ { "code": "09TT", "name": "Grado en Ingeniería de Tecnologías y Servicios de Telecomunicación", "school_code": "09", "academic_year_start": "2010-11", "plan_code": "09TT", "degree_type": "Grado", "links": [ { "rel": "self", "uri": "https://api.upm.es/v1/degrees/09TT" } ] }, { "code": "10GT", "name": "Grado en Ingeniería de las Tecnologías de la Información Geográfica", "school_code": "10", "academic_year_start": "2010-11", "plan_code": "10GT", "degree_type": "Grado", "links": [ { "rel": "self", "uri": "https://api.upm.es/v1/degrees/10GT" } ] } ] ```
---
## /v1/degrees/{degree}
### Description Retrieves details about a specific study degree in UPM, using its unique identifier code.
### Method GET
### Parameters in Path - **`degree`**: string. Code of the degree, as retrieved in `/v1/degrees`.
### Optional Parameters - **`lang`**: See `/v1/schools`
### Output JSON structure and fields A structured object representing the degree detailed info. Properties:
- **`code`**: string. Unique academic official code for the degree. Matches `{degree}` parameter. - **`name`**: string. Official name of the degree/curriculum. - **`school_code`**: string. Owner school academic code. - **`academic_year_start`**: string. Representation of the academic year when the degree started. Layout: "YYYY-YY". - **`plan_code`**: string. Academic identifier of study itinerary plan/structure. - **`degree_type`**: string. Represents the academic model (e.g.: "Grado", "Máster Universitario"). - **`credits`**: integer/float. Number of ECTS credits needed to accomplish the full degree (cumulative). - **`ruct_code`**: string. Official national code inside Ministry registry ("Registro de Universidades, Centros y Títulos") of Spain. (Optional). - **`boe_url`**: string. External link to official BOE announcement document (State Official Newsletter of Spain). (Optional). - **`links`**: Array of links (rel/uri). Includes "self", "school" (to owner school resource), and "subjects" (list of subjects nested).
### Example Request `GET https://api.upm.es/v1/degrees/09TT?client_id=12a34b56c78d90e`
### Example Response ```javascript { "code": "09TT", "name": "Grado en Ingeniería de Tecnologías y Servicios de Telecomunicación", "school_code": "09", "academic_year_start": "2010-11", "plan_code": "09TT", "degree_type": "Grado", "credits": 240, "ruct_code": "2501066", "boe_url": "http://www.boe.es/boe/dias/2011/04/13/pdfs/BOE-A-2011-6655.pdf", "links": [ { "rel": "self", "uri": "https://api.upm.es/v1/degrees/09TT" }, { "rel": "school", "uri": "https://api.upm.es/v1/schools/09" }, { "rel": "subjects", "uri": "https://api.upm.es/v1/degrees/09TT/subjects" } ] } ```
---
## /v1/degrees/{degree}/subjects
### Description Retrieves the list of syllabus subjects taught inside one specific study degree, using its unique identifier.
### Method GET
### Parameters in Path - **`degree`**: string. Code of the degree, as retrieved in `/v1/degrees`.
### Optional Parameters - **`lang`**: See `/v1/schools`
### Output JSON structure and fields An array containing zero or more "Subject Summary" objects, containing the following properties:
- **`code`**: string. Unique academic official code for the subject. Note inside UPM database, subjects codes are safe and unique across different curricula/years. - **`name`**: string. Official academic name of the subject. - **`degree_code`**: string. Degree code where this subject belongs. - **`term`**: string. Standard period when lessons are taught inside the year structure (e.g.: "Semestre 1", "Anual"). No standard format, language dependent. - **`subject_type`**: string. Status of the subject inside the study plan. Values: `obligatory` (compulsory core), `basic` (standard basic subjects, typical of first years), `optional` (freely chosen from offering lists), `others` (including final project, minor projects, external training, etc.). - **`credits`**: integer/float. Number of ECTS credits allocated for this subject (weight). - **`course`**: integer. Representation of the suggested academic year to target this subject inside the curriculum (typically values from `1` to `5` depending on degree). `0` might express no standard course associated. - **`links`**: Array of links (rel/uri). Always includes at least reference "self" to the detailed resource.
### Example Request `GET https://api.upm.es/v1/degrees/09TT/subjects?client_id=12a34b56c78d90e`
### Example Response ```javascript [ { "code": "95000001", "name": "Algebra Lineal", "degree_code": "09TT", "term": "Semestre 1", "subject_type": "basic", "credits": 6, "course": 1, "links": [ { "rel": "self", "uri": "https://api.upm.es/v1/subjects/95000001" } ] }, { "code": "95000118", "name": "Sistemas de Transmisión", "degree_code": "09TT", "term": "Semestre 6", "subject_type": "obligatory", "credits": 4.5, "course": 3, "links": [ { "rel": "self", "uri": "https://api.upm.es/v1/subjects/95000118" } ] } ] ```
---
## /v1/subjects
### Description Retrieves the list of **all** offering subjects inside the whole university (all schools and degrees).
*Note: Be careful with the volume of results returned by this list.*
### Method GET
### Optional Parameters - **`lang`**: See `/v1/schools` - **`course`**: Allows filtering by specific year course (e.g. `course=1` or `course=4`). - **`subject_type`**: Allows filtering by status (e.g. `subject_type=basic`). See `/v1/degrees/{degree}/subjects` for valid values list.
### Output JSON structure and fields An array containing zero or more "Subject Summary" objects. Properties are identical to `/v1/degrees/{degree}/subjects` dataset.
### Example Request `GET https://api.upm.es/v1/subjects?client_id=12a34b56c78d90e&course=1&subject_type=basic`
### Example Response ```javascript [ { "code": "95000001", "name": "Algebra Lineal", "degree_code": "09TT", "term": "Semestre 1", "subject_type": "basic", "credits": 6, "course": 1, "links": [ { "rel": "self", "uri": "https://api.upm.es/v1/subjects/95000001" } ] }, { "code": "595000101", "name": "Algebra Lineal", "degree_code": "59TL", "term": "Semestre 1", "subject_type": "basic", "credits": 6, "course": 1, "links": [ { "rel": "self", "uri": "https://api.upm.es/v1/subjects/595000101" } ] } ] ```
---
## /v1/subjects/{subject}
### Description Retrieves details about one specific subject/course, using its unique identifier.
### Method GET
### Parameters in Path - **`subject`**: string. Code of the subject, as retrieved in `/v1/subjects`.
### Optional Parameters - **`lang`**: See `/v1/schools`
### Output JSON structure and fields A structured object representing the subject detailed info/syllabus metadata. Properties:
- **`code`**: string. Unique academic official code for the subject. Matches `{subject}` parameter. - **`name`**: string. Official academic name of the subject. - **`degree_code`**: string. Degree code where this subject belongs. - **`term`**: string. Standard period when lessons are taught inside the year structure. - **`subject_type`**: string. Status of the subject inside the study plan. - **`credits`**: integer/float. Number of ECTS credits allocated for this subject (weight). - **`course`**: integer. Representation of the suggested academic year. - **`department`**: string. Official department associated to the subject execution (academic management responsibility). (Optional). - **`language`**: string. Code of the main teaching language layout for the subject (e.g. "es", "en"). (Optional). - **`syllabus_url`**: string. Public official syllabus document (in PDF format) detailing lessons timeline, contents, reading lists, evaluation and details. (Optional). - **`links`**: Array of links (rel/uri). Includes "self", and "degree" (to owner degree resource).
### Example Request `GET https://api.upm.es/v1/subjects/95000001?client_id=12a34b56c78d90e`
### Example Response ```javascript { "code": "95000001", "name": "Algebra Lineal", "degree_code": "09TT", "term": "Semestre 1", "subject_type": "basic", "credits": 6, "course": 1, "department": "Matematica Aplicada a las Tecnologias de la Informacion", "language": "es", "syllabus_url": "http://www.etsit.upm.es/fileadmin/datos/estudios/grado/95000001.pdf", "links": [ { "rel": "self", "uri": "https://api.upm.es/v1/subjects/95000001" }, { "rel": "degree", "uri": "https://api.upm.es/v1/degrees/09TT" } ] } ```
FAQ
How do I find a real estate agent in Mafra?
Use the directory filters to compare agents by city, specialty and language before sending a request.
Which real estate agent works in Mafra?
Gonçalo Fonseca is listed as a real estate agent for Mafra.
Can I request help from a verified real estate agent?
Yes. Use the directory request form and the nearest available verified realtor can contact you within 24 hours.
How can I choose an agent if the rating is not filled yet?
Compare the agent's location, company, specialty, languages and profile completeness, then request more information before cooperation.
More agents in Mafra
Rodrigo Fernando
ws_agent
Rodrigo Fernando is a 24-year-old Real Estate Consultant at CENTURY 21 Rise and Shine in Portugal. He holds a degree in Tourism from the University of the Algarve and operates in the Mafra area. From a young age, he developed customer service skills while working in a family business based in Mafra. This background in customer relations supports his work with clients in the local real estate market. To further his professional development, he has completed multiple training programs. These include the 'Caminho Formativo EXPAND' training path, the 'Código de Ética e Conduta (CEC)' training course, and the 'SER&ESTAR CENTURY 21' training course.
Paulo Sousa
Agente Associado
Paulo Sousa is an Agente Associado associated with RE/MAX Latina. He works in Mafra. His office address is Rua Serpa Pinto, 77 A, 2640-534 Mafra.
Ana Bela Costa
Agente Associado
Ana Bela Costa is a professional real estate agent associated with RE/MAX Latina. She holds the title of Agente Associado and serves clients within the municipality of Mafra, Portugal. She operates under the registered real estate office Sold - Mediação Imobiliária, Lda, which holds the license AMI 5579. This office is located in Mafra, where she focuses her professional activities.
Etelvina Tavares
Agente Associado
Etelvina Tavares is an Agente Associado with RE/MAX Latina. She is based at the office located at Rua Serpa Pinto, 77 A, 2640-534 Mafra. As an associated agent, she focuses her professional real estate services on the Mafra area.
Viviana Costa Santos
Associate Agent
Viviana Costa Santos is an Associate Agent affiliated with RE/MAX Latina, a real estate agency located in Mafra, Portugal. She operates out of the local office situated at Rua Serpa Pinto, 77 A, 2640-534 Mafra. In her professional practice, Viviana Costa Santos focus her work within the Mafra area. Her professional affiliation is with Sold - Mediação Imobiliária, Lda, which holds the license AMI 5579.
Marcia Carvalho
Agente Associado
Marcia Carvalho is an Associate Agent associated with RE/MAX Latina. She conducts her professional real estate work in the municipality of Mafra, Portugal. During her career with the agency, she won the President Award (Premio Presidente). She continues to serve clients in the Mafra area as part of the RE/MAX Latina team.
About the platform
What is AI Realty?
For property buyers
AI Realty is a directory of verified real estate agents across Europe. Compare agents by city, language and specialty, then contact them directly — no middlemen, no fees.
Browse the directoryFor real estate agents
Your professional page generates inbound leads for free. Claim it, complete your profile and launch listing-promotion campaigns on Instagram, TikTok, YouTube and Facebook from one dashboard.
How it works for realtors