openapi: 3.0.0 info: description: '# Introducción Documentación del API de Contalink # Autenticación El método de autenticación para el api de contalink es mediante un api key el cual está relacionado forzosamente a un usuario dentro del sistema, por lo cual, todas las peticiones utilizando ese api key quedarán registradas como peticiones del usuario relacionado. ' title: API Contalink Balanza de comprobación Status de documentos fiscales API version: 1.0.4 x-logo: altText: Contalink url: http://apidocs.contalink.com/logocontalinknew.svg servers: - description: prod url: https://794lol2h95.execute-api.us-east-1.amazonaws.com/prod tags: - description: Valida los status de vigencia y pago de un documento fiscal name: Status de documentos fiscales paths: /invoices/check-status/{uuid}/: get: description: Valida el status de un documento fiscal parameters: - description: UUID del documento fiscal que se quiere validar in: path name: uuid required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/InvoiceStatus' description: 0 indica error, 1 indica éxito. security: - APIKey: [] summary: Valida el status de un documento fiscal tags: - Status de documentos fiscales x-codeSamples: - lang: C source: "CURL *curl;\nCURLcode res;\ncurl = curl_easy_init();\nif(curl) {\n curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, \"GET\");\n curl_easy_setopt(curl, CURLOPT_URL, \"%7B%7BbaseUrl%7D%7D/invoices/check-status/%3Cstring%3E/\");\n curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);\n curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, \"https\");\n struct curl_slist *headers = NULL;\n headers = curl_slist_append(headers, \"Accept: application/json\");\n curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);\n res = curl_easy_perform(curl);\n}\ncurl_easy_cleanup(curl);\n" - lang: C# source: 'var client = new RestClient("{{baseUrl}}/invoices/check-status//"); client.Timeout = -1; var request = new RestRequest(Method.GET); request.AddHeader("Accept", "application/json"); IRestResponse response = client.Execute(request); Console.WriteLine(response.Content);' - lang: Curl source: 'curl --location -g --request GET ''{{baseUrl}}/invoices/check-status//'' \ --header ''Accept: application/json''' - lang: Dart source: "var headers = {\n 'Accept': 'application/json'\n};\nvar request = http.Request('GET', Uri.parse('{{baseUrl}}/invoices/check-status//'));\n\nrequest.headers.addAll(headers);\n\nhttp.StreamedResponse response = await request.send();\n\nif (response.statusCode == 200) {\n print(await response.stream.bytesToString());\n}\nelse {\n print(response.reasonPhrase);\n}\n" - lang: Go source: "package main\n\nimport (\n \"fmt\"\n \"net/http\"\n \"io/ioutil\"\n)\n\nfunc main() {\n\n url := \"%7B%7BbaseUrl%7D%7D/invoices/check-status/%3Cstring%3E/\"\n method := \"GET\"\n\n client := &http.Client {\n }\n req, err := http.NewRequest(method, url, nil)\n\n if err != nil {\n fmt.Println(err)\n return\n }\n req.Header.Add(\"Accept\", \"application/json\")\n\n res, err := client.Do(req)\n if err != nil {\n fmt.Println(err)\n return\n }\n defer res.Body.Close()\n\n body, err := ioutil.ReadAll(res.Body)\n if err != nil {\n fmt.Println(err)\n return\n }\n fmt.Println(string(body))\n}" - lang: Http source: 'GET /invoices/check-status// HTTP/1.1 Host: {{baseUrl}} Accept: application/json' - lang: Java source: "OkHttpClient client = new OkHttpClient().newBuilder()\n .build();\nRequest request = new Request.Builder()\n .url(\"{{baseUrl}}/invoices/check-status//\")\n .method(\"GET\", null)\n .addHeader(\"Accept\", \"application/json\")\n .build();\nResponse response = client.newCall(request).execute();" - lang: Java source: "Unirest.setTimeouts(0, 0);\nHttpResponse response = Unirest.get(\"{{baseUrl}}/invoices/check-status//\")\n .header(\"Accept\", \"application/json\")\n .asString();\n" - lang: JavaScript source: "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\n\nvar requestOptions = {\n method: 'GET',\n headers: myHeaders,\n redirect: 'follow'\n};\n\nfetch(\"{{baseUrl}}/invoices/check-status//\", requestOptions)\n .then(response => response.text())\n .then(result => console.log(result))\n .catch(error => console.log('error', error));" - lang: JavaScript source: "\nvar xhr = new XMLHttpRequest();\nxhr.withCredentials = true;\n\nxhr.addEventListener(\"readystatechange\", function() {\n if(this.readyState === 4) {\n console.log(this.responseText);\n }\n});\n\nxhr.open(\"GET\", \"%7B%7BbaseUrl%7D%7D/invoices/check-status/%3Cstring%3E/\");\nxhr.setRequestHeader(\"Accept\", \"application/json\");\n\nxhr.send();" - lang: JavaScript source: "var settings = {\n \"url\": \"{{baseUrl}}/invoices/check-status//\",\n \"method\": \"GET\",\n \"timeout\": 0,\n \"headers\": {\n \"Accept\": \"application/json\"\n },\n};\n\n$.ajax(settings).done(function (response) {\n console.log(response);\n});" - lang: NodeJS source: "var axios = require('axios');\n\nvar config = {\n method: 'get',\n url: '{{baseUrl}}/invoices/check-status//',\n headers: { \n 'Accept': 'application/json'\n }\n};\n\naxios(config)\n.then(function (response) {\n console.log(JSON.stringify(response.data));\n})\n.catch(function (error) {\n console.log(error);\n});\n" - lang: NodeJS source: "var https = require('follow-redirects').https;\nvar fs = require('fs');\n\nvar options = {\n 'method': 'GET',\n 'hostname': '{{baseUrl}}',\n 'path': '/invoices/check-status//',\n 'headers': {\n 'Accept': 'application/json'\n },\n 'maxRedirects': 20\n};\n\nvar req = https.request(options, function (res) {\n var chunks = [];\n\n res.on(\"data\", function (chunk) {\n chunks.push(chunk);\n });\n\n res.on(\"end\", function (chunk) {\n var body = Buffer.concat(chunks);\n console.log(body.toString());\n });\n\n res.on(\"error\", function (error) {\n console.error(error);\n });\n});\n\nreq.end();" - lang: NodeJS source: "var request = require('request');\nvar options = {\n 'method': 'GET',\n 'url': '{{baseUrl}}/invoices/check-status//',\n 'headers': {\n 'Accept': 'application/json'\n }\n};\nrequest(options, function (error, response) {\n if (error) throw new Error(error);\n console.log(response.body);\n});\n" - lang: NodeJS source: "var unirest = require('unirest');\nvar req = unirest('GET', '{{baseUrl}}/invoices/check-status//')\n .headers({\n 'Accept': 'application/json'\n })\n .end(function (res) { \n if (res.error) throw new Error(res.error); \n console.log(res.raw_body);\n });\n" - lang: Objective-C source: "#import \n\ndispatch_semaphore_t sema = dispatch_semaphore_create(0);\n\nNSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@\"%7B%7BbaseUrl%7D%7D/invoices/check-status/%3Cstring%3E/\"]\n cachePolicy:NSURLRequestUseProtocolCachePolicy\n timeoutInterval:10.0];\nNSDictionary *headers = @{\n @\"Accept\": @\"application/json\"\n};\n\n[request setAllHTTPHeaderFields:headers];\n\n[request setHTTPMethod:@\"GET\"];\n\nNSURLSession *session = [NSURLSession sharedSession];\nNSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request\ncompletionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {\n if (error) {\n NSLog(@\"%@\", error);\n dispatch_semaphore_signal(sema);\n } else {\n NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;\n NSError *parseError = nil;\n NSDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:&parseError];\n NSLog(@\"%@\",responseDictionary);\n dispatch_semaphore_signal(sema);\n }\n}];\n[dataTask resume];\ndispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);" - lang: OcaML source: "open Lwt\nopen Cohttp\nopen Cohttp_lwt_unix\n\nlet reqBody = \n let uri = Uri.of_string \"%7B%7BbaseUrl%7D%7D/invoices/check-status/%3Cstring%3E/\" in\n let headers = Header.init ()\n |> fun h -> Header.add h \"Accept\" \"application/json\"\n in\n Client.call ~headers `GET uri >>= fun (_resp, body) ->\n body |> Cohttp_lwt.Body.to_string >|= fun body -> body\n\nlet () =\n let respBody = Lwt_main.run reqBody in\n print_endline (respBody)" - lang: PHP source: "setUrl('{{baseUrl}}/invoices/check-status//');\n$request->setMethod(HTTP_Request2::METHOD_GET);\n$request->setConfig(array(\n 'follow_redirects' => TRUE\n));\n$request->setHeader(array(\n 'Accept' => 'application/json'\n));\ntry {\n $response = $request->send();\n if ($response->getStatus() == 200) {\n echo $response->getBody();\n }\n else {\n echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .\n $response->getReasonPhrase();\n }\n}\ncatch(HTTP_Request2_Exception $e) {\n echo 'Error: ' . $e->getMessage();\n}" - lang: PHP source: " '%7B%7BbaseUrl%7D%7D/invoices/check-status/%3Cstring%3E/',\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_ENCODING => '',\n CURLOPT_MAXREDIRS => 10,\n CURLOPT_TIMEOUT => 0,\n CURLOPT_FOLLOWLOCATION => true,\n CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n CURLOPT_CUSTOMREQUEST => 'GET',\n CURLOPT_HTTPHEADER => array(\n 'Accept: application/json'\n ),\n));\n\n$response = curl_exec($curl);\n\ncurl_close($curl);\necho $response;\n" - lang: PHP source: "setRequestUrl('{{baseUrl}}/invoices/check-status//');\n$request->setRequestMethod('GET');\n$request->setOptions(array());\n$request->setHeaders(array(\n 'Accept' => 'application/json'\n));\n$client->enqueue($request)->send();\n$response = $client->getResponse();\necho $response->getBody();\n" - lang: PowerShell source: '$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Accept", "application/json") $response = Invoke-RestMethod ''{{baseUrl}}/invoices/check-status//'' -Method ''GET'' -Headers $headers $response | ConvertTo-Json' - lang: Python source: "import requests\n\nurl = \"{{baseUrl}}/invoices/check-status//\"\n\npayload={}\nheaders = {\n 'Accept': 'application/json'\n}\n\nresponse = requests.request(\"GET\", url, headers=headers, data=payload)\n\nprint(response.text)\n" - lang: Python source: "import http.client\n\nconn = http.client.HTTPSConnection(\"{{baseUrl}}\")\npayload = ''\nheaders = {\n 'Accept': 'application/json'\n}\nconn.request(\"GET\", \"/invoices/check-status//\", payload, headers)\nres = conn.getresponse()\ndata = res.read()\nprint(data.decode(\"utf-8\"))" - lang: Ruby source: 'require "uri" require "net/http" url = URI("{{baseUrl}}/invoices/check-status//") http = Net::HTTP.new(url.host, url.port); request = Net::HTTP::Get.new(url) request["Accept"] = "application/json" response = http.request(request) puts response.read_body ' - lang: Shell source: "http --follow --timeout 3600 GET '{{baseUrl}}/invoices/check-status//' \\\n Accept:'application/json'" - lang: Shell source: "wget --no-check-certificate --quiet \\\n --method GET \\\n --timeout=0 \\\n --header 'Accept: application/json' \\\n '{{baseUrl}}/invoices/check-status//'" - lang: Swift source: "import Foundation\n#if canImport(FoundationNetworking)\nimport FoundationNetworking\n#endif\n\nvar semaphore = DispatchSemaphore (value: 0)\n\nvar request = URLRequest(url: URL(string: \"{{baseUrl}}/invoices/check-status//\")!,timeoutInterval: Double.infinity)\nrequest.addValue(\"application/json\", forHTTPHeaderField: \"Accept\")\n\nrequest.httpMethod = \"GET\"\n\nlet task = URLSession.shared.dataTask(with: request) { data, response, error in \n guard let data = data else {\n print(String(describing: error))\n semaphore.signal()\n return\n }\n print(String(data: data, encoding: .utf8)!)\n semaphore.signal()\n}\n\ntask.resume()\nsemaphore.wait()\n" components: schemas: InvoiceStatus: properties: invoice: description: Contiene la información sobre el documento fiscal solicitado properties: contabilizado: default: false description: Indica si el documento ya ha sido contabilizado en Contalink title: Contabilizado? type: boolean estatus: default: '' description: Indica el status del documento ante el SAT title: Status type: string metodo_pago: default: '' description: Indica el método de pago con el que se emitió el documento title: Método de pago type: string tesoreria: default: 0.0 description: Indica el porcentaje pendiente de pagar del documento title: Estatus de tesorería type: number title: Documento Fiscal type: object message: default: '' description: Mensaje regresado por la petición title: Mensaje type: string status: default: 0 description: El status de la petición 0. Error, 1. Éxito title: Status type: integer title: CheckStatus Schema type: object securitySchemes: APIKey: description: Llave de API relacionada al usuario que hace la petición. in: header name: Authorization type: apiKey x-tagGroups: - name: Conciliación tags: - Conciliación - name: Tesorería tags: - Movimientos bancarios - name: Documentos fiscales tags: - Listado de documentos fiscales - Cargar un documento fiscal - Status de documentos fiscales - name: Contabilidad tags: - Balanza de comprobación - Pólizas manuales - Saldo de una cuenta